k8s自动化安装脚本(kubeadm-1.26.3)

这篇具有很好参考价值的文章主要介绍了k8s自动化安装脚本(kubeadm-1.26.3)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

  1. 通过kubeadm进行一键式部署k8s集群
  2. 根据不同的启动方式,可部署单节点、一主多从、多主多从高可用的k8s集群
  3. 通过ansible快速部署k8s的基础组件(helm、nfs、ingress、monitoring【联网|离线镜像】、kuboard)

软件架构

  1. 通过部署包中的run.sh进行统一入口,进行初始化环境(部署节点)
  2. ansible+shell实现自动获取host文件中的相关信息进行自动化部署

版本介绍

  1. 需要提前准备多台主机,根据准备机器的多少,修改host文件,本环境是为了开发环境中快速部署k8s集群
  2. 采用kubeadm安装,重新编译、修改证书时间、默认100年
  3. 安装docker的yum源是基于Centos7.9,版本是:23.0.1
  4. 通过nexus私服进行相关离线环境的管理版本:3.37.3.02
  5. 安装ansible时,使用docker镜像封装,版本: 2.9.27
  6. 安装containerd作为k8s运行时,版本时:1.6.6
  7. 安装helm时,使用离线安装,版本: v3.10.2
  8. 高可用安装时:采用haproxy(1.5.18-9)+keepalived(1.3.5-19)
  9. 添加kuboard:v3面板的安装(ansible)主机:单节点、单容器(待完善)

注意事项

  1. 采用离线安装时,需要注意,因安装集群时需要同步时间,需要提供时间同步服务的地址
  2. 安装监控组件时,只能选择在线的方式,因离线镜像未整合到部署包里
  3. 需要通过脚本提前下载监控组件的镜像,并导入镜像仓库中后方能使用离线的方式启动监控组件
  4. 采用nexus进行统一管理,导致部署包较大且部署节点所需的资源相对较高、不能复用node节点

操作步骤

环境准备

主机名 IP地址 操作系统 配置 作用
k8s-master01 192.168.1.21 CentOS7.9 最低配置2C2G 管理集群
k8s-master02 192.168.1.22 CentOS7.9 最低配置2C2G 管理集群
k8s-master02 192.168.1.23 CentOS7.9 最低配置2C2G 管理集群
k8s-node01 192.168.1.31 CentOS7.9 最低配置2C2G 作业节点
k8s-node02 192.168.1.32 CentOS7.9 最低配置2C2G 作业节点
k8s-node03 192.168.1.33 CentOS7.9 最低配置2C2G 作业节点
ansible 192.168.1.31 CentOS7.9 最低配置2C4G-100G 部署节点(不可复用)

注意

  1. 部署节点通过docker启动nexus服务、nexus服务建议使用CPU是4C
  2. 由于k8s版本是v1.26.3的版本,运行时采用containerd、部署机采用docker导致部署节点不可复用
  3. 注意系统版本,尤其时部署节点、其他系统版本可能会出现docker安装失败的情况

结构

k8s自动化安装脚本(kubeadm-1.26.3)

  1. master节点只能是三个节点(高可用版本),单节点只需填写一个
  2. node节点可以填写多个,根据实际情况确认
  3. 高可用版本keepalived需要提前确认好vip
  4. 建议机器处于同一网段中,或者同一局域网内
备注
  1. 单独找一台机器用于部署ansible服务,不接受复用
  2. 但是需要确保机器资源充足,且相关的端口不会冲突(38081【yum】、38082【registry】)
  3. 相关的网络关系需要提前确认
  4. 三台master节点,可以是2n+1台,目前因本地环境,只测试了三台master其他节点尚未涉及

解压部署包

#上传部署包(xshell)
cd /opt                      #目录随意
yum -y install lrzsz 
rz install_k8s_kubeadm_v1.26.03_20230402.tar.gz
#解压
tar -xvf install_k8s_kubeadm_v1.26.03_20230402.tar.gz

修改host文件

#部署机器,初始脚本、安装包镜像
[deploy_server]
192.168.1.10 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 

#多主多从
[kubernetes_master]
192.168.1.15 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-master01"
192.168.1.18 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-master02"
192.168.1.19 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-master03"


[kubernetes_node]
#192.168.1.18 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-node01"
#192.168.1.13 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-node02"

#双节点
[haproxy_keepalived]
192.168.1.15 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-master01"
192.168.1.18 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-master02"


[nodes:children]
kubernetes_master
kubernetes_node


[all:vars]
#脚本解析主机信息,层级默认只能添加3个,即3个master,3个node
Number="3"
master_vip="192.168.1.120"               #keepalived使用的vip
add_node_hosts="yes"                      #添加主机信息(yes=合并,no=删除后新建[覆盖])
######################################################################################
#布尔值true or false
Basic_enable="true"                       #安装基础软件包
set_host_enable="true"                    #设置主机名注入/etc/hosts文件
metrics_server_enable="true"              #安装metrics_server,kubectl top pod 
    clean_metrics_server="false"               #配置出错,删除后重新安装
######################################################################################
#可选组件
######################################################################################
monitoring_enable="false"                 #是否安装监控组件,默认不安装
k8s_helm_enable="true"                    #k8s master节点安装helm客户端
  helm_add_repo_local="true"              #必须打开,后续组件通过helm本地仓库进行安装
  helm_repo_online="false"                #添加helm仓库(在线)
######################################################################################
#下述组件通过helm安装,默认安装helm
ingress_enable="true"                    #安装ingress服务
k8s_nfs_enable="false"                    #安装nfs-client服务,上述的地址必须填写,否则nfs客户端会启动失败
######################################################################################
#监控组件、k8s v1.21.1版本以上(在线)
#监控组件的镜像采用在线的模式,需要联网自动下载,减少离线安装包的大小
#git clone https://github.com/prometheus-operator/kube-prometheus.git
clean_monitoring="false"                   #是否清理当前已安装的监控组件,注意,修改前需要确认监控组件已经部署完成后需要清理
#监控组件服务  
nodeExporter_enable="true"                 #采集器node_export
prometheus_enable="true"                   #安装Prometheus服务
grafana_enable="true"                      #是否安装grafana服务
ControlPlane_enable="true"                 #部署k8s ControlPlane,控制面板,里面有很多的设置放在一起的,用来设置规则
prometheusAdapter_enable="true"            #prometheusAdapter
prometheusOperator_enable="true"           #prometheusOperator
  
kube_state_metrics_enable="false"          #kube_state_metrics
alertmanager_enalbe="false"                #是否安装alertmanager服务
blackboxExporter_enalbe="false"            #是否安装blackboxExporter服务
  1. 一主多从需要把kubernetes_master里只添加一个地址
  2. 多主多从需要把kubernetes_master里添加三个地址,
    脚本只支持添加三个master节点
  3. 多主多从同时需要把haproxy_keepalived角色填写

脚本使用方式

k8s自动化安装脚本(kubeadm-1.26.3)

执行方式 注解
sh run.sh 获取脚本的执行帮助信息
sh run.sh init 初始化ansible机器,初始化环境章节详细介绍
sh run.sh online 在线安装(kuboard、monitoring组件) ,相关组件的镜像未合并到registry镜像里
sh run.sh offline 离线安装,通过脚本在线下载并保存离线镜像包,然后配合脚本导入离线环境的机器中使用
sh run.sh ping 验证ansible的网络是否正常通信
sh run.sh install 默认在线安装基础组件(monitoring组件),其他的组件则存放在本地的registry镜像仓库里

初始化环境

[root@registry install_k8s_kubeadm]# sh run.sh init  

k8s自动化安装脚本(kubeadm-1.26.3)

  1. 安装docker服务
  2. 通过docker启动nexus服务,检查服务启动状态,登录镜像仓库
  3. 通过docker启动ansible镜像服务并修改对应的文件

验证ansible配置

sh run.sh ping

k8s自动化安装脚本(kubeadm-1.26.3)

安装k8s集群

[root@registry install_k8s_kubeadm]# sh run.sh offline
Offline(离线) Dashboard 
----------------------------------------------------------------------------
1) 初始化环境(ansible))
2) 安装k8s集群[一主多从](1.26.3)
3) 安装k8s集群[多主多从](1.26.3)
4) 添加k8s node节点(1.26.3) 
----------------------------------------------------------------------------
5) docker安装kuboard(v3)[离线]
6) k8s安装其他组件(monitoring、helm、nfs、ingress)[离线安装(monitoring)]
----------------------------------------------------------------------------
请输入对应的数字编号:

  1. host文件需要提前修改、上面已介绍、文件内注释已注明
  2. 确认host中用户名、密码、ip正确且网络连接正常后,回车,等待执行脚本结束

执行结果如下:
k8s自动化安装脚本(kubeadm-1.26.3)

登录master的节点

一主多从
kubectl get nodes,pod -A

k8s自动化安装脚本(kubeadm-1.26.3)

多主多从

k8s自动化安装脚本(kubeadm-1.26.3)
查看master节点信息

kubectl get nodes,pod -A

k8s自动化安装脚本(kubeadm-1.26.3)

添加node节点

  1. 在host文件下的kubernetes_node分组下添加新增的需要新增的节点,并把之前已添加的节点删除
  2. 修改后执行 sh run.sh online脚本,选择4,添加node节点
  3. 脚本正常执行完毕后
  4. 检查各个节点的/etc/hosts文件,如果确认对应的域名解析,需要手动添加对应的主机关系
  5. 注意:
  6. 每次添加node节点时,需要把已填入集群的节点手动删除,否则会出现重复加入的操作导致剧本执行失败
[root@registry install_k8s_kubeadm]# sh run.sh offline
Offline(离线) Dashboard 
----------------------------------------------------------------------------
1) 初始化环境(ansible))
2) 安装k8s集群[一主多从](1.26.3)
3) 安装k8s集群[多主多从](1.26.3)
4) 添加k8s node节点(1.26.3) 
----------------------------------------------------------------------------
5) docker安装kuboard(v3)[离线]
6) k8s安装其他组件(monitoring、helm、nfs、ingress)[离线安装(monitoring)]
----------------------------------------------------------------------------
请输入对应的数字编号:4
  1. 本地环境资源不足、演示截图不添加

组件安装

k8s自动化安装脚本(kubeadm-1.26.3)

  1. 默认安装helm,其中nfs和ingress服务通过helm部署、监控组件进行默认镜像不存在(在线安装可以)
  2. 默认不安装,手动修改后安装,可以在安装k8s集群后进行安装使用
  3. 也可以在安装集群的是否安装

安装方式

#离线安装
[root@registry install_k8s_kubeadm]# sh run.sh  install
  1. 需要前修改上述图片中的布尔值,改为true时,开始执行安装
  2. 因本地环境资源不足,不做演示截图

监控组件

注意:

  1. 因nexus占用的磁盘相对较大、为减少部署包的大小、监控方面的相关镜像未导入到nexus中
  2. 提供脚本在线下载相关镜像并打包到相关路径中
  3. 离线镜像(监控)下载地址链接:
拉取镜像
cd /opt/install_k8s_kubeadm
#pull相关镜像
sh init/load_monitoring.sh     

k8s自动化安装脚本(kubeadm-1.26.3)

导入镜像仓库(nexus)
[root@registry install_k8s_kubeadm]# sh init/load_monitoring.sh warehouse
 【test 2023-04-02 17:14:13】 offline image not found,Please save and try again 
 【test 2023-04-02 17:14:13】 请把下载后的镜像monitoring-2023-04-02.tar.gz存放执行目录 
 【test 2023-04-02 17:14:13】 指定目录: /tmp/offline 
  1. 通过上面的脚本先下载镜像并对应的安装包存放到指定路径下后执行脚本导入nexus仓库
  2. 通过网盘下载并把对应的安装包存放指定路径后执行脚本导入nexus仓库
  3. 两种方式二选一即可

k8s自动化安装脚本(kubeadm-1.26.3)

界面查看

k8s自动化安装脚本(kubeadm-1.26.3)

访问prometheus

访问地址: http://k8s-ip:30090

k8s自动化安装脚本(kubeadm-1.26.3)

访问grafana

访问地址: http://k8s-ip:30000/
登陆密码: admin/admin

添加node-exporter面板
  1. 下载k8s master节点的第一台机器上/opt/deploy/grafana/node_export.json文件
  2. 通过浏览器登陆grafana平台,通过Dashboards按钮,鼠标停放,选择import
  3. 出现导入界面,选择upload json file按钮,选择下载到本地的文件
  4. 其他都是自动填充的,最后一个选择prometheus data source数据源后点击导入即可

ingress-nginx

k8s自动化安装脚本(kubeadm-1.26.3)
k8s自动化安装脚本(kubeadm-1.26.3)

  1. 使用方式,自行百度

kuboard的安装

#在线下载,网速较慢的情况下建议使用云主机下载
docker pull  swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3
docker save  swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3 -i kuboard.tar.gz
docker load -i kuboard.tar.gz
[root@registry ~]# docker load -i kuboard.tar.gz 
2d8252e11370: Loading layer [==================================================>]  3.072kB/3.072kB
22d9813f1d6a: Loading layer [==================================================>]  9.216kB/9.216kB
331120fa4807: Loading layer [==================================================>]  23.75MB/23.75MB
b6e875ecbb12: Loading layer [==================================================>]  18.77MB/18.77MB
9b6a33d74d53: Loading layer [==================================================>]  42.52MB/42.52MB
87405db6d205: Loading layer [==================================================>]  2.024MB/2.024MB
c502deb85597: Loading layer [==================================================>]  28.67kB/28.67kB
f062a9dd21ed: Loading layer [==================================================>]  61.95kB/61.95kB
20f6f032efed: Loading layer [==================================================>]  42.06MB/42.06MB
ba47fe085ef6: Loading layer [==================================================>]  13.32MB/13.32MB
Loaded image: swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3

#网速ok,则无需上述操作,直接执行即可
[root@registry install_k8s_kubeadm]# sh run.sh online
online(在线) Dashboard 
----------------------------------------------------------------------------
1) 初始化环境(ansible))
2) 安装k8s集群[一主多从](1.26.3)
3) 安装k8s集群[多主多从](1.26.3)
4) 添加k8s node节点(1.26.3) 
----------------------------------------------------------------------------
5) docker安装kuboard(v3)[在线]
6) k8s安装其他组件(monitoring、helm、nfs、ingress)[在线安装(monitoring)]
----------------------------------------------------------------------------
请输入对应的数字编号:5
访问kuboard

http://ansible-ip:80

纳管集群

k8s自动化安装脚本(kubeadm-1.26.3)

k8s自动化安装脚本(kubeadm-1.26.3)
k8s自动化安装脚本(kubeadm-1.26.3)

  1. 详细功能请查看kuboard的官方
  2. https://www.kuboard.cn/

证书查看

kubeadm 命令查看

#可以通过 kubeadm alpha certs check-expiration 命令查看相关证书是否过期。
#注:该命令仅在 v.15 之后的版本可用
kubeadm alpha certs check-expiration
# k8s v1.26.3
kubeadm certs  check-expiration

k8s自动化安装脚本(kubeadm-1.26.3)

openssl 命令查看

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '

k8s自动化安装脚本(kubeadm-1.26.3)

kuboard界面查看

k8s自动化安装脚本(kubeadm-1.26.3)

下载地址

链接:https://pan.baidu.com/s/1rtreX-EzQSthLgxpxBi4Pw?pwd=tyd6 文章来源地址https://www.toymoban.com/news/detail-428067.html

  1. 新版本链接保留7天用于测试验证

总结

  1. 上述则是当前部署中可运行正常的服务
  2. 执行sh Run.sh debug,则可以调试脚本,对应的启动文件,修改,则可以进行调试
  3. 执行sh Run.sh install,修改host文件,则可以进行安装组件

到了这里,关于k8s自动化安装脚本(kubeadm-1.26.3)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kubeadm方式部署k8s最新版本V1.26.2

    Kubernetes核心概念 Master主要负责资源调度,控制副本,和提供统一访问集群的入口。--核心节点也是管理节点 Node是Kubernetes集群架构中运行Pod的服务节点。Node是Kubernetes集群操作的单元,用来承载被分配Pod的运行,是Pod运行的宿主机,由Master管理,并汇报容器状态给Master,同时

    2024年02月05日
    浏览(74)
  • kubeadm部署k8s 1.26.0版本高可用集群

    1.前言 本次搭建使用centos7.9系统,并且使用haproxy+keepalived作为高可用架构软件,haproxy实现k8s集群管理节点apiserver服务的负载均衡以实现集群的高可用功能,keepalived保障了hapxoy的高可用,容器引擎使用docker,需要额外引入cri-docker服务,且使用集群内置的etcd服务,并配置etcd的

    2024年02月11日
    浏览(47)
  • 【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.26.0版本

    官方文档: 二进制下载地址 环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。 容器运行时本次使用containerd。 主机名 IP地址 操作系统 master-1 16.32.15.200 CentOS7.8 node-1 16.32.15.201 CentOS7.8 node-2 16.32.15.202 CentOS

    2024年02月10日
    浏览(47)
  • K8S + GitLab + Jenkins自动化发布项目实践(二)

    前置工作:已部署5节点k8s集群,并搭建了代码仓库和镜像仓库(GitLab + Harbor)。 主机名 IP 角色 k8s-master1 192.168.124.a k8s控制平面 k8s-master2 192.168.124.b k8s控制平面 k8s-master3 192.168.124.c k8s控制平面 k8s-worker1 192.168.124.d k8s工作节点 k8s-worker2 192.168.124.e k8s工作节点 harborgit 192.168.124.f

    2024年02月03日
    浏览(85)
  • K8S自动化运维容器化(Docker)集群程序

    1.什么是K8S K8S全程为Kubernetes,由于K到S直接有8个字母简称为K8S。 版本:目前一般是1.18~1.2.0,后续可能会到1.24-1.26,1.24版本后丢弃了docker(如需要使用需要第三方插件配合),目前最新版本是1.27 官网:https://kubernetes.io GitHub:GitHub - kubernetes/kubernetes: Production-Grade Container Schedul

    2024年02月10日
    浏览(69)
  • K8S系列文章之 自动化运维利器 Fabric

    Fabric 主要用在应用部署与系统管理等任务的自动化,简单轻量级,提供有丰富的 SSH 扩展接口。在 Fabric 1.x 版本中,它混杂了本地及远程两类功能;但自 Fabric 2.x 版本起,它分离出了独立的 Invoke 库,来处理本地的自动化任务,而 Fabric 则聚焦于远程与网络层面的任务。 为了

    2024年02月14日
    浏览(66)
  • K8S系列文章之 自动化运维利器 Ansible

    第一步:安装我们的epel扩展源 我这里会报/var/run/yum.pid 已被锁定,如果没有直接进行下一步 解决方法:删除/var/run/yum.pid,即 rm -rf /var/run/yum.pid ,重新执行第一步 第二步:安装 ansible 如果还报/var/run/yum.pid 已被锁定,还是直接进行删除,然后重新执行 yum -y install ansible 第三

    2024年02月13日
    浏览(69)
  • docker+k8s+jenkins+harbor持续集成自动化部署

    另外一篇文章有讲docker的安装与相关配置,暂时就不讲了 1、关闭防火墙并修改主机名 2、永久禁用swap 用#注释掉swap一行(新版centos已经默认禁用) 3、配置镜像加速 到阿里云获取自己镜像加速地址 4、安装 docker-compose 官网找到下载地址 https://github.com/docker/compose/releases 版本地址

    2024年02月08日
    浏览(64)
  • 【kubernetes】Argo Rollouts -- k8s下的自动化蓝绿部署

    在现代软件开发和交付中,确保应用程序的平稳更新和发布对于用户体验和业务连续性至关重要。蓝绿部署是一种备受推崇的部署策略,它允许开发团队在不影响用户的情况下,将新版本的应用程序引入生产环境。 蓝绿部署的核心思想在于维护两个独立的环境:蓝环境和绿环

    2024年02月10日
    浏览(38)
  • 自动化部署实践 (Jenkins+Git+Docker+阿里云k8s)

    项目前期部署都是手动部署,所以相关工具基本都已经安装,主要使用的工具有: 使用Gitlab管理代码 使用Maven打包 使用Docker构建镜像(已经有相关的DockerFile文件) 在阿里云kubernetes上部署。 所以,在这次自动化部署过程中,需要做的是安装Jenkins并完成相关配置,然后通过流

    2024年02月05日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包