在contos7上面综合部署k8s 使用constainerd zabbix监控 和ansible综合控制
3 台虚拟机基础初始化(主机名 / 防火墙 / SELinux / 时间同步)Master 节点安装 Ansible,配置免密、主机清单3 台机器统一安装 Docker、K8s 组件Kubeadm 初始化集群、加入节点、Calico 组网K8s 内部用 yaml 部署 MySQL + Zabbix-Server + Zabbix-WebAnsible 编写 Playbook,一键批量给所有节点装
一、整体架构(先明确)
- K8s 集群:3 节点(1master+2node),1.24+,含 CSI 存储(PVC)
- Ansible 控制节点:独立 VM / 物理机,与 K8s 节点互通、免密 sudo
- Zabbix 组件(容器化部署在 K8s)
- MySQL(StatefulSet + PVC):存储 Zabbix 配置 / 历史数据
- Zabbix Server(Deployment):10051 端口
- Zabbix Web(Deployment + Ingress):80/443
- Zabbix Agent2(DaemonSet):每节点一个,监控节点与容器
- 监控对象:K8s 集群(API、Scheduler、kubelet、Node、Pod)+ 所有主机 / 容器
二、环境准备(所有节点)
2.1 基础环境(所有机器)
需要四台机器 一台独立的ansible 一台master 两台node 注意 部署k8s的机器内存要大于四G 内核大于二
# 关闭防火墙/selinux systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# 时间同步
yum install -y chrony systemctl start chrony && systemctl enable chrony
# 主机名解析(所有节点)
cat >> /etc/hosts << EOF
192.168.1.10 k8s-master
192.168.1.11 k8s-node1
192.168.1.12 k8s-node2
192.168.1.20 ansible-controller
EOF
2.2 Ansible 控制节点配置
# 安装 ansible yum install -y epel-release yum install -y ansible
# 生成 ssh 密钥并分发到所有 K8s 节点(免密)
ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa for ip in 192.168.1.10 192.168.1.11 192.168.1.12; do ssh-copy-id root@$ip done
# 测试免密
ansible all -m ping
2.3 K8s 集群准备(已就绪则跳过)需要提前准备yum源
选择使用 一键更换阿里云的yum源
# 备份原有源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 下载阿里云官方源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 生成缓存
yum clean all && yum makecache
# 所有节点安装 kubeadm/kubelet/kubectl(1.24+)
yum install -y kubeadm-1.24.17-0 kubelet-1.24.17-0 kubectl-1.24.17-0
systemctl enable kubelet
# master 初始化
kubeadm init \
--apiserver-advertise-address=192.168.1.10 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.24.17 \ --service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
# 配置 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://docs.projectcalico.org/v3.25/manifests/calico.yaml
# 加入 node(在 node 执行,用 master 输出的 join 命令)
kubeadm join 192.168.1.10:6443 --token xxx \ --discovery-token-ca-cert-hash sha256:xxx
三、用 Ansible 准备 K8s 环境与依赖
3.1 Ansible Inventory(/etc/ansible/hosts)
[k8s-master]
192.168.1.10
[k8s-nodes]
192.168.1.11
192.168.1.12
[k8s-cluster:children]
k8s-master
k8s-nodes
3.2 Ansible Playbook:初始化 K8s 节点

ansible-playbook init-k8s.yml
四、K8s 部署 Zabbix(MySQL + Server + Web)
4.1 创建命名空间与存储
kubectl create namespace monitoring
4.2 部署 MySQL(StatefulSet + PVC)
mysql.yaml:


使用命令完成该文件的部署
kubectl apply -f mysql.yaml
4.3 部署 Zabbix Server
zabbix-server.yaml:


使用命令完成部署
kubectl apply -f zabbix-server.yaml
4.4 部署 Zabbix Web 界面
新建 zabbix-web.yaml

部署并查看访问端口:
kubectl apply -f zabbix-web.yaml
kubectl get svc -n monitoring
第五阶段:Ansible 批量给所有机器部署 Zabbix Agent2(核心)
5.1 新建 Ansible 项目目录
mkdir -p /opt/ansible/zabbix-agent/templates
cd /opt/ansible/zabbix-agent
5.2 编写 Agent 配置模板
vi templates/zabbix_agent2.conf.j2
PidFile=/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
Server=192.168.10.10 ServerActive=192.168.10.10
Hostname={{ ansible_hostname }}
5.3 编写 Ansible 部署剧本 deploy-agent.yml
5.4 一键批量部署所有节点
ansible-playbook deploy-agent.yml
第六阶段:Zabbix Web 添加监控主机
- 浏览器登录 Zabbix
- 配置 → 主机 → 创建主机
- 主机名称:k8s-masterIP 地址:192.168.10.10模板链接:选择 Linux by Zabbix agent 2
- 同样方式添加 node1、node2
- 等待 5 分钟,即可看到 CPU、内存、磁盘、网络监控数据。
第七阶段:整体项目总结流程
- 3 台虚拟机基础初始化(主机名 / 防火墙 / SELinux / 时间同步)
- Master 节点安装 Ansible,配置免密、主机清单
- 3 台机器统一安装 Docker、K8s 组件
- Kubeadm 初始化集群、加入节点、Calico 组网
- K8s 内部用 yaml 部署 MySQL + Zabbix-Server + Zabbix-Web
- Ansible 编写 Playbook,一键批量给所有节点装 Zabbix Agent
- Zabbix 页面添加主机、绑定模板、查看监控、配置告警
更多推荐


所有评论(0)