$npx -y skills add chaterm/terminal-skills --skill kubectl-basicskubectl 基础操作与常用命令
| 1 | # kubectl 基础操作 |
| 2 | |
| 3 | ## 概述 |
| 4 | kubectl 是 Kubernetes 的命令行工具,用于与集群进行交互。本 skill 涵盖日常运维中最常用的命令。 |
| 5 | |
| 6 | ## 集群信息 |
| 7 | |
| 8 | ```bash |
| 9 | # 集群信息 |
| 10 | kubectl cluster-info |
| 11 | kubectl version |
| 12 | |
| 13 | # 节点信息 |
| 14 | kubectl get nodes |
| 15 | kubectl describe node <node-name> |
| 16 | |
| 17 | # 上下文切换 |
| 18 | kubectl config get-contexts |
| 19 | kubectl config use-context <context-name> |
| 20 | ``` |
| 21 | |
| 22 | ## 资源查看 |
| 23 | |
| 24 | ### 常用资源 |
| 25 | ```bash |
| 26 | # Pod |
| 27 | kubectl get pods |
| 28 | kubectl get pods -o wide |
| 29 | kubectl get pods -A # 所有命名空间 |
| 30 | |
| 31 | # Deployment |
| 32 | kubectl get deployments |
| 33 | kubectl get deploy -o yaml |
| 34 | |
| 35 | # Service |
| 36 | kubectl get services |
| 37 | kubectl get svc |
| 38 | |
| 39 | # 所有资源 |
| 40 | kubectl get all |
| 41 | kubectl get all -n <namespace> |
| 42 | ``` |
| 43 | |
| 44 | ### 输出格式 |
| 45 | ```bash |
| 46 | kubectl get pods -o wide # 详细信息 |
| 47 | kubectl get pods -o yaml # YAML 格式 |
| 48 | kubectl get pods -o json # JSON 格式 |
| 49 | kubectl get pods -o jsonpath='{.items[*].metadata.name}' |
| 50 | ``` |
| 51 | |
| 52 | ## 资源操作 |
| 53 | |
| 54 | ### 创建与删除 |
| 55 | ```bash |
| 56 | # 从文件创建 |
| 57 | kubectl apply -f manifest.yaml |
| 58 | kubectl create -f manifest.yaml |
| 59 | |
| 60 | # 删除资源 |
| 61 | kubectl delete -f manifest.yaml |
| 62 | kubectl delete pod <pod-name> |
| 63 | kubectl delete pod <pod-name> --force --grace-period=0 |
| 64 | ``` |
| 65 | |
| 66 | ### 编辑与更新 |
| 67 | ```bash |
| 68 | # 编辑资源 |
| 69 | kubectl edit deployment <name> |
| 70 | |
| 71 | # 打补丁 |
| 72 | kubectl patch deployment <name> -p '{"spec":{"replicas":3}}' |
| 73 | |
| 74 | # 扩缩容 |
| 75 | kubectl scale deployment <name> --replicas=5 |
| 76 | ``` |
| 77 | |
| 78 | ## Pod 调试 |
| 79 | |
| 80 | ```bash |
| 81 | # 查看日志 |
| 82 | kubectl logs <pod-name> |
| 83 | kubectl logs <pod-name> -c <container> |
| 84 | kubectl logs <pod-name> -f # 实时跟踪 |
| 85 | kubectl logs <pod-name> --previous # 上一个容器 |
| 86 | |
| 87 | # 进入容器 |
| 88 | kubectl exec -it <pod-name> -- /bin/bash |
| 89 | kubectl exec -it <pod-name> -c <container> -- sh |
| 90 | |
| 91 | # 端口转发 |
| 92 | kubectl port-forward <pod-name> 8080:80 |
| 93 | kubectl port-forward svc/<service> 8080:80 |
| 94 | ``` |
| 95 | |
| 96 | ## 常见场景 |
| 97 | |
| 98 | ### 场景 1:快速排查 Pod 问题 |
| 99 | ```bash |
| 100 | # 1. 查看 Pod 状态 |
| 101 | kubectl get pod <name> -o wide |
| 102 | |
| 103 | # 2. 查看事件 |
| 104 | kubectl describe pod <name> | grep -A 20 Events |
| 105 | |
| 106 | # 3. 查看日志 |
| 107 | kubectl logs <name> --tail=100 |
| 108 | ``` |
| 109 | |
| 110 | ### 场景 2:滚动更新 |
| 111 | ```bash |
| 112 | # 更新镜像 |
| 113 | kubectl set image deployment/<name> container=image:tag |
| 114 | |
| 115 | # 查看更新状态 |
| 116 | kubectl rollout status deployment/<name> |
| 117 | |
| 118 | # 回滚 |
| 119 | kubectl rollout undo deployment/<name> |
| 120 | kubectl rollout history deployment/<name> |
| 121 | ``` |
| 122 | |
| 123 | ## 快捷别名 |
| 124 | |
| 125 | ```bash |
| 126 | # 推荐添加到 ~/.bashrc 或 ~/.zshrc |
| 127 | alias k='kubectl' |
| 128 | alias kgp='kubectl get pods' |
| 129 | alias kgs='kubectl get svc' |
| 130 | alias kgd='kubectl get deploy' |
| 131 | alias kd='kubectl describe' |
| 132 | alias kl='kubectl logs' |
| 133 | alias ke='kubectl exec -it' |
| 134 | ``` |
| 135 | |
| 136 | ## 故障排查 |
| 137 | |
| 138 | | 状态 | 可能原因 | 排查命令 | |
| 139 | |------|----------|----------| |
| 140 | | Pending | 资源不足/调度问题 | `kubectl describe pod` | |
| 141 | | CrashLoopBackOff | 应用崩溃 | `kubectl logs --previous` | |
| 142 | | ImagePullBackOff | 镜像拉取失败 | `kubectl describe pod` | |
| 143 | | OOMKilled | 内存超限 | 检查 resources.limits | |