指令总结:
1.show labels 列出所有标签
kubectl get po -n namespace --show-labels
2.查看日志
查看 Pod 内当前容器的日志
kubectl -n ${namespace} logs -f ${pod_name}
#如果不加-n,默认是在default命名空间下
查看 Pod 内容器上次启动时的日志信息
kubectl -n ${namespace} logs -p ${pod_name}
可以加上-c 容器名,精确到具体容器
3.CrashLoopBackoff问题排查
-
首先,为待诊断的 Pod 添加 Annotation:
kubectl annotate pod ${pod_name} -n ${namespace} runmode=debug
在 Pod 内的容器下次重启时,会检测到该 Annotation,进入诊断模式。注意如果 Pod 处于运行中,可以执行以下命令强制让容器重启。
-
等待 Pod 进入 Running 状态即可开始诊断:
watch kubectl get pod ${pod_name} -n ${namespace}
下面是使用 kubectl exec 进入容器进行诊断工作的例子:
-
诊断完毕,修复问题后,删除 Pod:
kubectl delete pod ${pod_name} -n ${namespace}
Pod 重建后会自动回到正常运行模式
4.查看pod状态
#pod运行情况
kubectl describe pod -n tidb-cluster pod名称
#pod ip信息
kubectl get pods -o wide -n namespace
#查看cpu内存使用情况
oc adm top pod <pod_name>
#查看service关联的pod
kubectl get endpoints
5.查看节点信息
oc get pods -n namespace -o wide
oc get nodes
6.查看API以及版本
kubectl api-versions 列出当前kubernetes系统支持的资源组和资源版本表现形式为/
kubectl api-resources 列出当前kubernetes系统支持的resource资源列表
7.查看当前所有服务
#把所有pod里的服务都列出来了
kubectl get svc -n namespace
8.CRD相关
kubectl get crd
kubectl delete -f crd.yaml
kubectl get crd xxx -o yaml #xxx是kubectl get crd列出来的你的CRD名
9.获取namespace
kubectl get namespace
kubectl get ns
10.获取deployment
kubectl get deployment
#查看升级步骤
kubectl describe deployment pod名字
11.资源操作
1.#创建对象
#可以打印出即将被创建的对象
kubectl diff -f yaml文件
#创建对象
kubectl apply -f yaml文件
#打印配置
kubectl get -f yaml文件
2.#更新对象
kubectl diff -f yaml文件
kubectl apply -f yaml文件
3.#删除对象
kubectl delete -f yaml文件
4.查看对象
kubectl get -f <文件名 | URL> -o yaml
12.查看pod中的容器
kubectl get pods pod名 -o jsonpath={.spec.containers[*].name} -n namspace
13.删除CRD
#查看crd名字
kubectl get crd
#删除crd
kubectl delete crd crd名字