kubectl 常用命令

一、集群 / 节点信息(最常用)

# 查看集群信息
kubectl cluster-info

# 查看所有节点
kubectl get nodes

# 查看节点详情
kubectl describe node <节点名>

# 给节点打污点/取消污点(维护用)
kubectl cordon <节点名>    # 封锁,不让新Pod调度
kubectl uncordon <节点名>  # 解除封锁
kubectl drain <节点名> --ignore-daemonsets --delete-emptydir-data  # 安全下线节点

二、命名空间 Namespace

# 查看所有命名空间
kubectl get ns

# 创建命名空间
kubectl create ns test

# 删除命名空间
kubectl delete ns test

三、查看资源(最常用)

# 查看Pod(默认当前ns)
kubectl get pods

# 查看所有命名空间的Pod
kubectl get pods -A

# 查看Pod 带IP和节点
kubectl get pods -o wide

# 查看Deployment
kubectl get deploy

# 查看Service
kubectl get svc

# 查看Ingress
kubectl get ingress

# 查看ConfigMap/Secret
kubectl get cm
kubectl get secret

四、describe 查详情 / 排错

kubectl describe pod <pod名>
kubectl describe node <节点名>
kubectl describe svc <服务名>

五、日志 Log(排错神器)

# 查看日志
kubectl logs <pod名>

# 实时跟踪日志
kubectl logs -f <pod名>

# 多容器Pod指定容器
kubectl logs -f <pod名> -c <容器名>

六、进入容器终端

kubectl exec -it <pod名> -- /bin/bash
kubectl exec -it <pod名> -- sh

七、创建 / 更新资源

# 从yaml创建
kubectl apply -f xxx.yaml

# 从目录下所有yaml创建
kubectl apply -f ./

# 强制替换(不推荐生产)
kubectl replace -f xxx.yaml --force

八、删除资源

# 删除Pod
kubectl delete pod <pod名>

# 删除Deployment
kubectl delete deploy <deploy名>

# 删除Service
kubectl delete svc <svc名>

# 根据yaml删除
kubectl delete -f xxx.yaml

# 删除命名空间下所有Pod
kubectl delete pods --all

九、扩缩容 / 重启

# 扩容到3副本
kubectl scale deploy <deploy名> --replicas=3

# 重启Deployment(生产常用)
kubectl rollout restart deploy <deploy名>

# 查看重启状态
kubectl rollout status deploy <deploy名>

十、端口转发(本地调试)

kubectl port-forward pod/<pod名> 8080:80
kubectl port-forward svc/<svc名> 8080:80

十一、ConfigMap / Secret

# 从文件创建cm
kubectl create cm mycm --from-file=config.ini

# 从键值对创建cm
kubectl create cm mycm --from-literal=env=prod

# 创建Secret(密码)
kubectl create secret generic mysecret --from-literal=password=123456

十二、事件排查(出问题必看)

# 查看所有事件(排查异常神器)
kubectl get events

# 按时间排序
kubectl get events --sort-by=.metadata.creationTimestamp

十三、标签与选择器

# 打标签
kubectl label pod <pod名> app=myapp

# 按标签筛选
kubectl get pods -l app=myapp

需要记住的 10 条(背会够用 90%)

  1. kubectl get pods
  2. kubectl get pods -A -o wide
  3. kubectl describe pod xxx
  4. kubectl logs -f xxx
  5. kubectl exec -it xxx -- sh
  6. kubectl apply -f xxx.yaml
  7. kubectl delete -f xxx.yaml
  8. kubectl scale deploy xxx --replicas=3
  9. kubectl rollout restart deploy xxx
  10. kubectl get events