Kubernetes 运维必备之常用命令总结
一、集群与资源管理
1.>查看所有命名空间下的资源(Pod/Deployment/service/endpoints 等)信息
资源定义:
Service:Service是K8s中的一个抽象层,它定义了一种访问Pod集合的方式.
Endpoint:Endpoint是K8s中的一种资源,用于描述Service的实际访问点.
Deployment:Deployment是K8S推荐的高级副本管理工具,能够自动创建、更新Pod副本,并维持指定数量的副本运行.
Pod:Pod是k8s系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在k8s上运行容器化应用的资源对象,其他的资源对象都是用来支撑或者扩展Pod对象功能的,比如控制器Deployment对象是用来管控Pod对象的,Service或Ingress资源对象是用来暴露Pod引用对象的,Endpoint是描述提供服务的Pod的IP地址和端口信息的,PersistentVolume资源对象是用来为Pod提供存储等等,k8s不会直接处理容器,而是Pod,Pod是由一个或者多个container组成的.
kubectl get pods,deploy -A -o wide
kubectl -n namespace get svc,ep
2.>显示资源详细信息(事件、配置、状态),主要用于诊断 Pod 异常原因
kubectl describe pod nginx-pod
3.> 创建或更新资源(推荐替代 create)
kubectl apply -f deployment.yaml
4.> 删除资源(支持名称/标签/YAML)
kubectl delete pods -l app=nginx
二、应用部署与更新
1.> 管理滚动更新(状态/回滚/暂停),回滚到上一版本
kubectl rollout undo deployment/nginx
2.> 动态调整副本数,扩容至 5 副本
kubectl scale deploy/nginx --replicas=5
3.> 热更新容器镜像
kubectl set image deploy/nginx nginx=nginx:1.25
4.> 自动扩缩容,配置 HPA(水平自动扩缩容)
kubectl autoscale deploy/nginx --min=2 --max=10 --cpu-percent=80
三、调试与诊断
1.> 实时追踪容器日志
kubectl logs -f nginx-pod --tail=100
2.> 进入容器执行命令
kubectl exec -it nginx-pod -- /bin/bash
3.> 端口转发到 Pod,用于本地调试
kubectl port-forward svc/nginx 8080:80
4.> 查看节点/Pod 资源利用率(需 Metrics Server)
kubectl top nodes
四、节点与集群维护
1.> 标记节点不可调度,用于节点维护及节点隔离.
kubectl cordon node-01
2.> 驱逐节点 Pod(准备维护)
kubectl drain node-01 --ignore-daemonsets
3.> 调度控制,为节点添加污点.
kubectl taint nodes node-01 env=prod:NoSchedule
4.> 查看集群核心服务地址
kubectl cluster-info
五、配置与权限管理
1.> 上下文管理,切换多集群配置
kubectl config use-context prod
2.> 权限验证,检查 RBAC 权限.
kubectl auth can-i delete pods --as=system:serviceaccount:default:test
六、高阶操作
1.> 字段更新,热更新资源字段(无需替换完整 YAML)
kubectl patch deployment nginx -p '{"spec":{"replicas":3}}'
2.> 元数据管理,为资源添加标签
kubectl label pods nginx-pod env=prod
七、详细命令示例与说明
kubectl get - 列出资源:
# 列出所有命名空间的Pod kubectl get pods --all-namespaces # 列出默认命名空间的Deployment kubectl get deployments # 列出节点信息 kubectl get nodes -o wide # 以yaml格式列出Pod信息 kubectl get pod nginx-pod -o yaml
kubectl describe - 显示资源详细信息;
# 描述Pod详情 kubectl describe pod nginx-pod # 描述节点详情 kubectl describe node worker-node-1 # 描述Service详情 kubectl describe service nginx-service
kubectl create - 创建资源:
# 通过YAML文件创建资源 kubectl create -f nginx-deployment.yaml # 创建命名空间 kubectl create namespace test-ns # 从docker镜像创建Deployment kubectl create deployment nginx --image=nginx:1.20
kubectl apply - 应用配置:
# 应用YAML配置(创建或更新) kubectl apply -f nginx-deployment.yaml # 应用目录下的所有配置文件 kubectl apply -f ./manifests/
kubectl delete - 删除资源:
# 删除Pod kubectl delete pod nginx-pod # 通过标签删除资源 kubectl delete pods -l app=nginx # 删除命名空间及其所有资源 kubectl delete namespace test-ns --force
2. 故障排查命令
kubectl logs - 查看日志
# 查看Pod日志 kubectl logs nginx-pod # 实时查看日志 kubectl logs -f nginx-pod # 查看多容器Pod中的特定容器日志 kubectl logs nginx-pod -c nginx-container # 查看之前崩溃的容器日志 kubectl logs -p nginx-pod
kubectl exec - 在容器中执行命令
# 进入Pod的交互式shell kubectl exec -it nginx-pod -- /bin/bash # 在Pod中执行简单命令 kubectl exec nginx-pod -- ls /etc/nginx # 在指定容器中执行命令 kubectl exec -it nginx-pod -c nginx-container -- /bin/bash
kubectl port-forward - 端口转发:
# 将本地8080端口转发到Pod的80端口 kubectl port-forward nginx-pod 8080:80 # 转发到Service kubectl port-forward service/nginx-service 8080:80 # 在后台运行端口转发 kubectl port-forward nginx-pod 8080:80 &
kubectl top - 资源使用统计:
# 查看节点资源使用情况
kubectl top nodes
# 查看Pod资源使用情况
kubectl top pods
# 查看指定命名空间的Pod资源使用
kubectl top pods -n kube-system
kubectl cp - 文件拷贝:
# 从容器拷贝文件到本地 kubectl cp nginx-pod:/etc/nginx/nginx.conf ./nginx.conf # 从本地拷贝文件到容器 kubectl cp ./config.txt nginx-pod:/tmp/config.txt # 拷贝到指定容器 kubectl cp ./file.txt nginx-pod:/tmp/file.txt -c nginx-container
3.资源配置命令:
kubectl edit - 编辑资源:
# 编辑Deployment kubectl edit deployment nginx-deployment # 编辑指定命名空间的资源 kubectl edit deployment nginx -n production # 使用特定编辑器 KUBE_EDITOR="vim" kubectl edit deployment nginx
kubectl scale - 扩缩容:
# 扩展Deployment副本数 kubectl scale --replicas=5 deployment/nginx-deployment # 基于当前副本数进行扩展 kubectl scale --current-replicas=3 --replicas=5 deployment/nginx-deployment
kubectl set - 配置资源参数:
# 更新容器镜像 kubectl set image deployment/nginx nginx=nginx:1.21 # 设置环境变量 kubectl set env deployment/nginx DEBUG=true # 更新资源限制 kubectl set resources deployment/nginx -c=nginx --limits=cpu=200m,memory=512Mi
kubectl patch - 部分更新资源:
# 更新容器镜像 kubectl patch pod nginx -p '{"spec":{"containers":[{"name":"nginx","image":"nginx:1.21"}]}}' # 添加注解 kubectl patch deployment nginx -p '{"metadata":{"annotations":{"version":"v2"}}}'
kubectl rollout - 部署管理:
# 查看部署状态 kubectl rollout status deployment/nginx # 回滚部署 kubectl rollout undo deployment/nginx # 查看部署历史 kubectl rollout history deployment/nginx # 重启部署(触发滚动更新) kubectl rollout restart deployment/nginx
4. 集群管理命令
kubectl cluster-info - 集群信息:
# 显示集群基本信息 kubectl cluster-info # 显示详细集群信息 kubectl cluster-info dump
kubectl api-resources - API资源查询:
# 列出所有API资源 kubectl api-resources # 显示资源的API版本 kubectl api-resources --api-group=apps
kubectl config - 配置管理:
# 显示当前上下文 kubectl config current-context # 切换上下文 kubectl config use-context production-cluster # 查看配置 kubectl config view
kubectl auth - 权限检查:
# 检查当前用户是否有创建Pod的权限 kubectl auth can-i create pods # 检查特定用户权限 kubectl auth can-i list deployments --as=system:serviceaccount:default:default
kubectl explain - 资源文档:
# 查看Pod资源的文档
kubectl explain pods
# 查看Pod的spec字段文档
kubectl explain pods.spec
# 查看容器字段文档
kubectl explain pods.spec.containers
5. 实用技巧与最佳实践
- 使用别名:为常用命令设置别名,如
alias k='kubectl' - 自动补全:启用kubectl自动补全功能提高效率
- **使用
-o wide/yaml/json**:获取更详细或特定格式的输出 - 标签选择器:使用
-l参数通过标签筛选资源 - 跨命名空间操作:使用
-n或--all-namespaces管理不同命名空间的资源
参考文档:https://kubernetes.io/docs/reference/kubectl/

浙公网安备 33010602011771号