监控 CentOS 上 Kubernetes 安装进度的实用方案
一、命令行快速巡检
- 节点与控制面就绪
- 查看节点状态:kubectl get nodes -o wide(关注 STATUS=Ready、VERSION 是否一致)
- 查看系统组件:kubectl get pods -n kube-system(关注 kube-apiserver、kube-controller-manager、kube-scheduler、etcd、coredns 的 READY 与 RESTARTS)
- 工作负载与网络
- 查看核心应用:kubectl get pods -A(确认 coredns 等系统 Pod 已 Running)
- 查看服务与端点:kubectl get svc -A、kubectl get endpoints -A
- 实时观察与定位
- 实时查看:watch -n 2 ‘kubectl get pods -A -o wide’
- 事件与原因:kubectl get events -A --sort-by=.metadata.creationTimestamp
- 详细诊断:kubectl describe pod -n (查看 Events、镜像拉取、挂载、就绪探针等)
- 日志跟踪:kubectl logs -f -n [-c ];多容器用 -c 指定容器名
二、系统层面日志与关键目录
- systemd 服务日志(kubelet、容器运行时)
- 查看 kubelet:journalctl -u kubelet -f
- 查看容器运行时(如 containerd):journalctl -u containerd -f
- 过滤安装关键词:journalctl -b | grep -i ‘kube|containerd|install’
- 组件与 kubelet 数据目录
- 配置:/etc/kubernetes(如 admin.conf、kubelet.conf、manifests 等)
- 日志:/var/log/kubernetes(若组件以 Pod 运行,优先用 kubectl logs)
- 数据:/var/lib/kubelet(运行时状态、卷挂载等)
- 节点就绪探针失败排查
- 检查 kubelet 健康端口:curl -k https://127.0.0.1:10250/healthz;若不通,多为 kubelet 未就绪或证书/端口问题
三、可视化与长期监控
- Kubernetes Dashboard
- 部署:kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
- 本地访问:kubectl proxy,打开 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
- 获取登录 Token(示例):kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep dashboard-admin | awk ‘{print $1}’)
- Prometheus + Grafana
- 快速安装(Helm):helm repo add prometheus-community https://prometheus-community.github.io/helm-charts && helm install prometheus prometheus-community/kube-prometheus-stack
- 访问 Grafana(NodePort 或 Ingress 取决于你的 Service 配置),以 Prometheus 为数据源,导入 Kubernetes 常用面板,观察 节点资源、Pod 状态、控制面组件健康 等
- 日志聚合(可选)
- 使用 ELK/EFK 或 Loki 收集容器与系统日志,便于在安装阶段与运行阶段做统一检索与告警
四、常见卡点与快速判断
- 镜像拉取失败
- 现象:Pod 状态 ImagePullBackOff/ErrImagePull
- 处理:kubectl describe pod -n 查看镜像名与仓库;配置国内镜像源或使用企业私有仓库
- 控制面 Pod CrashLoopBackOff
- 现象:kube-apiserver/etcd 反复重启
- 处理:查看日志与事件定位证书、etcd 数据目录权限、端口占用等
- 节点 NotReady
- 现象:kubectl get nodes 显示 NotReady
- 处理:检查 kubelet 与 容器运行时 服务是否运行、网络与防火墙、以及 /var/lib/kubelet 与 cgroups 配置
- DNS 未就绪
- 现象:应用 Pod 启动但服务发现失败
- 处理:确认 coredns Pod Running 且无 CrashLoop;检查 kube-dns Service 的 ClusterIP 与 Endpoints 是否就绪