kubectl-basics
Scannednpx machina-cli add skill chaterm/terminal-skills/kubectl-basics --openclawFiles (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
- Step 1: 了解集群信息和版本
- kubectl cluster-info
- kubectl version
- Step 2: 查看资源态势
- kubectl get nodes
- kubectl get pods -A
- Step 3: 调试一个 Pod
- kubectl describe pod <name>
- kubectl logs <name> --tail=100
- Step 4: 进入容器或对端口进行转发
- kubectl exec -it <pod-name> -- /bin/bash
- 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
deployment
chaterm/terminal-skills
Kubernetes Deployment 管理
container-ops
chaterm/terminal-skills
Docker 容器操作与管理
helm
chaterm/terminal-skills
Helm 包管理
pod-management
chaterm/terminal-skills
Kubernetes Pod 管理与调试
service-ingress
chaterm/terminal-skills
Kubernetes Service 与 Ingress
configmap-secret
chaterm/terminal-skills
Kubernetes ConfigMap 与 Secret