Ansible 自动化部署K8S1.34.1

Kubernetes 安装与配置自动化

项目简介

  • 该项目使用 Ansible 来自动化部署和配置 Kubernetes 集群,包含多个角色和任务,支持高可用性部署,并集成了一些常用的 Kubernetes 插件(如 Calico、CoreDNS、Helm 等)。项目中的主要目标是通过精心设计的 site.yml 和相关的 Ansible 角色(roles)来简化 Kubernetes 集群的安装与配置。
  • Ansible 脚本配置过程完全按照这个文档编写:https://blog.csdn.net/qq_39965541/article/details/151965990?spm=1011.2415.3001.5331
  • 脚本用到的所有安装包下载地址:https://pan.baidu.com/s/19iY9wQrCxC7hX6kHBrcALA?pwd=i25f (下载下来放到 packages 目录即可,再本页面下载的不用直接下载下来就是全量的安装包)
  • githup 项目地址 :git@github.com:peopleurl/ansible-k8s-bootstrap.git

目录结构

复制代码
ansible-k8s-1.34.1/
├──  packages                   # K8S 相关的安装包  (这个安装包  比较大已经其放到百度云 下载下来解压覆盖这个目录即可)
├── group_vars/
      └── all.yml               # 全局变量配置 (写的着急 只添加了一部分变量)
├── inventory/                  # 存放 K8S 清单文件(inventory)
│   └── hosts.yml               # 定义了 Kubernetes 集群的主机信息
├── roles/                      # 存放各个角色的配置
│   ├── ca                      # Kubernetes CA 证书相关配置
│   ├── calico                  # Calico 网络插件
│   ├── copy-ca                 # 复制 CA 证书到各节点
│   ├── coredns                 # CoreDNS 插件
│   ├── cri                     # 配置容器运行时
│   ├── etcd                    # ETCD 集群配置
│   ├── ha                      # 高可用性配置(Keepalived+Haproxy)
│   ├── helm                    # Helm 包管理工具配置
│   ├── ingress-nginx           # Ingress Nginx 控制器配置
│   ├── kube-master             # 主节点配置
│   ├── kube-node               # 工作节点配置
│   ├── Metrics                 # 集群监控(Metrics)配置
│   └── prepare                 # 集群准备工作(如依赖安装等)
├── site.yml                    # Ansible 主 playbook 文件
└── README.md                   # 脚本说明文件

安装与使用

系统要求

  • 支持 Ansible 的操作系统
  • 需要提前升级内核版本到4.19以上,或者系统本
  • 我当前的系统版本:AlmaLinux release 10.0 内核:6.12.0-55.9.1.el10_0.x86_64
  • Centos7 系统不能用,这个系统再启动 containerd 时候会报错 尽量使用最新的linux系统去安装

安装 Ansible

我当前使用的系统,如果需要部署多个节点 比如10个以上 需要增加 ansible 主机配置要不会特别卡。

bash 复制代码
AlmaLinux release 10.0 (Purple Lion)
bash 复制代码
dnf install -y epel-release
dnf install -y ansible-core

修改 ansible 配置

bash 复制代码
## 再 /etc/ansible/ansible.cfg 这个文件中 添加这两行
[defaults]
host_key_checking = False

配置清单文件 (hosts.yml)

项目中的清单文件定义了 Kubernetes 集群中各节点的主机名与 IP 地址。根据你的集群环境,修改文件 inventory/hosts.yml 中的 ansible_host 和其他配置项。

yaml 复制代码
##  如果有多个 master 或者 node 节点  按照我那个直接在下面添加即可

all:
  children:
    kube_control_plane:  
      hosts:
        master01:
          ansible_host: 192.168.1.11
          keepalived_state: MASTER
          priority: 100
        master02:
          ansible_host: 192.168.1.12
          keepalived_state: BACKUP
          priority: 90
        master03:
          ansible_host: 192.168.1.13
          keepalived_state: BACKUP
          priority: 80

    kube_node:    如果没有 node 节点将这个删除  并同步修改site.yml 一并删除 kube_node 这个组
      hosts:
        worker01:
          ansible_host: 192.168.1.14
        worker02:
          ansible_host: 192.168.1.15
        worker03:
          ansible_host: 192.168.1.16
    ## etcd 集群是奇数节点 比如 1个 3个  或者5个节点   根据需求修改就行
    etcd_cluster:  ## 如果etcd节点 是和 master 节点再一起的 直接将下面的替换为master节点
      hosts:
        etcd01:
          ansible_host: 192.168.1.17
        etcd02:
          ansible_host: 192.168.1.18
        etcd03:
          ansible_host: 192.168.1.19

执行 Playbook

site.yml 是主要的 Ansible Playbook 文件,包含了多个任务和角色。可以直接运行以下命令来启动自动化配置过程:

bash 复制代码
## 可以再这条命令的末尾加上 -vv   输出详细日志
ansible-playbook -i inventory/hosts.yml site.yml

当前的这个ansible 脚本还不能完全做到离线安装 有几个步骤需要安装相应的工具,如果没有外网可以提前安装如下工具

bash 复制代码
dnf install -y ipvsadm ipset sysstat conntrack libseccomp wget git vim lsof tar unzip zip sysstat nc bash-completion keepalived haproxy
yum install -y ipvsadm ipset sysstat conntrack libseccomp wget git vim lsof tar unzip zip sysstat nc bash-completion keepalived haproxy

角色说明

  • prepare: 执行集群的准备工作,包括安装必要的依赖、配置工具等。
  • cri: 配置容器运行时(Container Runtime Interface),如 Docker 或 containerd。
  • ca: 配置 Kubernetes 集群的 CA 证书。
  • copy-ca: 将 CA 证书分发到各节点。
  • etcd: 配置 ETCD 集群,Kubernetes 的关键数据存储。
  • ha: 配置 Kubernetes 高可用性(Keepalived)。
  • kube-master: 配置 Kubernetes master 节点,安装 API server、controller manager、scheduler 等。
  • kube-node: 配置 Kubernetes 工作节点,安装 Kubelet、KubeProxy 等。
  • calico: 安装并配置 Calico 网络插件,提供网络策略和网络管理功能。
  • coredns: 安装并配置 CoreDNS,作为 DNS 服务提供集群服务发现。
  • helm: 安装并配置 Helm,Kubernetes 的包管理工具。
  • ingress-nginx: 配置 Nginx Ingress Controller,用于管理外部访问。
  • Metrics: 配置监控系统,如 Prometheus、Metrics Server 等。

高可用性配置

site.yml 中,kube_control_plane 组中的节点使用 KeepalivedHA 配置来实现高可用性,确保 Kubernetes master 节点的高可用性。通过 keepalived_statepriority 设置每个 master 节点的状态和优先级。

集群节点配置

集群节点被分为三大组:

  1. kube_control_plane: 主节点,运行 Kubernetes 控制层(API server、controller manager、scheduler 默认我把node相关组件也安装上了 如果不需要删除 这个配置即可 修改这个文件 site.yml 即可)。
  2. kube_node: 工作节点,运行 Kubelet 和容器化应用。
  3. etcd_cluster: ETCD 集群,用于存储 Kubernetes 的所有集群数据。

资源解压密码:1qazxsw2

相关推荐
@Ma38 分钟前
企业微信外部群的消息自动化:从协议层到工程实践
运维·自动化·企业微信
Mr -老鬼1 小时前
2026移动端自动化平台横向对比指南:15+主流平台深度评测,开发者选型必备
运维·自动化·easyclick·移动测试
会Tk矩阵群控的小木1 小时前
小红书矩阵软件:基于Python+ADB的多设备批量管理自动化脚本实战
运维·python·adb·矩阵·自动化·新媒体运营·个人开发
ai_coder_ai1 小时前
使用ocr实现自动化脚本
运维·自动化·ocr
极客先躯2 小时前
高级java每日一道面试题-2026年02月04日-实战篇[Docker]-如何在容器之间共享数据?
java·运维·网络·docker·容器·自动化·高级面试题
开发者联盟league2 小时前
使用jenkins pipeline将项目打包运行在k8s上报错kubectl: Permission denied
java·kubernetes·jenkins
成为你的宁宁2 小时前
【Prometheus Operator 监控 K8S集群的Calico 与 Ingress-Nginx 组件】
kubernetes·prometheus
qq_366566503 小时前
内容出海工具链搭建实战:从0到CI/CD自动化
运维·ci/cd·自动化
如意IT3 小时前
浏览器CDP自动化检测技术-Error和Worker
前端·javascript·自动化·chromium·指纹浏览器
AC赳赳老秦3 小时前
技术文章素材收集自动化:用 OpenClaw 自动爬取行业资讯、技术热点、优质文章
运维·开发语言·python·自动化·wpf·deepseek·openclaw