Get the FREE Ultimate OpenClaw Setup Guide →

kubectl-basics

Scanned
npx machina-cli add skill chaterm/terminal-skills/kubectl-basics --openclaw
Files (1)
SKILL.md
3.1 KB

kubectl 基础操作

概述

kubectl 是 Kubernetes 的命令行工具,用于与集群进行交互。本 skill 涵盖日常运维中最常用的命令。

集群信息

# 集群信息
kubectl cluster-info
kubectl version

# 节点信息
kubectl get nodes
kubectl describe node <node-name>

# 上下文切换
kubectl config get-contexts
kubectl config use-context <context-name>

资源查看

常用资源

# Pod
kubectl get pods
kubectl get pods -o wide
kubectl get pods -A                    # 所有命名空间

# Deployment
kubectl get deployments
kubectl get deploy -o yaml

# Service
kubectl get services
kubectl get svc

# 所有资源
kubectl get all
kubectl get all -n <namespace>

输出格式

kubectl get pods -o wide               # 详细信息
kubectl get pods -o yaml               # YAML 格式
kubectl get pods -o json               # JSON 格式
kubectl get pods -o jsonpath='{.items[*].metadata.name}'

资源操作

创建与删除

# 从文件创建
kubectl apply -f manifest.yaml
kubectl create -f manifest.yaml

# 删除资源
kubectl delete -f manifest.yaml
kubectl delete pod <pod-name>
kubectl delete pod <pod-name> --force --grace-period=0

编辑与更新

# 编辑资源
kubectl edit deployment <name>

# 打补丁
kubectl patch deployment <name> -p '{"spec":{"replicas":3}}'

# 扩缩容
kubectl scale deployment <name> --replicas=5

Pod 调试

# 查看日志
kubectl logs <pod-name>
kubectl logs <pod-name> -c <container>
kubectl logs <pod-name> -f              # 实时跟踪
kubectl logs <pod-name> --previous      # 上一个容器

# 进入容器
kubectl exec -it <pod-name> -- /bin/bash
kubectl exec -it <pod-name> -c <container> -- sh

# 端口转发
kubectl port-forward <pod-name> 8080:80
kubectl port-forward svc/<service> 8080:80

常见场景

场景 1:快速排查 Pod 问题

# 1. 查看 Pod 状态
kubectl get pod <name> -o wide

# 2. 查看事件
kubectl describe pod <name> | grep -A 20 Events

# 3. 查看日志
kubectl logs <name> --tail=100

场景 2:滚动更新

# 更新镜像
kubectl set image deployment/<name> container=image:tag

# 查看更新状态
kubectl rollout status deployment/<name>

# 回滚
kubectl rollout undo deployment/<name>
kubectl rollout history deployment/<name>

快捷别名

# 推荐添加到 ~/.bashrc 或 ~/.zshrc
alias k='kubectl'
alias kgp='kubectl get pods'
alias kgs='kubectl get svc'
alias kgd='kubectl get deploy'
alias kd='kubectl describe'
alias kl='kubectl logs'
alias ke='kubectl exec -it'

故障排查

状态可能原因排查命令
Pending资源不足/调度问题kubectl describe pod
CrashLoopBackOff应用崩溃kubectl logs --previous
ImagePullBackOff镜像拉取失败kubectl describe pod
OOMKilled内存超限检查 resources.limits

Source

git clone https://github.com/chaterm/terminal-skills/blob/main/kubernetes/kubectl-basics/SKILL.mdView on GitHub

Overview

你将学习 kubectl 的核心子命令与常用选项,能够快速获取集群状态、查询 Pods、Deployments、Services 等资源,并执行创建、删除、编辑、打补丁和扩容等操作。文档还覆盖 Pod 调试、日志查看、端口转发等常用场景,帮助你在生产环境中高效运维。

How This Skill Works

通过执行 kubectl 的子命令与选项来与 Kubernetes API 交互。本技能将命令按功能分组(如集群信息、资源查看、资源操作、Pod 调试等),并给出直接可执行的示例,方便你在日常场景中快速上手。你还会学习如何指定命名空间、使用不同输出格式(-o),以及在上下文之间切换以适配多集群场景。

When to Use It

  • 快速排查 Pod 问题时,通过 kubectl get pod -o wide、kubectl describe pod、kubectl logs 来定位原因
  • 查看集群与节点信息,确保集群状态正常(kubectl cluster-info、kubectl version、kubectl get nodes)
  • 创建、更新或删除资源,例如通过 kubectl apply、kubectl delete、kubectl patch、kubectl scale 进行常规变更
  • 进行滚动更新、回滚和扩缩容,确保应用平滑部署(kubectl set image、kubectl rollout status、kubectl rollout undo、kubectl scale)
  • 对特定 Pod 或服务进行调试,比如进入容器、端口转发、查看命名空间资源(kubectl exec、kubectl logs、kubectl port-forward)

Quick Start

  1. Step 1: 了解集群信息和版本
  2. kubectl cluster-info
  3. kubectl version
  4. Step 2: 查看资源态势
  5. kubectl get nodes
  6. kubectl get pods -A
  7. Step 3: 调试一个 Pod
  8. kubectl describe pod <name>
  9. kubectl logs <name> --tail=100
  10. Step 4: 进入容器或对端口进行转发
  11. kubectl exec -it <pod-name> -- /bin/bash
  12. kubectl port-forward <pod-name> 8080:80

Best Practices

  • 尽量通过 manifest (YAML) 使用 kubectl apply 进行创建或更新,而非逐条命令创建
  • 总是指定命名空间:使用 -n <namespace> 或在上下文中设定默认命名空间,避免混淆
  • 在需要时输出为静态格式以便审计:kubectl get <resource> -o yaml|json
  • 在执行滚动更新时先查看 rollout status,必要时使用 rollout history 与 rollback
  • 避免在生产资源上直接执行编辑,优先使用 patch、apply 或 manifest 的方式进行变更

Example Use Cases

  • 用 kubectl 快速定位 Pod 问题:先查看状态、再描述事件、最后查看最近日志
  • 部署新版本:kubectl apply -f manifest.yaml、kubectl set image deployment/your-deploy your-container=repo:newtag、kubectl rollout status deployment/your-deploy
  • 调试服务:kubectl port-forward svc/your-service 8080:80,然后在本地访问
  • 回滚部署:kubectl rollout undo deployment/your-deploy、kubectl rollout history deployment/your-deploy
  • 导出应用清单以备份或迁移:kubectl get deploy -n prod -o yaml > deploy-prod.yaml

Frequently Asked Questions

Add this skill to your agents

Related Skills

Sponsor this space

Reach thousands of developers