Kubernetes (kubectl) 命令大全

吴书松
吴书松
发布于 2025-09-03 / 12 阅读
0
0

Kubernetes (kubectl) 命令大全

来自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 dump

2. 查看节点 (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 -w

2. 查看 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/sh

4. 创建与删除

# 通过 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-config

2. 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>

总结与最佳实践

  1. 声明式管理:优先使用 kubectl apply -f <file.yaml> 而不是 create 命令,这样更符合 K8S 的声明式理念,便于版本控制。

  2. 善用 -o 参数-o wide, -o yaml, -o json 可以输出不同格式的信息,-o yaml 尤其适合排查配置问题。

  3. describelogs 是排错利器:当 Pod 无法启动或行为异常时,第一时间使用这两个命令。

  4. 明确命名空间:始终清楚自己所在的命名空间 (-n),这是新手常犯的错误。

  5. --dry-run=client -o yaml:快速生成一个资源的 YAML 模板,无需真正创建它。

    kubectl create deployment my-nginx --image=nginx --dry-run=client -o yaml > deployment.yaml

希望这份汇总能成为您日常使用 Kubernetes 的得力助手!


评论