目录
序言
1.基本介绍
1.1 命令格式介绍
2 基础命令
2.1 create
2.2 delete
2.2.1 根据yaml删除资源
2.2.1 根据名称删除资源
2.3 get
2.3.1查看pod列表
2.3.2 查看node
2.3.3 查看svc
2.3.4 查看all
2.3.5 查看ns
2.3.4 查看deploy
2.3 run
2.4 explain
2.5 edit
3.故障命令
3.1 describe
3.2 logs
3.2.1 查看容器快照
3.2.2 查看已停止的容器
3.3 exec
4.投票
序言
三言两语,不如细心探索。
今天整理了一下kubectl 命令,希望此文,能帮助读者对kubectl 命令有一个初步的了解
文章标记颜色说明:
- 黄色:重要标题
- 红色:用来标记结论
- 绿色:用来标记一级论点
- 蓝色:用来标记二级论点
1.基本介绍
kubectl 作为客户端CLI工具,可以通过命令行的方式对Kubernetes集群进行操作。
1.1 命令格式介绍
kubectl命令行的语法如下:
$ kubectl [command] [TYPE] [NAME] [flags]
- command:子命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。
- TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者简写形式表示。例如以下3种TYPE是等价的。
- NAME:资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象的列表,例如$ kubectl get pods将返回所有Pod的列表。
- flags:kubectl子命令的可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值。
$ kubectl get pod podtest $ kubectl get pods podtest $ kubectl get po podtest
2 基础命令
先介绍一下几个基础命令
- create
- delete
- get
- run
- expose
- set
- explain
- edit
2.1 create
create 命令:根据文件或者输入来创建资源
创建Deployment和Service资源
$ kubectl create -f test-deployment.yaml
$ kubectl create -f test-service.yaml
2.2 delete
delete 命令:删除资源
2.2.1 根据yaml删除资源
根据yaml文件删除对应的资源,但是yaml文件并不会被删除,如下
$ kubectl delete -f test-deployment.yaml
$ kubectl delete -f test-service.yaml
2.2.1 根据名称删除资源
可以通过具体的资源名称来进行删除,使用这个删除资源,同时删除deployment和service资源
$ kubectl delete 具体的资源名称
$ kubectl delete test-deploy
2.3 get
get 命令 :获得资源信息
2.3.1查看pod列表
$ kubectl get pod
显示pod节点的标签信息
$ kubectl get pod --show-labels
根据指定标签匹配到具体的pod
$ kubectl get pods -l app=demo
查看pod详细信息,可以查看pod具体运行在哪个节点上
$ kubectl get pod -o wide
2.3.2 查看node
查看node节点列表
$ kubectl get node
显示node节点的标签信息
$ kubectl get node --show-labels
2.3.3 查看svc
查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息
$ kubectl get svc $ kubectl get svc -n kube-system
2.3.4 查看all
查看所有的资源信息
$ kubectl get all $ kubectl get --all-namespaces
2.3.5 查看ns
$ kubectl get ns $ kubectl get namespaces
2.3.4 查看deploy
查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息
$ kubectl get deploy -o wide $ kubectl get deployments -o wide
2.3 run
run 命令:在集群中创建并运行一个或多个容器镜像。
语法:
run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]
示例:运行一个名称为nginx,副本数为3,标签为app=test,镜像为nginx:1.11,端口为80的容器实例
$ kubectl run nginx --replicas=3 --labels="app=test" --image=nginx:1.11 --port=80
2.4 explain
explain 命令:用于显示资源文档信息
$ kubectl explain rs
2.5 edit
edit 命令: 用于编辑资源信息
编辑Deployment nginx的一些信息
$ kubectl edit deployment nginx
编辑service类型的nginx的一些信息
$ kubectl edit service/nginx
3.故障命令
故障排查和调试命令:
- describe
- logs
- exec
- attach
- port-foward
- proxy
- cp
- auth
3.1 describe
describe命令:显示特定资源的详细信息
查看test-nginx pod的详细状态
$ kubectl describe pod test-nginx
3.2 logs
logs命令:用于在pod中打印一个容器的日志
执行
kubectl logs -h
可以查看kubectl logs的帮助信息
语法
:
- kubectl logs [-f] [-p] POD [-c CONTAINER]
-f:
- --follow[=false]: 指定是否持续输出日志
- --interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true
- --limit-bytes=0: 输出日志的最大字节数。默认无限制
-p:
- --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志
- --since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种
- --since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种
- --tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志
- --timestamps[=false]: 在日志中包含时间戳
-c:
- --container="": 容器名
3.2.1 查看容器快照
返回仅包含一个容器的pod nginx的日志快照
$ kubectl logs nginx
3.2.2 查看已停止的容器
返回pod test中已经停止的容器web-test的日志快照
$ kubectl logs -p -c test web-1
# 持续输出pod ruby中的容器web-1的日志 $ kubectl logs -f -c ruby web-1 # 仅输出pod nginx中最近的20条日志 $ kubectl logs --tail=20 nginx # 输出pod nginx中最近一小时内产生的所有日志 $ kubectl logs --since=1h nginx
3.3 exec
exec命令:用于进入pod中查看pod内部信息
kubectl exec -it podName -c containerName -n namespace -- shell comand
-c: --container="": 容器名。如果未指定,使用pod中的一个容器。 -p: --pod="": Pod名。 -i: --stdin[=false]: 将控制台输入发送到容器。 -t: --tty[=false]: 将标准输入控制台作为容器的控制台输入。
示例:
# 默认在pod test的第一个容器中运行“date”并获取输出
$ kubectl exec test date
# 在pod test的容器ruby-container中运行“date”并获取输出
$ kubectl exec test -c ruby-container date
# 切换到终端模式,将控制台输入发送到pod test的ruby-container的“bash”命令,并将其输出到控制台/
# 错误控制台的信息发送回客户端。
$ kubectl exec test -c ruby-container -i -t -- bash -il