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

发布于:2025-07-05 ⋅ 阅读:(18) ⋅ 点赞:(0)

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

Kubernetes

一、集群基础管理

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)。

网站公告

今日签到

点亮在社区的每一天
去签到