Kubernetes运维:集群部署与故障排查
·
Kubernetes集群部署与故障排查指南
一、集群部署核心步骤
1. 前置条件检查
- 节点要求:所有节点需满足 $$ \text{CPU} \geq 2\text{核}, \quad \text{内存} \geq 2\text{GB}, \quad \text{磁盘} \geq 20\text{GB} $$
- 系统配置:
# 关闭Swap swapoff -a sed -i '/swap/s/^/#/' /etc/fstab # 设置内核参数 cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF
2. 控制平面部署
kubeadm init --pod-network-cidr=10.244.0.0/16 \
--apiserver-advertise-address=<MASTER_IP>
3. 网络插件配置(Calico示例)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
4. 工作节点加入
kubeadm join <MASTER_IP>:6443 --token <TOKEN> \
--discovery-token-ca-cert-hash sha256:<HASH>
二、故障排查工具箱
1. 资源状态检查
# 查看集群健康状态
kubectl get componentstatuses
# 节点资源监控
kubectl top nodes
2. Pod故障诊断
# 查看Pod事件(关键)
kubectl describe pod <pod-name> -n <namespace>
# 实时日志追踪
kubectl logs -f <pod-name> --tail=100
3. 网络连通性测试
# 创建诊断容器
kubectl run debug-tool --image=busybox:1.28 --rm -it --restart=Never -- sh
# 容器内执行
ping <service-ip>
nslookup <service-name>
telnet <service-ip> <port>
4. 证书过期处理
# 检查证书有效期
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -enddate
# 自动更新证书
kubeadm alpha certs renew all
三、常见故障场景处理
| 故障现象 | 排查命令 | 解决方案 |
|---|---|---|
| Pod卡在Pending状态 | kubectl describe pod <name> | 检查资源配额/节点污点 |
| Service无法访问 | kubectl get endpoints | 验证Endpoint与Label匹配 |
| DNS解析失败 | kubectl exec -it dnsutils -- nslookup kubernetes.default | 重启CoreDNS Pod |
| 节点NotReady | journalctl -u kubelet -f | 检查kubelet日志/证书更新 |
四、运维最佳实践
-
集群监控
- 部署Prometheus+Grafana监控体系
- 设置关键指标告警:节点内存使用率 $> 85%$,Pod重启次数 $> 5/\text{小时}$
-
灾难恢复
# 定期备份etcd ETCDCTL_API=3 etcdctl snapshot save snapshot.db \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key -
安全加固
- 启用RBAC:$ \text{最小权限原则} $
- 定期扫描镜像漏洞
- 配置NetworkPolicy网络隔离
关键提示:当遇到无法定位的故障时,使用
kubectl get events --sort-by=.metadata.creationTimestamp -A按时间序列查看集群事件,往往能发现隐藏的错误线索。对于复杂网络问题,建议结合tcpdump抓包分析:tcpdump -i <interface> -nn port <port>
更多推荐



所有评论(0)