从 0 到 1:使用 Ansible 自动化部署 Kubernetes 集群


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 部署呢?欢迎留言交流!

原文链接:,转发请注明来源!