跳转至

Kubernetes 集群日常运维

集群运维关注控制平面、etcd、节点、证书、版本、CNI/CSI/CoreDNS 等基础组件,以及容量、备份、升级和故障恢复。应用 Pod 正常并不代表集群健康。

每日/周期检查

kubectl get --raw='/readyz?verbose'
kubectl get nodes -o wide
kubectl get pods -n kube-system -o wide
kubectl get events -A --sort-by=.lastTimestamp
kubectl top nodes
kubectl get apiservice
kubectl get --raw /metrics >/dev/null

重点监控:API Server 延迟和错误、etcd 延迟/空间/Leader、Node Condition、kubelet、证书到期、Pod/Service CIDR 使用、CNI/CSI/CoreDNS、存储容量和控制平面磁盘。

节点维护

kubectl cordon <node>
kubectl drain <node> --ignore-daemonsets --delete-emptydir-data
kubectl get pods -A --field-selector spec.nodeName=<node>

# 维护完成
kubectl uncordon <node>

cordon 只阻止新 Pod 调度;drain 通过 Eviction 驱逐工作负载,并受 PDB 影响。--delete-emptydir-data 会删除 EmptyDir 数据,执行前确认应用影响。DaemonSet Pod 通常不会被 drain 删除。

节点维护前确认:冗余副本、剩余容量、PDB、Local PV、数据库仲裁、控制平面角色和维护回滚方案。

etcd 备份

etcd 保存集群 API 状态,必须按部署方式制定快照和恢复流程。快照不等于应用数据备份:PVC 中数据库、对象存储和外部系统仍需单独备份。

定期快照
  → 加密并复制到集群外
  → 记录 Kubernetes/etcd 版本和证书
  → 在隔离环境执行恢复演练
  → 验证 API 对象、控制器和关键应用

不要等控制平面故障时才第一次阅读恢复文档。托管 Kubernetes 的控制平面备份责任由云服务定义,仍需确认范围和恢复目标。

kubeadm 证书与配置

kubeadm certs check-expiration
kubectl -n kube-system get configmap kubeadm-config -o yaml

kubeadm 控制平面常以 Static Pod Manifest 运行在 /etc/kubernetes/manifests。修改这些文件会触发 kubelet 重建组件。操作前备份 /etc/kubernetes/,并按目标版本官方文档执行,不能直接复制其他集群配置。

版本升级

升级前:

  1. 阅读目标版本 Release Notes、Version Skew 和已废弃 API。
  2. 验证 CNI、CSI、Ingress/Gateway、监控、备份和 CRD/Operator 兼容性。
  3. 完成 etcd/配置与业务数据备份并验证恢复。
  4. 检查节点容量、PDB 和维护窗口。
  5. 先测试环境,再逐个控制平面/工作节点升级。
kubectl get nodes
kubectl get --raw /readyz
kubectl get pods -A
kubectl get events -A --sort-by=.lastTimestamp

节点应少量分批 drain/升级/验证,不能一次下线全部工作节点。升级结束后验证 DNS、Service、跨节点网络、PVC、Ingress、指标、日志和关键业务,不只看 Node Ready。

容量与配额

  • Node CPU/内存 requests 分配率与真实使用率。
  • Pod/Service IP 池余量。
  • etcd 数据库与控制平面磁盘。
  • 镜像文件系统和容器日志磁盘。
  • PV 容量和存储后端性能。
  • Namespace ResourceQuota/LimitRange。
kubectl describe nodes
kubectl get resourcequota,limitrange -A
kubectl get pvc -A

基础组件变更

CNI、CSI、CoreDNS、kube-proxy/替代数据面、Ingress Controller 和 Metrics Server 都有独立版本兼容矩阵。升级它们时使用固定版本、保留配置、先灰度节点/环境,并验证完整数据路径。

变更记录

集群级变更至少记录:集群/环境、变更对象、旧/新版本、配置 diff、执行人、开始/结束时间、验证项、监控窗口和回滚条件。手工 kubectl 修改最终应回写 IaC/GitOps 来源。

常见风险

风险 后果
无 etcd 恢复演练 有快照但故障时无法恢复
证书到期无监控 API/kubelet/组件通信中断
一次 drain 多个节点 容量不足和 PDB 阻塞,业务大面积不可用
只升级 Kubernetes 不查插件 CNI/CSI/Ingress 等不兼容
只看 Node Ready DNS、网络、存储和业务仍可能故障

官方参考:Cluster AdministrationUpgrading kubeadm clusters