Kubernetes(K8s)是现代云原生应用的核心,而 Ansible 作为强大的自动化工具,可以帮助我们快速部署和管理 Kubernetes 集群。本篇文章将介绍如何使用 Ansible 从零开始部署一个高可用的 K8s 集群。
2. 为什么选择 Ansible 来部署 Kubernetes?
o 无代理架构:Ansible 通过 SSH 远程执行,无需在目标服务器安装额外软件。
o 可重复性:定义 YAML 编写的 Playbook,确保每次部署的一致性。
o 高效运维:Ansible 可用于管理 K8s 集群,简化运维流程。
3. 环境准备
在部署 Kubernetes 之前,需要准备:
o 3 台或以上的 Linux 服务器(Ubuntu 20.04 / CentOS 7)。
o 每台服务器配置:
o CPU:2 核以上
o RAM:4GB 以上
o 磁盘:50GB 以上
o Ansible 控制节点(本机)
o 目标节点(Kubernetes 主节点和工作节点)
o 开放防火墙端口(6443、2379-2380、10250-10255)
4. 安装 Ansible
在控制节点(Ansible 服务器)上:
sudo apt update && sudo apt install -y ansible # Ubuntu
sudo yum install -y epel-release ansible # CentOS
5. 创建 Ansible 清单文件
在 /etc/ansible/hosts 添加:
[k8s-master]
master ansible_host=192.168.1.100 ansible_user=root
[k8s-nodes]
node1 ansible_host=192.168.1.101 ansible_user=root
node2 ansible_host=192.168.1.102 ansible_user=root
测试 SSH 连接:
ansible -m ping all
6. 编写 Ansible Playbook
创建 install-k8s.yml:
- hosts: all
become: true
tasks:
- name: 关闭 Swap
command: swapoff -a
- name: 加载必要的内核模块
shell: |
modprobe overlay
modprobe br_netfilter
执行 Playbook:
ansible-playbook install-k8s.yml
7. 安装 Kubernetes 组件
创建 install-k8s-tools.yml:
- hosts: all
become: true
tasks:
- name: 添加 Kubernetes 源
shell: curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
- name: 安装 kubeadm、kubelet、kubectl
apt:
name: "{{ item }}"
state: present
loop:
- kubeadm
- kubelet
- kubectl
8. 初始化 Kubernetes 集群
在 Master 服务器:
sudo kubeadm init --pod-network-cidr=192.168.1.0/16
保存 kubeadm join 命令,供工作节点加入集群。
9. 配置 Calico 网络
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
10. 验证集群状态
kubectl get nodes
若所有节点状态为 Ready,表示 Kubernetes 集群部署成功!
总结
通过 Ansible,可以一键部署 Kubernetes 集群,大幅提升自动化运维效率。你是否也在使用 Ansible 进行 Kubernetes 部署呢?欢迎留言交流!