温馨提示×

centos k8s安装后如何管理

小樊
51
2025-10-17 21:04:38
栏目: 智能运维

CentOS上Kubernetes集群管理指南

1. 集群基础运维

  • 节点管理:通过kubeadm join命令将Worker节点加入集群(需提前在Master节点获取Join命令);使用kubectl get nodes查看节点状态,kubectl drain <node-name>安全排空节点(用于维护或升级),kubectl uncordon <node-name>重新启用节点。
  • 核心组件维护:定期检查kube-apiserver、kube-controller-manager、kube-scheduler等Master组件状态(kubectl get pods -n kube-system);确保kubelet服务正常运行(systemctl status kubelet),日志通过journalctl -u kubelet查看。

2. 监控与告警

  • 指标监控:部署Prometheus(收集集群指标,如CPU、内存、Pod状态)+ Grafana(可视化指标,支持自定义仪表盘),通过kube-state-metrics暴露Kubernetes资源状态(如Deployment副本数、PersistentVolume使用量),cAdvisor收集容器级资源数据。
  • 日志管理:使用EFK(Elasticsearch+Fluentd+Kibana)或Loki堆栈收集、存储、分析日志:Fluentd作为数据收集器(从节点和Pod收集日志),转发至Elasticsearch存储,Kibana实现日志查询与可视化;也可通过kubectl logs <pod-name>查看单Pod日志,journalctl -u kubelet查看Kubernetes组件日志。
  • 告警配置:通过Prometheus的Alertmanager设置告警规则(如节点宕机、Pod未就绪超过5分钟),支持邮件、Slack等方式通知运维人员。

3. 安全管理

  • 访问控制:启用RBAC(基于角色的访问控制),通过Role(命名空间级权限)或ClusterRole(集群级权限)定义权限,结合RoleBindingClusterRoleBinding绑定用户/组;例如创建“pod-reader”角色允许查看指定命名空间的Pod。
  • 网络隔离:使用NetworkPolicy限制Pod间通信(默认拒绝所有流量),例如仅允许同一命名空间内带有“app=frontend”标签的Pod访问“app=backend”标签的Pod。
  • 镜像安全:使用Trivy或Clair扫描镜像漏洞(如CVE),禁止未修复的高危漏洞镜像部署;配置镜像仓库白名单(仅允许信任的仓库镜像)。
  • 证书管理:定期更新Kubernetes组件证书(如kube-apiserver证书),可使用Cert-Manager自动化证书颁发与管理(支持Let’s Encrypt等CA)。

4. 应用生命周期管理

  • 部署与更新:使用Deployment管理应用(支持滚动更新、回滚),例如通过kubectl apply -f nginx-deployment.yaml创建Deployment;滚动更新时修改镜像版本(kubectl set image deployment/nginx-deployment nginx=nginx:1.25),kubectl rollout status deployment/nginx-deployment查看更新状态,kubectl rollout undo deployment/nginx-deployment回滚到上一版本。
  • 扩缩容:通过kubectl scale deployment/nginx-deployment --replicas=5手动扩缩容,或配置Horizontal Pod Autoscaler(HPA)根据CPU/内存使用率自动调整Pod数量(如kubectl autoscale deployment/nginx-deployment --cpu-percent=80 --min=2 --max=10)。
  • 服务暴露:使用Service暴露应用(ClusterIP用于集群内访问、NodePort用于外部访问、LoadBalancer用于云厂商负载均衡),例如kubectl expose deployment/nginx-deployment --type=LoadBalancer --port=80

5. 备份与恢复

  • etcd备份:etcd是Kubernetes集群的核心数据存储(存储集群状态、配置),定期使用etcdctl snapshot save /var/lib/etcd/backup.db创建快照(需进入etcd容器执行);备份文件需存储在安全位置(如异地存储、对象存储)。
  • 应用数据恢复:对于有状态应用(如MySQL、MongoDB),使用PersistentVolume(PV)+ PersistentVolumeClaim(PVC)确保持久化存储,备份PV中的数据(如通过rsync或云厂商快照功能);灾难恢复时,恢复etcd快照并重新部署应用,挂载备份的PV。

6. 可视化管理工具

  • 命令行工具kubectl是核心命令行工具,支持集群管理(kubectl create/delete)、资源查询(kubectl get/describe)、日志查看(kubectl logs)等;常用技巧:kubectl alias创建别名(如alias kgp='kubectl get pods'),kubectl explain查看资源定义。
  • 图形化工具
    • Lens:跨平台的Kubernetes IDE,支持多集群管理、实时资源监控、内置终端、权限管理,适合企业级运维。
    • K9s:终端UI工具,通过快捷键(如:p查看Pod日志、d删除资源)快速管理集群,适合习惯终端的用户。
    • Kuboard:国产免费工具,支持多集群、监控套件(CPU/内存/磁盘)、日志套件(Elasticsearch集成)、权限管理,界面简洁易用。

7. 性能优化

  • 资源分配:为Pod设置合理的resources.requests(请求资源)和resources.limits(限制资源),避免Pod占用过多资源导致节点不稳定;例如resources.requests.cpu="500m", resources.limits.cpu="1"
  • 调度优化:使用affinity(亲和性)将Pod调度到指定节点(如靠近数据节点),anti-affinity(反亲和性)将Pod分散到不同节点(提高可用性);例如spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].key="disktype", spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].operator="In", spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[0].matchExpressions[0].values=["ssd"]
  • 自动伸缩:配置Vertical Pod Autoscaler(VPA)自动调整Pod资源请求(基于历史使用数据),减少手动调整频率;结合Cluster Autoscaler(集群自动伸缩)根据负载自动增加/减少节点数量。

0