《Ansible自动化工具篇:ubuntu操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》

一、部署背景

由于业务系统的特殊性,我们需要针对不同的客户环境部署二进制版K8S集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了 基于ansible自动化工具一键远程离线部署进制版K8S集群

说明:如果有兴趣,可以从工具下载中获取下载链接,此工具可帮助你快速了解一个自动化部署工具是如何编写的?

二、工具下载

基于Ubutntu系统使用Ansible一键部署K8S1.24.12二进制集群自动化工具


三、工具介绍

1、工具说明

1、当前一键部署工具仅支持 X86_64架构 Ubuntu操作系统
2、支持 单机、一主多从、两主多从、三主多从等四种部署架构和六种部署模式的二进制K8S离线集群,且 证书有效期为99年
3、支持一键部署、启动、停止、检查、集群备份(etcd)、集群恢复(etcd)、集群移除等功能。
4、支持worker节点一键扩容和移除。
5、支持harbor私有镜像仓库。

说明:支持Centos系统正在开发中,同时后面也会开发出支持ARM架构的K8S二进制自动化部署工具,敬请期待!


2、架构介绍

名称 单master 多master harbor独立部署 etcd独立部署 模式 说明
node1 - 否(单机) 单机模式 仅只需要2台服务器
node2 - 否(单机) 一主多从集群模式一 至少需要3台服务器
node3 - 是(单机) 一主多从集群模式二 至少需要4台服务器
node4 - 是(集群) 两主多从高可用模式 至少需要9台服务器
node5 - 否(集群) 三主多从高可用模式一 至少需要7台服务器
node6 - 是(集群) 三主多从高可用模式二 至少需要10台服务器

说明:harbor独立部署是指额外使用1台服务器部署harbor镜像仓库。etcd独立部署是指部署在非master节点主机上。etcd非独立部署是指部署在master节点上。


3、工具说明

目录结构如下所示:

drwxr-xr-x  3 root root  4096 Jul 24 17:20 ansible/
drwxr-xr-x  3 root root  4096 Jul 24 17:41 cluster/
drwxr-xr-x  8 root root  4096 Jul 21 15:05 example/
drwxr-xr-x 11 root root  4096 Jul 21 14:53 images/
-rwxr-xr-x  1 root root 30659 Jul 21 14:53 op.sh*
drwxr-xr-x  8 root root  4096 Jul 21 14:53 playbooks/
-rwxr-xr-x  1 root root 25639 Jul 25 10:28 README.txt*
drwxr-xr-x 17 root root  4096 Jul 21 14:53 roles/

目录说明如下所示:

#1、ansible目录:存放ansible工具rpm包目录,可一键安装ansible
#2、cluster目录:存放hosts文件和config.yml文件目录,主要配置服务器信息及K8S二进制集群配置信息
#3、example目录:存放hosts文件和config.yml模板文件
#4、images目录:存放K8S二进制集群镜像文件及二进制文件
#5、op.sh:主控脚本
#6、playbooks:K8S二进制集群部署的剧本文件
#7、README.txt:帮助文档
#8、roles目录:K8S二进制集群部署的角色文件

说明:详细的操作,请参考README.txt文件。


四、部署步骤

说明:由于篇幅有限,这里以node6模式为例,像大家介绍K8S二进制高可用集群部署步骤!
《Ansible自动化工具篇:ubuntu操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》_第1张图片

1、生成hosts文件和config.yml文件
在这里插入图片描述


2、编辑hosts文件
《Ansible自动化工具篇:ubuntu操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》_第2张图片


3、编辑config.yml文件

root@k8s-master-101:/opt/kubernetes-tools# vim cluster/node6/config.yml 
# --------------------------------------------------------------------------------------------------- #
# 宿主机最大磁盘空间分区下目录,比如说"/"分区下空间最大,就在"/"分区下创建一个data目录,可根据实际情况修改
MAX_SPACE_DIR: "/data"

# 部署架构类型: three-master-cluster-out-etcd表示三主多从集群模式二,默认不修改
CLUSTER_TYPE: "three-master-cluster-out-etcd"

# kubernetes工作目录,主要用来存放离线镜像及其它部署相关文件,默认不修改 
KUBE_WORK_DIR: "{{ MAX_SPACE_DIR }}/pkgs/kube-tools"

# Binaries Directory,默认不修改
BIN_DIR: "/opt/kube/bin"
# --------------------------------------------------------------------------------------------------- #
# Secure port for apiservers,端口不冲突情况下,默认不修改
SECURE_PORT: "6443"

# [containerd]基础容器镜像,默认不修改
SANDBOX_IMAGE: "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7"

# [coredns]基础容器镜像,默认不修改
COREDNS_IMAGE: "registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.6"

# [containerd]容器持久化存储目录,默认不修改
CONTAINERD_STORAGE_DIR: "{{ MAX_SPACE_DIR }}/basic-data/containerd"

# K8S Service CIDR, not overlap with node(host) networking,可根据实际情况修改
SERVICE_CIDR: "10.96.0.0/16"

# Cluster CIDR (Pod CIDR), not overlap with node(host) networking,可根据实际情况修改
CLUSTER_CIDR: "10.48.0.0/16"

# NodePort Range,可根据实际情况修改
NODE_PORT_RANGE: "30000-32767"

# Cluster DNS Domain,默认不修改
CLUSTER_DNS_DOMAIN: "cluster.local"

# CA and other components cert/key Directory,默认不修改
CA_DIR: "/etc/kubernetes/pki"

# node节点最大pod数,默认不修改
MAX_PODS: 110

# Kubelet 根目录,默认不修改
KUBELET_ROOT_DIR: "/var/lib/kubelet"

# Kube-proxy 根目录,默认不修改
KUBE_PROXY_ROOT_DIR: "/var/lib/kube-proxy"

#  [calico] 隧道模式可选项有: [Always, Never],Always表示IPIP模式,Never表示开启BGP模式,],默认不修改
CALICO_IPV4POOL_IPIP: "Never"

# 默认的IP自动检测方法是first-found,calico会从部署节点路由中获取到达目的ip或者域名的源ip],默认不修改
IP_AUTODETECTION_METHOD: "can-reach={{ groups['kube_master'][0] }}"

# [calico]设置calico 网络backend模式可选项有:[brid, vxlan],默认不修改
CALICO_NETWORKING_BACKEND: "brid"

# etcd 数据目录,默认不修改
ETCD_DATA_DIR: "/var/lib/etcd"
# --------------------------------------------------------------------------------------------------- #
# harbor变量
# [docker]容器存储目录,默认不修改 
DOCKER_STORAGE_DIR: "{{ MAX_SPACE_DIR }}/basic-data/docker"

# harbor主机域名地址,可根据实际情况修改
HARBOR_DOMAIN: "my.harbor.com"

# harbor http端口,端口不冲突情况下,默认不修改
HARBOR_HTTP_PORT: 9000

# harbor https端口,端口不冲突情况下,默认不修改
HARBOR_TLS_PORT: 8443

# harbor仓库地址,默认不修改
HARBOR_REGISTRY: "{{HARBOR_DOMAIN}}:{{HARBOR_TLS_PORT}}"

# harbor web平台管理用户admin密码,可根据实际情况修改
HARBOR_ADMIN_PASSWORD: "NEoCN0YjdGr"

# [harbor]数据存储目录,默认不修改
HARBOR_DATA_DIR: "{{ MAX_SPACE_DIR }}/basic-data/harbor"
# --------------------------------------------------------------------------------------------------- #

4、查看部署帮助信息
《Ansible自动化工具篇:ubuntu操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》_第3张图片

5、执行部署操作
《Ansible自动化工具篇:ubuntu操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》_第4张图片

部署结果,如下图所示:
《Ansible自动化工具篇:ubuntu操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》_第5张图片
harbor主机手动执行,如下图所示:
在这里插入图片描述

K8S集群状态,如下图所示:
《Ansible自动化工具篇:ubuntu操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》_第6张图片


总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:企业级K8s集群运维实战

你可能感兴趣的:(《企业级K8s集群运维实战》,ansible,自动化,kubernetes)