温馨提示×

Debian上K8s部署后如何进行维护

小樊
54
2025-10-06 14:10:18
栏目: 智能运维

Debian上K8s部署后的维护指南

1. 系统基础维护

  • 操作系统更新:定期执行sudo apt update && sudo apt upgrade -y更新Debian系统包,修复安全漏洞;禁止随意升级内核版本(Kubernetes对内核版本有严格要求,升级前需参考官方兼容性列表)。
  • 关闭Swap分区:Kubelet要求节点关闭swap,执行sudo swapoff -a并修改/etc/fstab文件注释swap行,确保kubelet正常运行。
  • 防火墙配置:开放Kubernetes关键端口(如API Server的6443端口、kubelet的10250/10255端口、etcd的2379/2380端口),使用ufwiptables管理规则,避免网络隔离导致集群通信失败。

2. 集群状态监控

  • 命令行工具:使用kubectl高频检查集群状态:
    • kubectl get nodes:查看节点就绪状态(Ready/NotReady);
    • kubectl get pods --all-namespaces:查看所有Pod的运行状态(Running/Pending/CrashLoopBackOff等);
    • kubectl top nodes/kubectl top pods:查看节点和Pod的资源使用情况(需提前安装Metrics Server)。
  • 可视化监控工具
    • Prometheus+Grafana:部署Prometheus Operator收集集群指标(如节点CPU/内存、Pod资源使用、etcd性能),通过Grafana导入Kubernetes仪表盘(如kube-state-metrics、node-exporter),实现可视化监控与告警;
    • Kubernetes Dashboard:部署官方Dashboard(kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml),通过Web界面管理集群资源(需配置kubectl proxy或Ingress暴露);
    • cAdvisor/node-exporter:cAdvisor内置在kubelet中,无需额外安装,用于监控容器资源;node-exporter以DaemonSet形式部署,收集节点级指标(CPU、内存、磁盘)。

3. 日志管理

  • 集中式日志收集:使用EFK Stack(Elasticsearch+Fluentd+Kibana)或Loki+Promtail+Grafana收集集群日志:
    • Fluentd作为 DaemonSet 运行在每个节点上,收集容器、kubelet、系统日志并发送至Elasticsearch;
    • Kibana或Grafana用于日志检索、分析与可视化,快速定位Pod崩溃、节点异常等问题。

4. 安全加固

  • RBAC配置:通过kubectl create role/kubectl create clusterrole定义细粒度权限,限制用户/服务账户仅能访问必要资源(如禁止普通用户删除Namespace)。
  • 网络策略:使用Calico、Flannel等网络插件配置NetworkPolicy,限制Pod间非必要通信(如仅允许同一Namespace内的Pod访问数据库Pod)。
  • 证书管理:使用Cert-Manager自动化管理TLS证书(如etcd、API Server、Ingress),确保证书不过期;定期轮换证书(kubeadm certs renew命令)。
  • etcd备份:etcd是Kubernetes的核心数据存储,定期使用etcdctl snapshot save命令备份数据(如每天凌晨),并将备份文件存储至异地(如S3、NFS)。

5. 组件更新与升级

  • 系统包更新:定期执行sudo apt update && sudo apt upgrade -y更新Kubernetes组件(kubelet、kubeadm、kubectl),但禁止跳过大版本(如从1.22直接升级到1.24)。
  • 集群升级步骤
    • 备份数据:升级前备份etcd数据(etcdctl snapshot save /backup/etcd-snapshot.db)和Kubernetes配置文件(/etc/kubernetes/manifests/etc/kubernetes/admin.conf);
    • 升级Master节点:使用kubeadm upgrade apply <target-version>命令升级Master节点,等待升级完成后再升级工作节点;
    • 升级工作节点
      1. Drain节点:kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data,将Pod驱逐至其他节点;
      2. 升级组件:sudo apt install -y kubelet=<target-version>-0 kubeadm=<target-version>-0 kubectl=<target-version>-0
      3. 重启kubelet:sudo systemctl daemon-reload && sudo systemctl restart kubelet
      4. Uncordon节点:kubectl uncordon <node-name>,恢复节点调度;
    • 验证升级:使用kubectl version检查集群版本,kubectl get nodes确认所有节点状态为Ready。

6. 备份与恢复

  • 关键数据备份:除etcd外,还需备份Namespace、Deployment、Service、ConfigMap等配置文件(kubectl get <resource> -o yaml > <resource>.yaml),存储至版本控制系统(如Git)或异地存储。
  • 恢复测试:定期模拟灾难场景(如删除etcd数据、删除Namespace),使用备份文件恢复集群(如etcdctl snapshot restore恢复etcd,kubectl apply -f <resource>.yaml恢复配置),确保备份有效性。

7. 文档与培训

  • 文档记录:详细记录集群部署流程(如kubeadm init参数、网络插件配置)、节点信息(IP、角色、硬件规格)、配置变更(如修改Service CIDR、调整ResourceQuota),便于后续维护与故障排查。
  • 团队培训:针对运维团队开展Kubernetes基础培训(如kubectl常用命令、Dashboard使用、监控告警配置),提升团队整体维护能力。

0