集群管理命令
cluster-info
查看集群信息
kubectl cluster-info
查看更详细的集群信息。
kubectl cluster-info dump
top
显示CPU、内存、存储资源的使用情况。
显示节点(k8s-node)资源的使用情况
kubectl top node k8s-node
显示集群所有节点的资源的使用情况
kubectl top node
显示指定命名空间(如,logging)的pod的资源的使用情况
kubectl top pod -n logging
cordon
标记节点不可调度。
标记k8s-node节点不可调度
kubectl cordon k8s-node
uncordon
标记节点可调度。
标记k8s-node节点可调度
kubectl uncordon k8s-node
drain
排除某节点,准备进行维护
排除k8s-node节点,准备进行维护
kubectl drain k8s-node
故障排查和诊断命令
describe
显示特定资源或资源组的详细信息。
当我们发现一个pod迟迟无法创建时,展示一个pod的描述
kubectl describe pod xxx
显示集群节点资源(CPU/GPU/内存)的使用情况。
kubectl describe nodes
显示集群具体某个节点(如,node-work-2)资源的使用情况。
kubectl describe node node-work-2
logs
打印Pod中一个容器的日志。
查看指定Pod的日志
kubectl logs -f kube-dns-699984412-vz1q6 -n kube-system
查看指定pod的最后10行日志
kubectl logs --tail=10 nginx
指定Pod的其中一个容器查看日志
kubectl logs kube-dns-699984412-n5zkz -c kubedns --namespace=kube-system
查看指定Pod指定容器的最后10行的滚动日志
kubectl logs -f --tail=10 kube-dns-699984412-vz1q6 -c manager -n kube-system
exec
exec命令同样类似于docker的exec命令,为在一个已经运行的容器中执行一条shell命令,如果一个pod容器中,有多个容器,需要使用-c选项指定容器。
进入容器
kubectl exec -it codeleak-github-cron-1567581840-zsqpc /bin/bash
在指定命名空间(如,ns)已存在的容器中执行命令(只有一个容器的情况下)
kubectl exec nginx-pod -n ns -- ls /
在已存在的容器中执行命令(pod 中有多个容器的情况下,需要指定具体那个容器)
kubectl exec nginx-pod -c my-container -- ls /
注意: shell命令前,要加--
号,不然shell命令中的参数,不能识别
高级命令
apply
按文件名或标准输入(stdin)将配置应用于资源
更新资源
kubectl apply -f rc-nginx.yaml
将控制台输入的JSON配置应用到Pod
cat pod.json | kubectl apply -f -
设置命令
label
更新(增加、修改或删除)资源上的标签。
如果--overwrite 为 true,则可以覆盖已有的 label,否则尝试覆盖 label 将会报错。
如果指定了--resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。
Label命名规范:
label 必须以字母或数字开头,可以使用字母、数字、连字符、点和下划线,最长63个字符。
操作节点标签:
# 查看所有节点和lable kubectl get nodes --show-labels # 为某个节点增加lable kubectl label nodes 10.126.72.31 points=test # 给节点node01添加disk标签 kubectl label nodes node01 disk=ssd # 修改节点node01的标签 kubectl label nodes node01 disk=sss –overwrite # 删除节点node01的disk标签 kubectl label nodes node01 disk- 复制代码
操作pod标签:
# 给名为 tomcat 的 Pod 添加 label app=tomcat。 kubectl label pods tomca app=tomcat # 把名为 tomcat 的Pod修改label 为 app=tomcat1,且覆盖现有的value kubectl label --overwrite pods tomcat app=tomcat1 # 把 namespace 中的所有 pod 添加 label kubectl label pods --all test=test # 删除名为“app”的 label 。(使用“ - ”减号相连) kubectl label pods tomcat app- 复制代码
annotate
更新资源的Annotations信息。
更新pod(如,foo),设置其注解'description'的值为'my frontend'。
kubectl annotate pods foo description='my frontend'
注:如果同一个注解被赋值了多次,只保存最后一次设置的值。
其他命令
version
查看客户端和服务端的版本信息。
kubectl version
api-versions
以“组/版本”的格式输出服务端支持的API版本。
kubectl api-versions
api-resources
输出服务端API支持的资源类型。
kubectl api-resources