用Ansible写过一键部署脚本,把K8s集群加监控环境的搭建时间从4小时压缩到25分钟。

4小时:手工搭建K8s集群+prometheus监控环境

细节:1.每台机器配置   30*3 主要任务:关闭swap 关闭SELinux 加载内核模块 配置sysctl

2.安装containerd容器   配置yum源、安装、生成配置文件等

3.安装kubeadm/kubelet      

4.初始化Master   

5. 安装calico网络插件     apply网络yaml,等待Pod Runing

6.加入Worker节点      生成join命令,在两台worker上执行

7.验证集群    kubectl get nodes  排查问题等

8.安装Prometheus + Grafana      添加helm repo、安装kube-Prometheus-stack、等待Pod启动

9.配置和调试       

25分钟是怎么做到的?

用Ansible一次性并行执行所有节点的配置任务

我在项目的deploy-k8s.yml里面有这个

# 第一阶段:在所有节点上并行执行common角色
- name: Configure all nodes with common settings
  hosts: all                    # 3台机器同时执行
  roles:
    - common                    # 关swap、关SELinux、装containerd、装kubeadm
# 第二阶段:只在master上执行
- name: Deploy Kubernetes master node
  hosts: masters
  roles:
    - master                   # init集群、装calico、生成join命令
# 第三阶段:只在worker上执行
- name: Deploy Kubernetes worker nodes
  hosts: workers
  roles:
    - worker     

让机器同时执行,而不是一台一台做,可以节省时间2h左右

脚本可以重复执行,不怕中间出错需要重来

ansible-playbook deploy-k8s.yml完成所有步骤

Calico

是什么: K8s集群中最常用的容器网络插件(CNI),负责给每个Pod分配IP并让它们能跨节点通信。

作用:

  • 实现Pod之间的网络互通(跨节点也能ping通)

  • 支持Network Policy(网络策略),可以做微隔离

  • 比Flannel功能更强,支持BGP路由

 Prometheus

是什么: 云原生领域最主流的开源监控和告警系统

作用:

  • 采集指标:从K8s组件、节点、容器拉取CPU、内存、网络等数据

  • 存储时序数据:带时间戳的指标(比如"过去5分钟CPU使用率")

  • 告警:配置规则,比如PodCrashLooping告警

  • 配合Grafana:可视化展示监控大盘

kubeadm

是什么: Kubernetes官方提供的集群安装工具,用来快速搭建一个符合最佳实践的K8s集群。

作用:

  • 初始化Master节点(kubeadm init

  • 生成Worker节点加入集群的命令(kubeadm token create --print-join-command

  • 自动拉取K8s核心组件镜像(kube-apiserver、kube-controller-manager、kube-scheduler、etcd、coredns等)

SELinux

“传统的 Linux 权限是‘用户 + 文件权限’(比如 rwxr-xr-x),但 root 用户几乎什么都能做。如果一个进程被攻破,攻击者就可能拿到整个系统的控制权。

SELinux 提供了更细粒度的控制——哪怕是 root 进程,也只能访问它被允许的资源。”

为什么你的项目里要关掉它?

“K8s 需要访问很多系统资源,SELinux 默认策略可能会阻断容器运行时(containerd)、网络插件(Calico)或者 volume 挂载。在实验环境里,关掉 SELinux 可以避开权限问题快速部署

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐