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

相关推荐
CeshirenTester2 小时前
Playwright元素定位详解:8种定位策略实战指南
人工智能·功能测试·程序人生·单元测试·自动化
世岩清上3 小时前
AI驱动的智能运维:从自动化到自主化的技术演进与架构革新
运维·人工智能·自动化
守城小轩4 小时前
基于Chrome140的Quora账号自动化——运行脚本(三)
运维·自动化·chrome devtools·指纹浏览器·浏览器开发
ascarl20105 小时前
Kubernetes 环境 NFS 卡死问题排查与解决纪要
云原生·容器·kubernetes
流形填表6 小时前
AI如何做SEO?
运维·人工智能·自动化·seo
[J] 一坚6 小时前
Shell 脚本解锁 curl/iptables/Nginx 日志分析等实战用法
linux·服务器·正则表达式·系统架构·自动化
CodeCraft Studio7 小时前
用“录制宏”轻松实现文档自动化:ONLYOFFICE 宏功能实践解析
运维·自动化·onlyoffice·录制宏·创建宏·文档自动化·文档协同
谷隐凡二7 小时前
etcd在Kubernetes中的作用简单介绍
数据库·kubernetes·etcd
m0_569531017 小时前
《K8s 网络入门到进阶:Service 与 Ingress 原理、部署方案及核心区别对比》
网络·容器·kubernetes
The star"'7 小时前
02-Ansible 基本使用
运维·云计算·ansible