• k8s自动化安装脚本(二进制)


    介绍

    通过ansible脚本+shell实现自动化部署k8s基础集群(v1.25.0)

    部署结构

    请添加图片描述1. 通过二进制部署包镜像安装k8s集群、目录etcd节点只支持1-3个节点、最多三个etcd节点
    2. 因k8s版本相对较新、需要升级内核来支持后台程序、当前版本只支持Cento7,内核版本(5.19.4-1.el7.elrepo.x86_64)
    3. 采用k8s二进制安装,通过system进行管理,采用本地yum仓库,版本是:1.25.0
    4. 部署节点安装docker的yum源是基于Centos7.5/7.6,版本是:19.03.14
    5. 部署节点安装ansible时,使用离线安装,版本:2.9.27

    操作步骤

    环境准备

    作用IP地址操作系统配置
    k8s-master01192.168.1.13CentOS7最低配置2C2G
    ansible192.168.1.140CentOS7最低配置1C1G
    1. node节点可以填写多个,根据实际情况确认,但是不能超出单master节点的限制
    2. master节点至少是三个少一个都不是高可用版本
    3. 高可用部署时需要为keepalived提前确认好vip的信息
    备注
    1. 单独找一台机器用于部署ansible服务,升级内核时需要重启服务器
    2. 部署节点部署重启,否则会导致执行报错
    3. 但是需要确保机器资源充足,且相关的端口不会冲突(38081【yum】、38082【registry】)
    4. 相关的网络关系需要提前确认
    解压部署包
    #上传部署包(xshell)
    yum -y install lrzsz 
    rz install_k8s_binary_20220905.tar.gz
    #解压
    tar -xvf install_k8s_binary_20220905.tar.gz -C /opt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    修改host文件
    #部署机器,初始脚本、安装包镜像
    [deploy_server]
    192.168.1.11 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="Ansible"
    
    #apiserver、controller、scheduler、通过下面的install_kubelet_enable来确认是否在master节点上安装kubelet、proxy服务
    [kubernetes_master]
    192.168.1.12 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22  hostname="k8s-master01"
    
    #kubelet、proxy,可任意添加节点数,只要不超出k8s本身的限制即可
    [kubernetes_node]
    #192.168.1.13 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22  hostname="k8s-node01"
    
    
    #单节点或者三节点其他的暂时不支持,通过脚本解析主机信息,目前只支持1-3个节点
    [etcd]
    192.168.1.12 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 ETCD_NAME="k8s-master01"
    
    #不填写,则不安装镜像仓库、目前尚未完成(待完善)
    [docker_repositry]
    #192.168.1.136 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-node01"
    
    #双节点
    [haproxy_keepalived]
    #192.168.1.12 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-haproxy"
    #192.168.1.12 ansible_user="root" ansible_ssh_pass="1"  ansible_ssh_port=22 hostname="k8s-haproxy"
    
    
    [nodes:children]
    kubernetes_master
    kubernetes_node
    haproxy_keepalived
    etcd
    
    [all:vars]
    #interface="ens33"             #部署机器的网卡名称
    master_vip="192.168.1.120"     #高可用
    
    #布尔值 true or false
    install_kubelet_enable="true"  #master节点是否安装kubelet、kube-proxy  
    network_enable="false"         #联网状态下,加载网络yum仓库
    Basic_enable="true"            #安装基础软件包    
    clear_cert_data="false"        #清理上一次生成的证书及清理cfssl的安装包
    
    
    #k8s 组件服务
    dashboard_enable="false"       #安装dashboard服务
    prometheus_enable="false"      #安装Prometheus服务,尚未完成
    ingress_enable="false"         #安装ingress服务,尚未完成
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    初始化环境
    [root@registry]# cd /opt/install_k8s_binary
    [root@registry install_k8s_binary]# sh Run.sh 
    1) 初始化环境(ansible))
    2) 安装k8s集群(v1.25.0)(二进制)
    ----------------------------------------------------------------------------
    请输入对应的数字编号:1
    请输入部署机的地址(192.168.1.11):
    #部署机的地址,通过脚本获取的地址,确认无误后直接回车即可
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    执行结果

    请添加图片描述

    1. 安装docker服务
    2. 安装ansible服务,修改ansible.cfg配置
    3. 准备离线yum仓库挂载点是:部署包的下的yum目录
    4. 准备离线registry仓库,相关挂载点是:/var/images/
    安装k8s集群

    登录部署机器上执行Run.sh脚本

    执行结果如下:
    请添加图片描述

    登录master的节点
    image-20220905193211806
    1. 因本地虚拟机限制,目前使用单节点测试部署,一主一从的也测试可行
    2. 高可用版本尚未测试,虚拟机测试电脑容易死机😂

    部署包下载

    链接:https://pan.baidu.com/s/1TERyfAG7CzXwE4ULJu0xqw?pwd=m3jc
    提取码:m3jc
    –来自百度网盘超级会员V1的分享

    1. 目前版本,后续会更新
    2. 初始化环境时,如果启动报错,出现…iptable…的字段这可以重新执行一次初始化即可正常启动
    3. 目前containerd的镜像仓库配置的是初始化的地址,如果需要使用k8s集群,则需要手动修改containerd的配置文件<自行百度添加>(后续优化)
    4. 分享链接是7天,后续会更新版本

    总结

    1. 上述则是当前部署中可运行正常的服务
    2. 执行Run.sh 输入init,则可以调试脚本,对应的启动文件,修改,则可以进行调试(playbook/tools/deploy_test.yaml)
  • 相关阅读:
    Java的static成员和内部类
    与创新者同行!Apache Doris 首届线下峰会即将开启,最新议程公开!|即刻预约
    vue v-for 渲染大量数据卡顿的优化方案
    Python表白代码合集:5种表白代码,找不到对象你来找我,这也太秀了叭
    Go 原生插件使用问题全解析
    基于ssm的高校校友信息管理系统设计与实现-计算机毕业设计
    什么是 java 序列化?什么情况下需要序列化?
    新来个架构师,用48张图把OpenFeign原理讲的炉火纯青~~
    最短路径算法之一:单源无权图,python实现
    云贝教育 |【技术文章】pg缓存插件介绍
  • 原文地址:https://blog.csdn.net/qq_44246980/article/details/126712571