来自DeepSeek
Kubernetes (kubectl) 命令大全
一、核心语法与帮助
kubectl 的命令遵循固定的语法:
kubectl [command] [TYPE] [NAME] [flags]command: 要执行的操作,如get,create,describe,delete等。TYPE: 资源类型,如pod,service,deployment,支持单数、复数或缩写(如po,svc,deploy)。NAME: 资源名称。省略则指定所有资源。flags: 可选参数,如-n my-namespace指定命名空间。
1. 帮助命令
# 查看所有命令帮助
kubectl --help
# 查看具体命令的帮助
kubectl create --help
# 查看资源对象字段说明 (非常有用!)
kubectl explain pod
kubectl explain pod.spec
kubectl explain pod.spec.containers二、集群与节点管理
1. 查看集群信息
# 查看集群信息
kubectl cluster-info
# 查看集群状态详情
kubectl cluster-info dump2. 查看节点 (Nodes)
# 列出所有节点及其状态
kubectl get nodes
# 查看节点的详细信息 (包括资源、标签、事件等)
kubectl describe nodes <node-name>三、命名空间 (Namespace) 操作
1. 查看与切换
# 列出所有命名空间
kubectl get namespaces
kubectl get ns # 缩写
# 设置默认命名空间(为当前上下文)
kubectl config set-context --current --namespace=<namespace-name>2. 创建与删除
# 创建一个命名空间
kubectl create namespace my-ns
# 删除一个命名空间 (谨慎操作!)
kubectl delete namespace my-ns注意:几乎所有命令都可以通过 -n 或 --namespace 来指定操作的命名空间。
四、Pod 操作
1. 查看 Pod
# 查看默认命名空间下的所有 Pod
kubectl get pods
# 查看指定命名空间下的所有 Pod
kubectl get pods -n <namespace>
# 查看更详细的信息 (如IP, 节点等)
kubectl get pods -o wide
# 查看 Pod 的详细配置 (YAML 格式输出)
kubectl get pod <pod-name> -o yaml
# 实时监控 Pod 状态的变化
kubectl get pods -w2. 查看 Pod 详情与日志
# 显示 Pod 的详细状态、事件、配置等信息 (排错神器)
kubectl describe pod <pod-name>
# 查看 Pod 的日志
kubectl logs <pod-name>
# 查看 Pod 中指定容器的日志 (适用于多容器 Pod)
kubectl logs <pod-name> -c <container-name>
# 实时 tail 日志 (类似 tail -f)
kubectl logs -f <pod-name>3. 交互与执行
# 进入 Pod 的容器内部执行命令 (类似 docker exec)
kubectl exec -it <pod-name> -- /bin/bash
# 在 Pod 的指定容器中执行命令
kubectl exec -it <pod-name> -c <container-name> -- /bin/sh4. 创建与删除
# 通过 YAML 文件创建一个 Pod
kubectl apply -f pod.yaml
kubectl create -f pod.yaml # apply 更常用,它是声明式的
# 删除一个 Pod
kubectl delete pod <pod-name>
# 通过 YAML 文件删除 Pod
kubectl delete -f pod.yaml五、部署 (Deployment) 与副本集 (ReplicaSet)
1. 查看与管理
# 查看 Deployment
kubectl get deployments
kubectl get deploy # 缩写
# 查看 ReplicaSet
kubectl get replicasets
kubectl get rs # 缩写
# 描述 Deployment 详情
kubectl describe deployment <deployment-name>2. 扩缩容与滚动更新
# 水平扩缩容 (将名为 `my-app` 的 Deployment 扩展到 3 个副本)
kubectl scale deployment/my-app --replicas=3
# 滚动更新 (更新镜像版本)
kubectl set image deployment/my-app my-app-container=my-app:v2
# 查看滚动更新状态
kubectl rollout status deployment/my-app
# 回滚到上一个版本
kubectl rollout undo deployment/my-app
# 回滚到指定版本 (先查看历史)
kubectl rollout history deployment/my-app
kubectl rollout undo deployment/my-app --to-revision=2六、服务 (Service) 与 入口 (Ingress)
1. 查看服务
# 查看 Service
kubectl get services
kubectl get svc # 缩写
# 查看 Service 的详细信息
kubectl describe svc <service-name>2. 查看 Ingress
# 查看 Ingress
kubectl get ingress
kubectl get ing # 缩写七、配置管理 (ConfigMap & Secret)
1. ConfigMap
# 从文件创建 ConfigMap
kubectl create configmap my-config --from-file=config.properties
# 从字面值创建 ConfigMap
kubectl create configmap my-config --from-literal=key=value
# 查看 ConfigMap
kubectl get configmaps
kubectl get cm # 缩写
# 查看 ConfigMap 详情
kubectl describe cm my-config2. Secret
# 创建通用 Secret
kubectl create secret generic my-secret --from-literal=password=secret123
# 查看 Secret (默认只显示名称和类型)
kubectl get secrets
# 查看 Secret 详情 (不显示具体内容,内容已编码)
kubectl describe secret my-secret
# 以 YAML 格式查看 Secret 的解码内容 (需要工具如 jq)
kubectl get secret my-secret -o json | jq '.data | map_values(@base64d)'八、高级调试与排查
1. 端口转发 (Port Forwarding)
# 将本地端口转发到 Pod 的端口 (用于访问集群内服务)
kubectl port-forward <pod-name> 8080:80 # 本地8080 -> Pod的80
kubectl port-forward svc/<service-name> 8080:80 # 通过Service转发2. 标签 (Labels) 与选择器
# 为 Pod 添加标签
kubectl label pods <pod-name> env=prod
# 根据标签筛选资源
kubectl get pods -l app=nginx
kubectl get all -l env=prod九、上下文 (Context) 与配置 (Config)
1. 管理多个集群
# 查看所有上下文(即所有集群配置)
kubectl config get-contexts
# 查看当前使用的上下文
kubectl config current-context
# 切换上下文(切换到另一个集群)
kubectl config use-context <context-name>总结与最佳实践
声明式管理:优先使用
kubectl apply -f <file.yaml>而不是create命令,这样更符合 K8S 的声明式理念,便于版本控制。善用
-o参数:-o wide,-o yaml,-o json可以输出不同格式的信息,-o yaml尤其适合排查配置问题。describe和logs是排错利器:当 Pod 无法启动或行为异常时,第一时间使用这两个命令。明确命名空间:始终清楚自己所在的命名空间 (
-n),这是新手常犯的错误。--dry-run=client -o yaml:快速生成一个资源的 YAML 模板,无需真正创建它。kubectl create deployment my-nginx --image=nginx --dry-run=client -o yaml > deployment.yaml
希望这份汇总能成为您日常使用 Kubernetes 的得力助手!