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

相关推荐
2501_9159090615 小时前
原生 iOS 开发全流程实战,Swift 技术栈、工程结构、自动化上传与上架发布指南
android·ios·小程序·uni-app·自动化·iphone·swift
啊啊啊啊84315 小时前
Kubernetes 1.20集群部署
云原生·容器·kubernetes
morning_sir_jking17 小时前
深入解析 kube-proxy:Kubernetes 服务发现的网络基石
网络·kubernetes·服务发现
紧固视界18 小时前
机械臂装配自动化推动紧固件设计革新
运维·自动化
忧郁的橙子.19 小时前
十二、kubernetes 1.29 之 存储 Volume、pv/pvc
云原生·容器·kubernetes
霍小毛19 小时前
Kubernetes云平台管理实战:滚动升级与秒级回滚
java·容器·kubernetes
小诸葛的博客20 小时前
k8s lease使用案例
云原生·容器·kubernetes
红尘客栈221 小时前
Kubernetes 集群调度
java·linux·网络·容器·kubernetes
m0_464608261 天前
Kubernetes 集群调度与PV和PVC
云原生·容器·kubernetes