基本命令
create
根据文件或标准输入(stdin)创建资源。
创建资源
kubectl create -f ./nginx.yaml
创建当前目录下的所有yaml资源
kubectl create -f .
使用多个文件创建资源
kubectl create -f ./nginx1.yaml -f ./mysql2.yaml
使用目录下的所有清单文件来创建资源
kubectl create -f ./dir
使用 url 来创建资源
kubectl create -f xxx.git.io/vxxzso.yaml
run
在集群中运行特定镜像。
创建带有终端的pod
kubectl run -i --tty busybox --image=busybox
启动一个 nginx 实例
kubectl run nginx --image=nginx
启动多个pod实例
kubectl run mybusybox --image=busybox --replicas=5
explain
获取资源的文档。
获取 pod 和 svc 的文档
kubectl explain pods,svc
get
获取所有的resources,包括node
、pod
、namespace
、service
、deployment
等,可以展示一个或者多个资源。
查看nodes节点
kubectl get nodes
通过yaml文件查询资源
kubectl get -f xxx.yaml
查询资源
kubectl get resourcequota
查询endpoints
kubectl get endpoints
查看pods
查看指定空间kube-system
的pods
kubectl get po -n kube-system
查看所有空间的pods的详细信息
kubectl get pods -o wide --all-namespaces
查看指定空间kube-system
的pods的详细信息
kubectl get pod -o wide --namespace=kube-system
获取指定namespace信息
kubectl get namespaces # 获取指定namespace的yaml格式和json格式信息 kubectl get namespaces kube-system -o yaml kubectl get namespaces kube-system -o json 复制代码
获取service(svc)
查看所有命令空间的service
kubectl get svc --all-namespaces
查看所有命令空间的service的其他写法
kubectl get services --all-namespaces
# 通过 yaml 方式导出所有 service kubectl get service -o yaml > backup.yaml # 通过 yaml 方式导出单个 service kubectl get service serviceName -o yaml > backup.yaml 复制代码
查询事件(Event)
kubectl get events --all-namespaces
查看某个命名空间下的事件
kubectl get events -n kube-system
查看某个命名空间下的事件,并根据关键字过滤
kubectl get events -n kube-system | grep "name"
通过lable查询
kubectl get pods -l app=nginx -o yaml|grep podIP
# 查看所有pod对于指定标签的key是否有value,有则显示,没有则空白 kubectl get pods -L apps,run # 获取含有指定标签key的pod kubectl get pods -l apps --show-labels # 获取含有指定标签key=value的pod kubectl get pods -l release=stable --show-labels 复制代码
edit
在服务端编辑资源。
编辑名为 docker-registry 的 service
kubectl edit svc/docker-registry
delete
根据文件、标准输入(stdin)、资源名或者资源标签删除资源。
删除 pod.json 文件中定义的类型和名称的pod
kubectl delete -f ./pod.json
删除名为“baz”的 pod 和名为“foo”的 service
kubectl delete pod,service baz foo
删除具有 name=myLabel 标签的 pod 和 serivce
kubectl delete pods,services -l name=myLabel
删除具有 name=myLabel 标签的 pod 和 service,包括尚未初始化的
kubectl delete pods,services -l name=myLabel --include-uninitialized
删除 my-ns 命名空间下的所有 pod 和 serivce,包括尚未初始化的
kubectl -n my-ns delete po,svc --all
强制删除pod(如,prometheus-7fcfcb9f89-qkkf7)
kubectl delete pods prometheus-7fcfcb9f89-qkkf7 --grace-period=0 --force
cp
容器内与宿主机之间进行文件拷贝
# 拷贝容器内的文件或目录到本地 kubectl cp default/venus-registry-web-8cd94fc99-fws4b:demo.txt demo.txt kubectl cp default/venus-registry-web-8cd94fc99-fws4b:/home/xxx /home/yyy # 拷贝本地文件或目录到容器内 kubectl cp demo.txt default/venus-registry-web-8cd94fc99-fws4b:demo.txt kubectl cp /home/yyy default/venus-registry-web-8cd94fc99-fws4b:/home/xxx 复制代码
部署命令
rollout
查看修订版本(revison)的历史记录
kubectl rollout history deployment nginx-deployment
回退到指定的某个版本
如果不加--to-revision=版本号,默认情况下,回退到上一个版本。
kubectl rollout undo deployment nginx-deployment --to-revision=1
scale
程序在负载加重或缩小时副本进行扩容或缩小。
扩展副本数到4
kubectl scale rc rc-nginx-3 —replicas=4
重新缩减副本数到2
kubectl scale rc rc-nginx-3 —replicas=2
autoscale
scale虽然能够很方便的对副本数进行扩展或缩小,但是仍然需要人工介入,不能实时自动的根据系统负载对副本数进行扩、缩容。
autoscale命令提供了自动根据pod负载对其副本进行扩缩的功能。
autoscale命令会给一个rc指定一个副本数的范围,在实际运行中根据pod中运行的程序的负载自动在指定的范围内对pod进行扩容或缩容。
如前面创建的nginx,可以用如下命令指定副本范围在1~4。
kubectl autoscale rc rc-nginx-3 —min=1 —max=4