高级运维!Kubernetes(K8S)常用命令的整理集合

Kubernetes(K8S)常用命令的整理集合,按功能场景分类,涵盖集群管理、资源操作、故障排查等核心场景。

一、集群基础管理

1. 查看集群基本信息
命令 说明 示例
kubectl cluster-info 查看集群节点、控制平面(Master)及服务端点信息 kubectl cluster-info
kubectl version 查看客户端(kubectl)和服务端(K8S API Server)版本 kubectl version --short(简洁模式)
kubectl get nodes 列出所有集群节点(Node) kubectl get nodes -o wide(显示详细信息,如IP、标签)
kubectl describe node <node-name> 查看节点详细信息(资源、状态、事件) kubectl describe node node-1
2. 集群配置与日志
命令 说明 示例
kubectl config view 查看当前kubeconfig配置(集群、用户、上下文) kubectl config view --minify(仅显示当前上下文)
kubectl config current-context 查看当前使用的集群上下文(Context) -
kubectl config use-context <context-name> 切换集群上下文 kubectl config use-context dev-cluster
kubectl logs -f <pod-name> -n <namespace> 实时跟踪Pod日志(生产环境调试用) kubectl logs -f my-pod -n default

二、核心资源操作(Pod/Deployment/Service等)

1. Pod(容器组)管理
命令 说明 示例
kubectl get pods [-n <namespace>] 列出Pod列表 kubectl get pods -o wide(显示节点、IP、状态)
kubectl get pods -l <label-key>=<label-value> 按标签筛选Pod kubectl get pods -l app=my-app
kubectl describe pod <pod-name> [-n <namespace>] 查看Pod详细信息(事件、容器状态、重启次数) kubectl describe pod my-pod-123
kubectl logs <pod-name> [-c <container-name>] [-n <namespace>] 查看Pod内容器日志(单容器Pod可省略-c) kubectl logs my-pod -c sidecar-container
kubectl exec -it <pod-name> [-c <container-name>] [-n <namespace>] -- <command> 进入Pod容器执行命令(交互式终端) kubectl exec -it my-pod -- bash(进入bash)
kubectl delete pod <pod-name> [-n <namespace>] 删除指定Pod(若由Deployment管理,会自动重建) kubectl delete pod my-pod-123
2. Deployment(应用部署)管理
命令 说明 示例
kubectl get deployments [-n <namespace>] 列出Deployment列表 kubectl get deployments -o wide(显示副本数、镜像)
kubectl create deployment <deployment-name> --image=<image> [-n <namespace>] 创建Deployment(简化版) kubectl create deployment nginx-deploy --image=nginx:alpine
kubectl apply -f <deployment-yaml-file> 通过YAML文件创建/更新Deployment kubectl apply -f ./deployment.yaml
kubectl edit deployment <deployment-name> [-n <namespace>] 编辑Deployment配置(直接修改YAML) kubectl edit deployment nginx-deploy
kubectl scale deployment <deployment-name> --replicas=<num> [-n <namespace>] 手动扩缩容Deployment副本数 kubectl scale deployment nginx-deploy --replicas=3
kubectl rollout status deployment <deployment-name> [-n <namespace>] 查看滚动更新/回滚状态 kubectl rollout status nginx-deploy
kubectl rollout undo deployment <deployment-name> [-n <namespace>] 回滚Deployment到上一版本 kubectl rollout undo nginx-deploy
3. Service(服务暴露)管理
命令 说明 示例
kubectl get services [-n <namespace>] 列出Service列表 kubectl get svc -o wide(显示类型、集群IP、外部IP)
kubectl create service clusterip <service-name> --tcp=<port>:<target-port> [-n <namespace>] 创建ClusterIP类型Service kubectl create service clusterip my-svc --tcp=80:8080
kubectl create service nodeport <service-name> --tcp=<port>:<target-port> --node-port=<port-range> [-n <namespace>] 创建NodePort类型Service(指定节点端口) kubectl create service nodeport my-svc --tcp=80:8080 --node-port=30001
kubectl create service externalname <service-name> --external-name=<external-dns> [-n <namespace>] 创建ExternalName类型Service(映射外部服务) kubectl create service externalname my-external-svc --external-name=db.example.com
kubectl edit service <service-name> [-n <namespace>] 编辑Service配置(如修改端口、选择器) kubectl edit service my-svc
4. Ingress(外部流量路由)管理
命令 说明 示例
kubectl get ingress [-n <namespace>] 列出Ingress规则 -
kubectl create ingress <ingress-name> --rule=<host-path>=<service>:<port> 创建Ingress规则(简化版) kubectl create ingress my-ingress --rule=example.com-=my-svc:80
kubectl apply -f <ingress-yaml-file> 通过YAML文件管理Ingress(推荐) kubectl apply -f ./ingress.yaml

三、配置与密钥管理(ConfigMap/Secret)

1. ConfigMap(非敏感配置)
命令 说明 示例
kubectl create configmap <configmap-name> --from-file=<key>=<file-path> 从文件创建ConfigMap(键为文件名,值为文件内容) kubectl create configmap app-config --from-file=settings.properties=./config/settings.properties
kubectl create configmap <configmap-name> --from-literal=<key>=<value> 从键值对创建ConfigMap kubectl create configmap app-env --from-literal=API_URL=http://api.example.com
kubectl get configmaps [-n <namespace>] 列出ConfigMap列表 kubectl get cm(简写)
kubectl describe configmap <configmap-name> [-n <namespace>] 查看ConfigMap详细信息(数据内容) kubectl describe cm app-config
kubectl delete configmap <configmap-name> [-n <namespace>] 删除ConfigMap -
2. Secret(敏感配置,如密码、Token)
命令 说明 示例
kubectl create secret docker-registry <secret-name> --docker-server=<registry-url> --docker-username=<user> --docker-password=<pass> 创建Docker镜像仓库认证Secret kubectl create secret docker-registry regcred --docker-server=docker.io --docker-username=admin --docker-password=123456
kubectl create secret generic <secret-name> --from-literal=<key>=<value> 创建通用Secret(键值对) kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=secret
kubectl get secrets [-n <namespace>] 列出Secret列表 kubectl get secrets(内容默认加密显示)
kubectl describe secret <secret-name> [-n <namespace>] 查看Secret元数据(实际值需解码) `kubectl get secret db-secret -o jsonpath='{.data.password}'

四、存储资源管理(PV/PVC/StorageClass)

命令 说明 示例
kubectl get pv 列出持久卷(Persistent Volume) -
kubectl get pvc [-n <namespace>] 列出持久卷声明(Persistent Volume Claim) kubectl get pvc -n default
kubectl create pvc <pvc-name> --capacity=<size> --storageclass=<sc-name> 创建PVC(绑定StorageClass) kubectl create pvc my-pvc --capacity=10Gi --storageclass=standard
kubectl delete pvc <pvc-name> [-n <namespace>] 删除PVC(自动释放PV,若未设置回收策略) -
kubectl describe pvc <pvc-name> [-n <namespace>] 查看PVC绑定状态(是否绑定PV、容量) kubectl describe pvc my-pvc

五、故障排查常用命令

场景 命令 说明
查看集群事件 kubectl get events [-n <namespace>] --sort-by='.metadata.creationTimestamp' 按时间排序显示集群事件(如Pod调度失败、容器启动错误)
查看Pod状态详情 kubectl describe pod <pod-name> [-n <namespace>] 关键信息:Events(事件)、Status(状态)、Containers(容器状态)
检查Service端点 kubectl get endpoints <service-name> [-n <namespace>] 查看Service关联的Pod IP:Port(若未关联,说明标签选择器不匹配)
实时监控资源 kubectl top pods [-n <namespace>] 查看Pod CPU/内存使用量(需安装metrics-server)
排查网络问题 kubectl exec <pod-name> -- curl <service-name>.<namespace>.svc.cluster.local 从Pod内部访问其他Service(验证集群内部DNS)
检查镜像拉取问题 kubectl describe pod <pod-name> [-n <namespace>] 查看Events中的Failed to pull image错误(可能是镜像不存在或权限问题)

六、高级操作

场景 命令 说明
滚动更新Deployment kubectl set image deployment/<deployment-name> <container-name>=<new-image> [-n <namespace>] 直接更新容器镜像触发滚动更新
批量删除资源 kubectl delete pods,svc -l app=my-app [-n <namespace>] 按标签批量删除Pod和服务
导出资源配置YAML kubectl get deployment <deployment-name> -o yaml > deployment.yaml 导出Deployment的YAML文件(用于备份或迁移)
调试临时Pod kubectl run debug-pod -it --rm --image=busybox -- sh 启动一个临时交互式Pod(用于测试集群网络、存储)

附:常用参数速查

  • -n <namespace>:指定命名空间(如-n kube-system)。
  • -o <format>:输出格式(如-o wide宽格式、-o yaml YAML格式、-o json JSON格式)。
  • --all-namespaces(或-A):跨所有命名空间查询。
  • -f <file>:通过YAML/JSON文件操作资源。
  • -l <label-selector>:按标签筛选资源(如-l app=my-app,env=prod)。
相关推荐
AAA修煤气灶刘哥几秒前
手把手教你全流程项目部署:从 Jenkins 到 Nginx 的项目实战手册
java·运维·后端
Britz_Kevin13 分钟前
从零开始的云计算生活——第四十七天,细水长流,kubernetes模块之ingress资源对象
kubernetes·云计算·生活
czhc114007566337 分钟前
LINUX 820 shell:shift,expect
linux·运维·excel
咕噜签名分发冰淇淋1 小时前
签名应用APP分发平台的微服务化部署是什么?其有哪些优势?
java·运维·微服务
望获linux1 小时前
【实时Linux实战系列】基于实时Linux的物联网系统设计
linux·运维·服务器·chrome·php
进击的阿尔法猿2 小时前
docker
运维·docker·容器
北京阿法龙科技有限公司2 小时前
AR 虚实叠加技术在工业设备运维中的实现流程方案
运维·ar
刘一说2 小时前
CentOS 系统 Java 开发测试环境搭建手册
java·linux·运维·服务器·centos
iceland93 小时前
kubeadm方式部署k8s集群
云原生·容器·kubernetes
木易双人青9 小时前
01-Docker-简介、安装与使用
运维·docker·容器