温馨提示×

Ubuntu Kubernetes 自动化运维怎么做

小樊
34
2026-01-05 05:00:09
栏目: 智能运维

Ubuntu 上落地 Kubernetes 自动化运维的路线图


一 基础架构自动化

  • 使用 Ansible 编排 Ubuntu 节点初始化与组件安装,保证一致性与可重复部署。
    • 典型步骤:禁用 Swap、加载内核模块 overlay/br_netfilter、安装 containerd 并生成默认配置、安装指定版本的 kubeadm/kubelet/kubectl、启用 kubelet。
    • 示例(Playbook 片段):
      • name: 关闭 Swap command: swapoff -a
      • name: 加载内核模块 shell: | modprobe overlay modprobe br_netfilter
      • name: 安装 containerd apt: name=containerd state=present
      • name: 生成 containerd 配置 shell: containerd config default | tee /etc/containerd/config.toml
      • name: 重启并启用 containerd service: name=containerd state=restarted enabled=yes
      • name: 安装 kubeadm/kubelet/kubectl apt: name={{ item }} state=present loop: [kubeadm,kubelet,kubectl]
      • name: 启用 kubelet service: name=kubelet enabled=yes
  • 使用 kubeadm 初始化集群并安装网络插件(如 Calico),随后加入工作节点。
    • 初始化示例:
      • kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=<MASTER_IP> --control-plane-endpoint=<VIP_or_MASTER_IP>
    • 安装 Calico(与上面 Pod CIDR 保持一致):
      • kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml
    • 工作节点加入:
      • kubeadm join <MASTER_IP>:6443 --token --discovery-token-ca-cert-hash
  • 端口与安全基线(防火墙仅放通必要端口,生产建议配合 RBAC/认证镜像签名 等加固)。

二 应用交付自动化

  • Git 仓库 为唯一可信源,采用 GitOps 流水线(如 Argo CD/Flux)或 Jenkins/GitLab CI 驱动交付。
    • 流程要点:代码提交 → 构建镜像(含 语义化版本Commit SHA)→ 推送到镜像仓库 → 更新 Helm/Kustomize 清单或 GitOps 应用定义 → 自动同步到集群 → 健康检查与回滚。
  • Helm 管理复杂应用与版本化发布,结合 Helmfile 做多环境编排与批量操作。
    • 常用命令:
      • helm repo add stable https://charts.helm.sh/stable
      • helm upgrade --install myapp stable/mychart -f values-prod.yaml --atomic --create-namespace
  • Kustomize 做环境差异化(dev/staging/prod)与 SealedSecrets 管理密钥,避免明文落地。
  • 示例 Bash 自动化脚本(适合小规模或过渡阶段):
    • 部署并等待就绪:
      • kubectl apply -f deployment.yaml
      • kubectl rollout status deployment/myapp-deployment
      • kubectl get pods
    • 参数化与错误处理(示例):
      • if [ -z “$1” ]; then echo “用法: $0 ”; exit 1; fi
      • kubectl apply -f “$1” || { echo “部署失败”; exit 1; }
      • kubectl rollout status deployment/myapp-deployment || { echo “发布失败”; exit 1; }

三 可观测性与自愈

  • 监控与告警:部署 Prometheus + Grafana(如 kube-prometheus-stack),覆盖 节点/Pod/控制面 关键指标,配置 CPU/内存/存储/网络Pod CrashLoopBackOff 等告警规则。
    • Helm 安装示例:
      • helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
      • helm install kube-prometheus prometheus-community/kube-prometheus-stack
  • 日志管理:使用 EFK(Elasticsearch/Fluent Bit/Kibana) 或 Loki+Promtail 收集容器日志,建立 索引/保留策略错误关键字 告警。
  • 可视化巡检:使用 k9s 快速查看资源、日志与事件,配合 Popeye 做配置与健康扫描。
  • 自动扩缩容:
    • HPA(基于 CPU/内存/自定义指标):kubectl autoscale deployment myapp --cpu-percent=50 --min=2 --max=10
    • VPA(垂直伸缩,建议测试环境先行)
    • KEDA(事件驱动伸缩,适配 Kafka/Prometheus/HTTP 等触发器)

四 备份恢复与高可用

  • 证书与关键配置备份:
    • 定期备份 /etc/kubernetes/pki 目录(证书轮换窗口内完成)。
  • etcd 快照与恢复(控制面节点执行):
    • 快照保存:
      • ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379
        –cacert=/etc/kubernetes/pki/etcd/ca.crt
        –cert=/etc/kubernetes/pki/apiserver-etcd-client.crt
        –key=/etc/kubernetes/pki/apiserver-etcd-client.key
        snapshot save /backup/etcd-$(date +%F).db
    • 快照恢复(按官方步骤先停控制面组件,恢复后重启)。
  • 高可用建议:
    • 控制平面:至少 3 台 Master,前置 Keepalived/VIP云负载均衡;对外暴露 API Server 6443
    • 工作节点:跨机架/可用区分布;为 NodePort 服务规划非冲突端口段(默认 30000–32767)。

五 平台化与日常运维

  • 平台化工具选型(可视化管理与多集群能力):
    • Rancher:多集群/项目/用户与认证集成、监控与日志套件、应用商店。
    • KubeSphere:多租户、DevOps 流水线、可观测、日志审计、服务网格等一体化能力。
    • KubeOperator:轻量级发行版,规划/部署/运营生产级集群,支持离线环境与扩容。
  • 日常巡检与合规:
    • 巡检清单:节点 ReadyPod Crash/重启PVC/PV 绑定镜像拉取失败节点资源压力控制面组件 CrashLoop
    • 合规与加固:启用 RBACPod SecurityNetworkPolicy镜像仓库可信源最小权限 ServiceAccountSecrets 加密审计日志
  • 建议的落地顺序:
    • 第1阶段:用 Ansible 自动化部署与扩容,统一基线;
    • 第2阶段:引入 GitOpsHelm/Kustomize,打通 CI/CD;
    • 第3阶段:上线 监控/日志/告警HPA/KEDA,完善可观测与弹性;
    • 第4阶段:建设 备份/恢复 演练与 平台化(Rancher/KubeSphere/KubeOperator)。

0