1、kubectl用法概述
kubectl命令⾏的语法如下:
$ kubectl [command] [type] [name] [flags]
command:命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等
TYPE:资源对象的类型,区分大小写,能以单数、复数或者简写形式表示。例如以下3种TYPE是等价的
$ kubectl get pod pod1$ kubectl get pods pod1$ kubectl get po pod1
NAME:资源对象的名称,区分大小写。如果不指定名称,系统则将返回属于TYPE的全部对象的列表,例如$
kubectl get pods将返 回所有Pod的列表
flags:kubectl命令的可选参数,例如使用“-s”指定API Server的URL地址而不用默认值
在一个命令行中也可以同时对多个资源对象进行操作,以多个TYPE和NAME的组合表示,例如:
获取多个Pod的信息:
$ kubectl get pods pod1 pod2
获取多种对象的信息:
$ kubectl get pod/pod1 rc/rc1
同时应用多个yaml文件,以多个-f file参数表示:
$ kubectl get pod -f pod1.yaml -f pod2.yaml
2、kubectl子命令
kubectl的子命令非常丰富,涵盖了对Kubernetes集群的主要操作, 包括资源对象的创建、删除、查看、修改、配 置、运行等
3、kubectl输出格式
kubectl命令可以用多种格式对结果进行显示,输出的格式通过-o参数指定:
kubectl [command] [TYPE] [NAME] -o=<output_format>
根据不同子命令的输出结果,可选的输出格式如下所示。
4、kubectl操作示例
namespace相关
# 查看命名空间
kubectl get namespace
$ kubectl get ns# 为请求设置命名空间
kubectl run nginx --image=nginx --namespace=<名字空间名称>
kubectl get pods --namespace=<名字空间名称># 创建命名空间
$ kubectl create ns ns-name# 查看namespace为test下的所有资源(不包含ingresses)
$ kubectl get all -n test# 查看namespace为test下的ingresses
$ kubectl get ingresses -n test
POD相关
# 查看pod
# kubectl get po# 删除一个po
# kubectl delete po nginx
pod "nginx" deleted# 创建到指定的命名空间
# kubectl create -f pod.yaml -n kube-public# 显示pod的详细信息
# kubectl describe pod busybox# 查看pod的日志
$ kubectl log $podname# 查看pod的yaml文件
$ kubectl po $podname -o yaml# 在指定容器中执行命令
## pod中的第一个容器
$ kubectl exec $podname date
## 指定容器中执行命令
$ kubectl exec $podname -c $container_name date
## 进入容器中
$ kubectl exec -it $podname -c $container_name /bin/bash
SERVICE相关
# 创建一个service
# kubectl create -f nginx-svc.yaml# 查看
# kubectl get svc# 删除
$ kubectl delete -f nginx-svc.yaml
deployment相关
# 创建
# kubectl create deployment nginx --image=nginx:1.15.2# 查看
# kubectl get deployment nginx -o yaml# 查看且存储到某文件
# kubectl get deployment nginx -o yaml > nginx-deploy.yaml# 使用以下命令去新建一个deployment
# kubectl replace -f nginx-deploy.yaml# 在线更改yaml,管理deployment ---把副本数改为2
# kubectl edit deploy nginx# 更改deployment的镜像并记录
# kubectl set image deploy nginx nginx=nginx:1.15.3 --record# 查看更新过程
# kubectl rollout status deploy nginx## 或者使用describe查看
# kubectl describe deploy nginx# 回滚到上一个版本
## 例如错误的更新到了一个xxx版本
# kubectl set image deploy nginx nginx=nginx:xxx --record## 查看kubectl更新的历史命令
# kubectl rollout history deploy nginx## 回滚到上一个版本
# kubectl rollout undo deploy nginx# Deployment的扩容
# kubectl scale --replicas=4 deploy nginx# Deployment的缩容
# kubectl scale --replicas=1 deploy nginx
查看容器日志
查看容器输出到stdout的日志:
$ kubectl logs <pod-name>
跟踪查看容器的日志,相当于tail -f命令的结果:
$ kubectl logs -f <pod-name> -c <container-name>
执行容器的命令
执行Pod的date命令,默认使用Pod的第1个容器执行:
$ kubectl exec <pod-name> date
指定Pod中某个容器执行date命令:
$ kubectl exec <pod-name> -c <container-name> date
通过bash获得Pod中某个容器的TTY,相当于登陆容器:
$ kubectl exec -ti <pod-name> -c <container-name> /bin/bash