Runbook 总览:从零部署、查看、调试
这组文档是给第一次接触 K8s 的人用的操作手册。它和 docs/days/ 的区别:
docs/days/是学习过程和真实踩坑记录。docs/runbooks/是照着执行的安装、验收、排障手册。
先读这个目录,再回到 Day 文档看细节和背景。
阅读顺序
| 顺序 | 文档 | 解决的问题 |
|---|---|---|
| 1 | 完整安装总 Runbook | 5 台空 Ubuntu 机器怎么装成当前平台 |
| 2 | 核心 K8s Runbook | kubeadm、apiserver、etcd、kubelet、containerd、HAProxy 怎么装和查 |
| 3 | Cilium 网络 Runbook | CNI、Pod 网络、Service、DNS、Hubble 怎么装和排障 |
| 4 | Longhorn 存储 Runbook | PVC、PV、CSI、Longhorn 卷、Multi-Attach 怎么查 |
| 5 | 监控日志 Runbook | Prometheus、Grafana、Loki、Alertmanager 怎么装和查 |
| 6 | CI / GitOps Runbook | Harbor、Gitea、Jenkins、Kaniko、ArgoCD 怎么串起来 |
| 7 | 安全准入 Runbook | RBAC、PSA、Kyverno、Quota 为什么拦截以及怎么查 |
现场机器
| 节点 | 公网 IP | 内网 IP | 角色 |
|---|---|---|---|
k8s-cp-1 | 154.201.73.31 | 10.0.24.31 | control plane |
k8s-cp-2 | 154.201.73.81 | 10.0.24.29 | control plane |
k8s-cp-3 | 45.205.31.214 | 10.0.24.32 | control plane |
k8s-w-1 | 45.205.31.180 | 10.0.24.28 | worker |
k8s-w-2 | 45.205.31.10 | 10.0.24.30 | worker |
默认从 k8s-cp-1 操作:
ssh root@154.201.73.31
每次改动后的固定验收
不管你刚改了哪个组件,都先跑这 6 条:
kubectl get nodes -o wide
kubectl get pods -A \
--field-selector=status.phase!=Running,status.phase!=Succeeded \
-o wide
kubectl get events -A --sort-by=.lastTimestamp | tail -50
helm list -A
cilium status --wait=false
kubectl get volumes.longhorn.io -n longhorn-system \
-o custom-columns=NAME:.metadata.name,STATE:.status.state,ROBUSTNESS:.status.robustness,CURRENT:.status.currentNodeID
这 6 条分别回答:
- 节点活不活。
- 哪些 Pod 不正常。
- 最近 K8s 控制器在报什么事件。
- 哪些大组件由 Helm 管。
- 网络插件是否正常。
- 存储卷是否健康。
基本排障顺序
排障不要从删 Pod 开始。按这个顺序看:
入口打不开
-> curl NodePort
-> kubectl get svc,endpoints
-> kubectl get pod -o wide
-> kubectl logs / describe pod
-> 查 Cilium / DNS / NetworkPolicy
Pod 起不来
-> kubectl describe pod 看 Events
-> kubectl logs 看应用日志
-> kubectl get pvc 看卷
-> kubectl describe node 看资源/污点
-> journalctl -u kubelet 看节点侧错误
节点 NotReady
-> journalctl -u kubelet
-> systemctl status containerd kubelet
-> crictl info
-> getent hosts k8s-api
-> ss -tlnp | grep 16443
先看事实,再动手改配置。