从零构建高可用Kubernetes集群:Ansible自动化部署实战指南
为什么我们需要自动化部署Kubernetes集群?
在云原生时代,Kubernetes已经成为容器编排的事实标准。然而,手动部署一个高可用的Kubernetes集群仍然是一项复杂且容易出错的任务。想象一下,你需要重复执行数十个步骤,在多台服务器上配置系统参数、安装依赖、部署组件——这不仅耗时,而且几乎不可能保证环境的一致性。
这正是Ansible这类自动化工具大显身手的地方。通过Ansible,我们可以将整个部署过程编码化,实现一键部署、版本控制和可重复执行。更重要的是,当我们需要扩展集群或重建环境时,自动化部署能节省大量时间和精力。
1. 环境准备与Ansible基础配置
1.1 基础设施规划
在开始之前,我们需要明确集群的架构设计。一个典型的高可用Kubernetes集群包含以下组件:
- 3个Master节点:运行控制平面组件(API Server、Controller Manager、Scheduler等)
- N个Worker节点:运行业务工作负载
- 负载均衡层:使用Haproxy+Keepalived实现API Server的高可用
- 网络插件:Calico、Flannel等提供Pod间通信
以下是一个示例的主机清单表格:
| 主机名 | IP地址 | 角色 | 备注 |
|---|---|---|---|
| master01 | 192.168.1.1 | Master + LB | 同时运行Haproxy |
| master02 | 192.168.1.2 | Master + LB | 同时运行Haproxy |
| master03 | 192.168.1.3 | Master + LB | 同时运行Haproxy |
| worker01 | 192.168.1.4 | Worker | 运行业务Pod |
| worker02 | 192.168.1.5 | Worker | 运行业务Pod |
| vip | 192.168.1.100 | 虚拟IP | 由Keepalived管理 |
1.2 Ansible环境配置
首先,我们需要在控制节点(可以是你的本地开发机或其中一台Master节点)上安装Ansible:
# 在Ubuntu/Debian上
sudo apt update && sudo apt install -y ansible
# 在CentOS/RHEL上
sudo yum install -y epel-release
sudo yum install -y ansible
创建Ansible项目目录结构:
k8s-cluster/
├── inventories/
│ ├── production/
│ │ ├── group_vars/
│ │ ├── host_vars/
│ │ └── hosts
│ └── staging/
├── roles/
│ ├── common/
│ ├── docker/
│ ├── haproxy/
│ ├── keepalived/
│ ├── kubernetes/
│ └── calico/
└── playbooks/
├── site.yml
├── master.yml
└── worker.yml
配置inventories/production/hosts文件:
[masters]
master01 ansible_host=192.168.1.1
master02 ansible_host=192.168.1.2
master03 ansible_host=192.168.1.3
[workers]
worker01 ansible_host=192.168.1.4
worker02 ansible_host=192.168.1.5
[load_balancers:children]
masters
[kube_cluster:children]
masters
workers
2. 系统基础配置自动化
2.1 操作系统通用配置
创建roles/common/tasks/main.yml文件,包含所有节点都需要的基础配置:
2568


&spm=1001.2101.3001.11974&articleId=160702514&d=1&t=3&u=ce894a1769b048d0a472669ca460954a)

被折叠的 条评论
为什么被折叠?



