Kubectl 命令速查表
本速查表收录了日常管理 Kubernetes 集群最常用的 kubectl 命令,涵盖 Pod 操作、工作负载管理、网络配置、资源调试、集群维护等场景。适合容器编排工程师日常参考。
Pod 管理 (Pod Management)
创建、查看和管理 Pod。
``bash
# 列出所有 Pod
kubectl get pods
# 列出所有命名空间的 Pod kubectl get pods --all-namespaces
# 显示更多信息(节点、IP 等) kubectl get pods -o wide
# 持续监控 Pod 状态 kubectl get pods -w
# 查看 Pod 详细信息 kubectl describe pod my-pod
# 查看 Pod 的完整 YAML kubectl get pod my-pod -o yaml
# 查看 Pod 标签 kubectl get pods --show-labels
# 根据标签筛选 kubectl get pods -l app=nginx,env=prod
# 删除 Pod kubectl delete pod my-pod
# 强制删除 Pod kubectl delete pod my-pod --force --grace-period=0
# 创建 Pod(运行一次) kubectl run nginx --image=nginx --restart=Never
# 创建 Pod 并暴露端口 kubectl run web --image=nginx --port=80
# 导出 Pod 定义到文件
kubectl get pod my-pod -o yaml --export > pod.yaml
`
工作负载管理 (Workload Management)
管理 Deployment、StatefulSet、DaemonSet 等。
`bash
# 创建 Deployment
kubectl create deployment myapp --image=nginx
# 查看 Deployment kubectl get deployments
# 查看 Deployment 详细信息 kubectl describe deployment myapp
# 扩缩容 kubectl scale deployment myapp --replicas=5
# 自动扩缩容 kubectl autoscale deployment myapp --min=2 --max=10 --cpu-percent=80
# 滚动更新镜像 kubectl set image deployment/myapp myapp=myapp:v2
# 查看更新状态 kubectl rollout status deployment/myapp
# 查看更新历史 kubectl rollout history deployment/myapp
# 回滚到上一版本 kubectl rollout undo deployment/myapp
# 回滚到指定版本 kubectl rollout undo deployment/myapp --to-revision=2
# 暂停/恢复滚动更新 kubectl rollout pause deployment/myapp kubectl rollout resume deployment/myapp
# 查看 DaemonSet kubectl get daemonsets --all-namespaces
# 查看 StatefulSet kubectl get statefulsets
# 管理 CronJob
kubectl get cronjobs
kubectl create cronjob backup --image=busybox --schedule="0 0 * * *" -- /bin/sh -c "date"
`
网络管理 (Networking)
管理 Service、Ingress、网络策略。
`bash
# 列出所有 Service
kubectl get services
# 列出所有命名空间的 Service kubectl get svc --all-namespaces
# 暴露 Deployment 为 Service kubectl expose deployment myapp --port=80 --target-port=8080 --type=ClusterIP
# 创建 NodePort 类型 Service kubectl expose deployment myapp --port=80 --type=NodePort
# 创建 LoadBalancer 类型 Service kubectl expose deployment myapp --port=80 --type=LoadBalancer
# 端口转发(本地访问) kubectl port-forward pod/my-pod 8080:80
# 端口转发到 Service kubectl port-forward svc/my-service 8080:80
# 查看 Endpoints kubectl get endpoints
# 查看 Ingress kubectl get ingress
# 查看网络策略 kubectl get networkpolicies
# 创建 Service(使用 YAML)
kubectl create service clusterip my-svc --tcp=80:8080
`
配置管理 (Configuration)
管理 ConfigMap、Secret、资源配额等。
`bash
# 创建 ConfigMap 从字面值
kubectl create configmap app-config --from-literal=key1=val1 --from-literal=key2=val2
# 创建 ConfigMap 从文件 kubectl create configmap app-config --from-file=config.properties
# 查看 ConfigMap kubectl get configmaps kubectl describe configmap app-config
# 创建 Secret 从字面值 kubectl create secret generic db-secret --from-literal=password=mysecret
# 创建 Secret 从文件 kubectl create secret generic tls-secret --from-file=tls.crt --from-file=tls.key
# 查看 Secret kubectl get secrets kubectl get secret db-secret -o yaml
# 编码/解码 Secret 值 echo -n "mysecret" | base64 echo "bXlzZWNyZXQ=" | base64 -d
# 管理资源配额 kubectl get resourcequotas
# 管理 LimitRange kubectl get limitranges
# 查看 ServiceAccount kubectl get serviceaccounts
# 编辑资源(使用默认编辑器) kubectl edit deployment myapp
# 应用 YAML 配置 kubectl apply -f deployment.yaml
# 删除资源配置
kubectl delete -f deployment.yaml
`
调试与排查 (Debugging)
日志、exec、事件排查。
`bash
# 查看 Pod 日志
kubectl logs my-pod
# 持续跟踪日志 kubectl logs -f my-pod
# 查看最近 N 行日志 kubectl logs --tail=100 my-pod
# 查看最近一段时间日志 kubectl logs --since=1h my-pod
# 查看多容器 Pod 的指定容器日志 kubectl logs my-pod -c sidecar-container
# 进入容器执行命令 kubectl exec -it my-pod -- /bin/sh
# 在容器中执行单条命令 kubectl exec my-pod -- env kubectl exec my-pod -- ls -la /app
# 复制文件到 Pod kubectl cp /local/file.txt my-pod:/remote/path/
# 从 Pod 复制文件 kubectl cp my-pod:/remote/path/file.txt /local/file.txt
# 查看集群事件 kubectl get events kubectl get events --sort-by='.lastTimestamp' kubectl get events -w
# 查看事件并过滤 kubectl get events --field-selector type=Warning
# 查看 API 资源类型 kubectl api-resources
# 查看资源字段说明 kubectl explain pod kubectl explain pod.spec.containers
# 测试 API 访问权限
kubectl auth can-i create deployments
kubectl auth can-i delete pods --as=system:serviceaccount:default:my-sa
`
集群管理 (Cluster Management)
节点管理、上下文切换、集群信息。
`bash
# 查看节点
kubectl get nodes
# 查看节点详细信息 kubectl describe node worker-1
# 查看节点资源用量 kubectl top node kubectl top pod
# 标记节点为不可调度 kubectl cordon worker-1
# 驱逐节点上的 Pod kubectl drain worker-1 --ignore-daemonsets --delete-emptydir-data
# 恢复节点调度 kubectl uncordon worker-1
# 添加/管理污点 kubectl taint nodes worker-1 key=value:NoSchedule kubectl taint nodes worker-1 key=value:NoSchedule-
# 添加/管理标签 kubectl label node worker-1 disktype=ssd kubectl label node worker-1 disktype-
# 添加/管理注解 kubectl annotate pod my-pod description="my annotation" kubectl annotate pod my-pod description-
# 查看集群信息 kubectl cluster-info
# 查看当前上下文 kubectl config current-context
# 列出所有上下文 kubectl config get-contexts
# 切换上下文 kubectl config use-context production
# 查看 kubeconfig kubectl config view
# 设置集群上下文 kubectl config set-context my-context --namespace=prod --cluster=my-cluster --user=my-user
# 合并多个 kubeconfig export KUBECONFIG=file1:file2 kubectl config view --flatten > merged-config
# 查看 API 版本 kubectl api-versions
# 查看集群中所有资源 kubectl get all --all-namespaces ``
Pod 管理(7)
| 命令 | 难度 | ||
|---|---|---|---|
kubectl get pods列出所有 Pod | 基础 | kubectl get pods | |
kubectl get pods --all-namespaces列出所有命名空间的 Pod | 基础 | kubectl get pods --all-namespaces | |
kubectl describe pod my-pod查看 Pod 的详细信息 | 基础 | kubectl describe pod my-pod | |
kubectl get pod my-pod -o yaml导出 Pod 的 YAML 定义 | 中级 | kubectl get pod my-pod -o yaml | |
kubectl get pods -l app=nginx,env=prod根据标签筛选 Pod | 中级 | kubectl get pods -l app=nginx,env=prod | |
kubectl delete pod my-pod --force --grace-period=0强制删除 Pod | 中级 | kubectl delete pod my-pod --force --grace-period=0 | |
kubectl run nginx --image=nginx --restart=Never创建一次性运行的 Pod | 基础 | kubectl run nginx --image=nginx --restart=Never |
工作负载(6)
| 命令 | 难度 | ||
|---|---|---|---|
kubectl create deployment myapp --image=nginx创建 Deployment | 基础 | kubectl create deployment myapp --image=nginx | |
kubectl scale deployment myapp --replicas=5扩缩容 Deployment | 基础 | kubectl scale deployment myapp --replicas=5 | |
kubectl set image deployment/myapp myapp=myapp:v2滚动更新 Deployment 镜像 | 中级 | kubectl set image deployment/myapp myapp=myapp:v2 | |
kubectl rollout status deployment/myapp查看 Deployment 更新状态 | 中级 | kubectl rollout status deployment/myapp | |
kubectl rollout undo deployment/myapp回滚 Deployment 到上一版本 | 中级 | kubectl rollout undo deployment/myapp | |
kubectl rollout history deployment/myapp查看 Deployment 更新历史 | 中级 | kubectl rollout history deployment/myapp |
网络(4)
| 命令 | 难度 | ||
|---|---|---|---|
kubectl expose deployment myapp --port=80 --target-port=8080 --type=ClusterIP暴露 Deployment 为 ClusterIP 服务 | 中级 | kubectl expose deployment myapp --port=80 --target-port=8080 --type=ClusterIP | |
kubectl expose deployment myapp --port=80 --type=NodePort创建 NodePort 类型 Service | 中级 | kubectl expose deployment myapp --port=80 --type=NodePort | |
kubectl port-forward pod/my-pod 8080:80端口转发到 Pod(本地调试) | 中级 | kubectl port-forward pod/my-pod 8080:80 | |
kubectl get ingress查看 Ingress 资源 | 中级 | kubectl get ingress |
配置(6)
| 命令 | 难度 | ||
|---|---|---|---|
kubectl create configmap app-config --from-literal=key1=val1从字面值创建 ConfigMap | 基础 | kubectl create configmap app-config --from-literal=key1=val1 | |
kubectl create configmap app-config --from-file=config.properties从文件创建 ConfigMap | 基础 | kubectl create configmap app-config --from-file=config.properties | |
kubectl create secret generic db-secret --from-literal=password=mysecret从字面值创建 Secret | 中级 | kubectl create secret generic db-secret --from-literal=password=mysecret | |
kubectl edit deployment myapp编辑 Deployment 资源 | 中级 | kubectl edit deployment myapp | |
kubectl apply -f deployment.yaml应用 YAML 配置文件 | 基础 | kubectl apply -f deployment.yaml | |
kubectl delete -f deployment.yaml删除 YAML 配置定义的资源 | 基础 | kubectl delete -f deployment.yaml |
调试(6)
| 命令 | 难度 | ||
|---|---|---|---|
kubectl logs -f my-pod持续跟踪 Pod 日志 | 基础 | kubectl logs -f my-pod | |
kubectl logs --tail=100 my-pod查看 Pod 最近 N 行日志 | 基础 | kubectl logs --tail=100 my-pod | |
kubectl exec -it my-pod -- /bin/sh进入容器交互式 Shell | 基础 | kubectl exec -it my-pod -- /bin/sh | |
kubectl cp /local/file.txt my-pod:/remote/path/复制文件到 Pod | 中级 | kubectl cp /local/file.txt my-pod:/remote/path/ | |
kubectl get events --sort-by='.lastTimestamp'按时间排序查看集群事件 | 中级 | kubectl get events --sort-by='.lastTimestamp' | |
kubectl explain pod.spec.containers查看资源字段说明 | 基础 | kubectl explain pod.spec.containers |
集群管理(12)
| 命令 | 难度 | ||
|---|---|---|---|
kubectl auth can-i create deployments测试当前用户是否有创建 Deployment 的权限 | 高级 | kubectl auth can-i create deployments | |
kubectl get nodes列出集群节点 | 基础 | kubectl get nodes | |
kubectl describe node worker-1查看节点详细信息 | 中级 | kubectl describe node worker-1 | |
kubectl top node查看节点资源使用量 | 中级 | kubectl top node | |
kubectl top pod查看 Pod 资源使用量 | 中级 | kubectl top pod | |
kubectl cordon worker-1标记节点为不可调度 | 高级 | kubectl cordon worker-1 | |
kubectl drain worker-1 --ignore-daemonsets --delete-emptydir-data驱逐节点上的 Pod 准备维护 | 高级 | kubectl drain worker-1 --ignore-daemonsets --delete-emptydir-data | |
kubectl taint nodes worker-1 key=value:NoSchedule给节点添加污点阻止调度 | 高级 | kubectl taint nodes worker-1 key=value:NoSchedule | |
kubectl cluster-info查看集群信息 | 基础 | kubectl cluster-info | |
kubectl config current-context查看当前上下文 | 基础 | kubectl config current-context | |
kubectl config use-context production切换上下文 | 基础 | kubectl config use-context production | |
kubectl get all --all-namespaces查看集群中所有资源 | 中级 | kubectl get all --all-namespaces |