K8s集群运维Skill k8s-cluster-ops

通过 kubectl 命令行工具管理 Kubernetes 集群,执行查询资源状态、部署应用、查看日志、调试容器、切换上下文和监控集群健康等操作。适用于日常运维、发布和故障排查。

Docker/K8s 0 次安装 6 次浏览 更新于 7/8/2026

name: k8s-cluster-ops description: “通过 kubectl 命令行工具管理 Kubernetes 集群,执行查询资源状态、部署应用、查看日志、调试容器、切换上下文和监控集群健康等操作。适用于日常运维、发布和故障排查。当用户询问集群状态、Pod/Deployment信息、查看日志、执行容器命令、切换集群或上下文,或使用 kubectl get/describe/logs/exec/apply 等相关命令短语时触发。” license: MIT metadata: author: Dennis de Vaal d.devaal@gmail.com version: “1.0.0” keywords: “kubernetes,k8s,container,docker,deployment,pods,cluster” compatibility: 需要 kubectl 二进制文件(v1.20+)以及已配置好的 kubeconfig 连接到 Kubernetes 集群。支持 macOS、Linux 和 Windows(WSL)。

<!-- Localized from: kubectl -->

kubectl 技能

使用 kubectl 命令行工具执行 Kubernetes 集群管理操作。

概述

此技能可以帮助 Agent 完成以下操作:

  • 查询资源 — 列出和获取 Pod、Deployment、Service、Node 等资源的详细信息
  • 部署与更新 — 创建、应用、补丁和更新 Kubernetes 资源
  • 调试与排障 — 查看日志、在容器中执行命令、检查事件
  • 管理配置 — 更新 kubeconfig、切换上下文、管理命名空间
  • 监控健康 — 检查资源使用情况、滚动更新状态、事件和 Pod 状态
  • 执行运维操作 — 扩缩 Deployment、腾空节点、管理污点和标签

前置条件

  1. kubectl 二进制文件已安装并在 PATH 中可用(v1.20+)
  2. kubeconfig 文件已配置集群凭证(默认路径:~/.kube/config
  3. 已建立与 Kubernetes 集群的网络连接

快速配置

安装 kubectl

macOS:

brew install kubernetes-cli

Linux:

apt-get install -y kubectl  # Ubuntu/Debian
yum install -y kubectl      # RHEL/CentOS

验证安装:

kubectl version --client
kubectl cluster-info  # 测试连接

常用命令

查询资源

kubectl get pods                    # 列出当前命名空间的所有 Pod
kubectl get pods -A                 # 所有命名空间
kubectl get pods -o wide            # 更多列
kubectl get nodes                   # 列出节点
kubectl describe pod POD_NAME        # 详细信息,含事件

查看日志

kubectl logs POD_NAME                # 获取日志
kubectl logs -f POD_NAME             # 跟踪日志(tail -f)
kubectl logs POD_NAME -c CONTAINER   # 指定容器
kubectl logs POD_NAME --previous     # 上一个容器的日志

在容器中执行命令

kubectl exec -it POD_NAME -- /bin/bash   # 交互式 shell
kubectl exec POD_NAME -- COMMAND         # 执行单个命令

部署应用

kubectl apply -f deployment.yaml         # 应用配置
kubectl create -f deployment.yaml        # 创建资源
kubectl apply -f deployment.yaml --dry-run=client  # 测试

更新应用

kubectl set image deployment/APP IMAGE=IMAGE:TAG  # 更新镜像
kubectl scale deployment/APP --replicas=3          # 扩缩 Pod 数量
kubectl rollout status deployment/APP              # 检查状态
kubectl rollout undo deployment/APP                # 回滚

管理配置

kubectl config view                  # 显示 kubeconfig
kubectl config get-contexts          # 列出上下文
kubectl config use-context CONTEXT   # 切换上下文

常见操作场景

调试 Pod

# 1. 识别问题
kubectl describe pod POD_NAME

# 2. 检查日志
kubectl logs POD_NAME
kubectl logs POD_NAME --previous

# 3. 执行调试命令
kubectl exec -it POD_NAME -- /bin/bash

# 4. 检查事件
kubectl get events --sort-by='.lastTimestamp'

发布新版本

# 1. 更新镜像
kubectl set image deployment/MY_APP my-app=my-app:v2

# 2. 监控滚动更新
kubectl rollout status deployment/MY_APP -w

# 3. 验证
kubectl get pods -l app=my-app

# 4. 必要时回滚
kubectl rollout undo deployment/MY_APP

节点维护准备

# 1. 腾空节点(驱逐所有 Pod)
kubectl drain NODE_NAME --ignore-daemonsets

# 2. 执行维护操作
# ...

# 3. 重新上线
kubectl uncordon NODE_NAME

输出格式

--output-o)参数支持多种输出格式:

  • table — 默认表格格式
  • wide — 扩展表格,包含更多列
  • json — JSON 格式(可配合 jq 使用)
  • yaml — YAML 格式
  • jsonpath — JSONPath 表达式
  • custom-columns — 自定义输出列
  • name — 仅显示资源名称

示例:

kubectl get pods -o json | jq '.items[0].metadata.name'
kubectl get pods -o jsonpath='{.items[*].metadata.name}'
kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase

全局参数(适用于所有命令)

-n, --namespace=<ns>           # 在指定命名空间中操作
-A, --all-namespaces           # 在所有命名空间中操作
--context=<context>            # 使用特定的 kubeconfig 上下文
-o, --output=<format>          # 输出格式(json, yaml, table 等)
--dry-run=<mode>               # 试运行模式(none, client, server)
-l, --selector=<labels>        # 通过标签过滤
--field-selector=<selector>    # 通过字段过滤
-v, --v=<int>                  # 详细程度(0-9)

试运行模式

  • --dry-run=client — 快速的客户端验证(安全测试命令)
  • --dry-run=server — 服务端验证(结果更准确)
  • --dry-run=none — 真正执行(默认行为)

建议始终先用 --dry-run=client 测试:

kubectl apply -f manifest.yaml --dry-run=client

进阶内容

如需详细的参考资料、逐条命令文档、故障排查指南和高级工作流,请参阅:

实用技巧

  1. 使用标签选择器进行批量操作:

    kubectl delete pods -l app=myapp
    kubectl get pods -l env=prod,tier=backend
    
  2. 实时监视资源变化:

    kubectl get pods -w  # 监视变更
    
  3. 使用 -A 参数查看所有命名空间:

    kubectl get pods -A  # 查看所有命名空间的 Pod
    
  4. 导出配置以便日后对比:

    kubectl get deployment my-app -o yaml > deployment-backup.yaml
    
  5. 删除前先做试运行确认:

    kubectl delete pod POD_NAME --dry-run=client
    

获取帮助

kubectl help                      # 总体帮助
kubectl COMMAND --help            # 命令帮助
kubectl explain pods              # 资源文档
kubectl explain pods.spec         # 字段文档

环境变量

  • KUBECONFIG — kubeconfig 文件路径(可包含多个路径,用 : 分隔)
  • KUBECTL_CONTEXT — 覆盖默认上下文

参考资源


版本: 1.0.0
许可证: MIT
兼容: kubectl v1.20+、Kubernetes v1.20+