
kubectl 是 Kubernetes 的命令行工具也是你与集群交互的主要方式。掌握常用命令、资源查看、对象管理、调试技巧能让你高效地操作任何 K8s 集群。本文系统讲解 kubectl 的基本语法、常用子命令、资源类型缩写、输出格式定制以及配置管理并给出大量实战示例。一、Kubectl 基本语法kubectl[command][TYPE][NAME][flags]command对资源执行的操作如 get, describe, create, apply, delete, logs, exec。TYPE资源类型如 pod, deployment, service, node支持单数和复数缩写po, deploy, svc, no。NAME资源名称省略时表示所有资源受命名空间限制。flags可选参数如 -n namespace、-o wide、–context。二、常用命令速查表三、资源类型与缩写常用资源的完整名称和缩写kubectl api-resources 查看全部技巧使用 kubectl api-resources 快速查看所有支持的资源及其短名称。四、输出格式定制通过 -o 或 --output 控制输出格式实用 jsonpath 示例# 获取所有 Pod 的名称kubectl get pods-ojsonpath{range .items[*]}{.metadata.name}{\n}{end}# 获取特定节点的 Pod 名称kubectl get pods-ojsonpath{.items[?(.spec.nodeNamenode1)].metadata.name}五、资源创建与更新5.1 声明式管理推荐使用 YAML 或 JSON 文件定义资源然后执行 applykubectl apply-fdeployment.yaml kubectl apply-f./manifests/# 应用目录下所有 YAMLkubectl apply-fhttps://example.com/deploy.yamlapply 使用 last-applied-configuration 注解执行增量更新适合长期维护。5.2 命令式管理临时调试用# 创建 Deploymentkubectl create deployment nginx--imagenginx--replicas3# 创建 Servicekubectl expose deployment nginx--port80--typeLoadBalancer# 创建 ConfigMap 从文件kubectl create configmap app-config --from-file./app.conf# 创建 Secret 从字面值kubectl create secret generic db-secret --from-literalpassword123456生产环境推荐使用声明式YAML GitOps便于版本控制和审计。六、查看与调试6.1 查看资源kubectl get pods --show-labels# 显示标签kubectl get pods-lappnginx# 按标签筛选kubectl get pods-nkube-system# 指定命名空间kubectl get pods --field-selectorstatus.phaseRunning# 按字段筛选6.2 描述资源describe 命令输出资源的详细状态、事件、最新变更kubectl describe pod my-pod kubectl describenodenode1查看 Events 部分对排查故障非常有用如拉取镜像失败、调度失败、探针错误。6.3 实时监控kubectl get pods-w# 持续监听变化kubectl get events--watch# 实时事件流kubectl get pods-owide--watch# 组合使用6.4 日志查看kubectl logs my-pod# 单容器 Podkubectl logs my-pod-csidecar-container# 多容器 Pod 指定容器kubectl logs-lappnginx--tail20# 按标签筛选最后20行kubectl logs-fmy-pod# 实时跟踪kubectl logs my-pod--previous# 查看上一个崩溃容器的日志6.5 进入容器执行命令kubectlexecmy-pod --ls-l/tmp kubectlexec-itmy-pod -- /bin/bash# 交互式 Shellkubectlexec-itmy-pod-csidecar --sh# 多容器时指定容器6.6 端口转发将本地端口转发到 Pod 或 Service 的端口便于调试kubectl port-forward pod/my-pod8080:80 kubectl port-forward service/my-service8080:80七、标签与选择器标签是 Kubernetes 组织资源的核心机制。为资源添加标签kubectl label pods my-podappwebversionv1 kubectl label pods my-pod version-# 删除标签选择器-l支持等值、、!和集合in、notinkubectl get pods-lapp in (web,api),version!v2八、命名空间管理命名空间用于资源隔离如环境、团队。kubectl create namespace dev kubectl get namespaces kubectl config set-context--current--namespacedev# 切换默认命名空间kubectl run nginx--imagenginx-ndev# 指定命名空间kubectl delete namespace dev# 删除命名空间会删除其下所有资源九、常用别名与自动补全提高效率的配置# 设置别名aliaskkubectlaliaskgpkubectl get podsaliaskdkubectl describealiaskdelkubectl deletealiaskexeckubectl exec -italiasklogskubectl logs# Bash 自动补全永久生效echosource (kubectl completion bash)~/.bashrcechoalias kkubectl~/.bashrcechocomplete -o default -F __start_kubectl k~/.bashrcsource~/.bashrc十、配置管理kubeconfig默认配置文件为 ~/.kube/config支持多集群、多上下文。kubectl config view# 查看当前配置kubectl config get-contexts# 列出所有上下文kubectl config current-context# 当前上下文kubectl config use-contextname# 切换上下文kubectl config set-credentials...# 设置用户认证kubectl config set-cluster...# 设置集群十一、常见故障排查流程十二、小结kubectl 是管理 K8s 集群的强大工具。掌握常用命令、输出格式、标签选择器、命名空间、调试技巧能让你应对日常运维和开发需求。建议熟记资源缩写、善于使用 describe 和 logs 排查问题并结合 apply -f 进行声明式管理。