首页主机资讯如何在 Ubuntu 上实现 Kubernetes 自动化运维

如何在 Ubuntu 上实现 Kubernetes 自动化运维

时间2025-11-19 13:31:05发布访客分类主机资讯浏览1027
导读:在 Ubuntu 上实现 Kubernetes 自动化运维 一、总体架构与工具选型 基础设施即代码与集群生命周期:用 Ansible 批量初始化节点、安装 containerd/kubeadm/kubelet,或用 Kubespray(基...

在 Ubuntu 上实现 Kubernetes 自动化运维

一、总体架构与工具选型

  • 基础设施即代码与集群生命周期:用 Ansible 批量初始化节点、安装 containerd/kubeadm/kubelet,或用 Kubespray(基于 Ansible)部署高可用集群,统一版本与配置,便于重复搭建与扩缩容。
  • 应用交付与 GitOps:用 Helm 管理应用包与版本;用 ArgoCD 实现 GitOps,配置即代码、自动同步、回滚与审计。
  • 可观测性:部署 Metrics Server 提供 HPA 指标;用 Prometheus + Grafana 做指标监控与可视化;用 EFK/ELK 做集中日志采集与分析。
  • CI/CD:在 Jenkins 中构建镜像、推送到镜像仓库,并通过插件或 ArgoCD 将应用自动部署到集群,实现从代码提交到上线的自动化流水线。

二、快速落地步骤

  • 环境准备(Ubuntu 22.04/24.04)
    • 关闭交换分区并持久化:sudo swapoff -a & & sudo sed -i '/ swap / s/^/#/' /etc/fstab
    • 安装容器运行时 containerd 并启用:sudo apt install -y containerd & & sudo systemctl enable --now containerd
    • 安装 kubeadm/kubelet/kubectl(指定稳定版本,如 1.28.x),并 sudo systemctl enable kubelet
  • 集群初始化与网络
    • 主节点初始化:sudo kubeadm init --pod-network-cidr=**192.168.0.0/16** --apiserver-advertise-address=< 主节点IP>
    • 配置 kubectl:mkdir -p $HOME/.kube & & sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config & & sudo chown $(id -u):$(id -g) $HOME/.kube/config
    • 安装网络插件(如 Calico):kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml
    • 工作节点加入:sudo kubeadm join < 主节点IP> :6443 --token < token> --discovery-token-ca-cert-hash sha256:< hash>
  • 应用交付与扩缩容
    • Helm 安装常用应用(如 Nginx):helm repo add bitnami https://charts.bitnami.com/bitnami & & helm install my-nginx bitnami/nginx
    • 配置 HPA(需先部署 Metrics Server):kubectl autoscale deployment my-nginx --cpu-percent=50 --min=2 --max=10
  • 监控与日志
    • 部署 Prometheus + Grafana(可用 kube-prometheus 清单一键部署),在 Grafana 导入 Kubernetes/Node/ Pod 等官方仪表盘
    • 部署 EFK(Elasticsearch/Fluentd/Kibana)或 ELK,收集容器与节点日志,便于检索与告警。

三、自动化与 GitOps 流水线

  • Git 仓库结构建议
    • infra/:Ansible/Kubespray、kubeadm 配置、网络插件清单
    • apps/:按业务划分目录,含 Helm 或 Kustomize 模板
    • argocd/:ArgoCD Application/AppProject 清单
  • ArgoCD 落地
    • 在集群安装 ArgoCD;在 Git 中定义 Application(指向 apps/< svc> / 与目标 namespace),ArgoCD 自动同步、展示状态、支持回滚
  • Jenkins 流水线示例(关键片段)
    • 构建与推送:docker build -t < repo> /myapp:$BUILD_ID . & & docker push < repo> /myapp:$BUILD_ID
    • 部署到集群:使用 ArgoCD 同步(推荐)或在 Jenkins 中 kubectl set image deployment/myapp myapp=< repo> /myapp:$BUILD_ID -n < ns>
    • 质量门禁:单测/镜像扫描/安全基线,失败则阻断上线。

四、生产级最佳实践

  • 高可用与控制平面:多 master + vIP/负载均衡,对外暴露 apiserver 地址,定期演练故障切换
  • 安全加固:启用 RBAC 最小权限、镜像仓库与镜像签名校验、Pod Security Admission/OPA Gatekeeper、网络策略(如 Calico 策略)、Secret 使用 SealedSecret/SOPS
  • 存储与备份:为 StatefulSet 配置 PV/PVC 与备份策略;定期备份 etcd(快照与恢复演练),确保可恢复性
  • 升级与变更:遵循 kubeadm 升级流程,先在测试环境验证;变更走 GitOps 审批与审计链路,回滚可用 ArgoCD 一键回退
  • 可观测性:为关键业务设置 SLO/告警规则,日志保留与冷热分层,指标长期存储与容量规划。

五、常见问题快速排查

  • Pod 处于 Pending:检查节点资源、污点与容忍、持久卷、调度约束;kubectl describe pod < pod> -n < ns> kubectl get events -A
  • 服务无法访问:核对 Service/EndpointsNodePort/Ingress 配置与防火墙;kubectl get svc,ep < svc> -n < ns> ;从集群内外分别 curl 验证
  • 节点 NotReady:查看 kubelet 与容器运行时状态、网络插件 Pod 是否就绪、节点资源与系统内核参数。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在 Ubuntu 上实现 Kubernetes 自动化运维
本文地址: https://pptw.com/jishu/751118.html
Debian中Node.js运行出错怎么办 如何在 Ubuntu 上进行 Kubernetes 调试

游客 回复需填写必要信息