K8S系列文章 之 编写自动化部署K8S脚本

news2024/11/24 0:11:33

介绍

通过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-node01 192.168.59.143CentOS7最低配置2C2G
k8s-master01192.168.59.142CentOS7最低配置2C2G
ansible192.168.59.144CentOS7最低配置1C1G
  • node节点可以填写多个,根据实际情况确认,但是不能超出单master节点的限制
  • master节点至少是三个少一个都不是高可用版本
  • 高可用部署时需要为keepalived提前确认好vip的信息

备注

  • 单独找一台机器用于部署ansible服务,升级内核时需要重启服务器
  • 部署节点部署重启,否则会导致执行报错
  • 但是需要确保机器资源充足,且相关的端口不会冲突(38081【yum】、38082【registry】)
  • 相关的网络关系需要提前确认

关闭swap 

swapoff -a  # 临时 
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久 
echo "关闭swap  !" 

配置静态IP 参考下面命令

echo "配置静态IP"
cat >> /etc/sysconfig/network-scripts/ifcfg-ens33 << EOF 
IPADDR=192.168.59.143
NETMASK=255.255.255.0 
GATEWAY=192.168.59.2
DNS1=8.8.8.8
EOF

sed -i 's/dhcp/static/' /etc/sysconfig/network-scripts/ifcfg-ens33
cat /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network

配置部署Ansible 免密登录到其他所有机器

ssh-keygen 

ssh-copy-id root@192.168.59.142

ssh-copy-id root@192.168.59.143

解压部署包

#上传部署包(xshell)
yum -y install lrzsz 
rz install_k8s_binary_20220905.tar.gz
#解压
tar -xvf install_k8s_binary_20220905.tar.gz -C /opt

修改host文件

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

#apiserver、controller、scheduler
[kubernetes_master]
192.168.59.142 ansible_user="root" ansible_ssh_pass="1234567"  ansible_ssh_port=22  hostname="k8s-master01"

#kubelet、proxy
[kubernetes_node]
192.168.59.143 ansible_user="root" ansible_ssh_pass="1234567"  ansible_ssh_port=22  hostname="k8s-node01"


#单节点或者三节点其他的暂时不支持
[etcd]
192.168.59.142 ansible_user="root" ansible_ssh_pass="1234567"  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.59.142"

#布尔值 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服务

初始化环境

[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.59.144):

#部署机的地址,通过脚本获取的地址,确认无误后直接回车即可

执行结果

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

安装k8s集群

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

执行结果如下:

登录master的节点

因本地虚拟机限制,目前使用单节点测试部署,一主一从的也测试可行高可用版本尚未测试

部署包下载

链接: https://pan.baidu.com/s/1-_yDvPnE7Jt167S_9IzWzw?pwd=egwf

提取码: egwf 

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

部署验证模板案例

K8S 使用deployment 部署nginx服务
# cat deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: ngx-service
  labels:
    app: nginx
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
  - port: 80
    targetPort: 80
    nodePort: 32500

创建deploy

# kubectl apply -f deploy.yaml 
deployment.apps/nginx-deploy created
service/ngx-service created

查看pod及svc服务

[root@k8s-master01 home]# kubectl get pod,svc
NAME                           READY   STATUS    RESTARTS   AGE
pod/my-nginx-cd55c47f5-5z7pr   1/1     Running   0          2m20s
pod/my-nginx-cd55c47f5-dw8qk   1/1     Running   0          2m20s
pod/my-nginx-cd55c47f5-qqrjl   1/1     Running   0          2m20s

NAME                  TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
service/kubernetes    ClusterIP   10.96.0.1      <none>        443/TCP        54m
service/ngx-service   NodePort    10.106.47.18   <none>        80:32500/TCP   2m20s
[root@k8s-master01 home]# 

浏览器访问地址:ip:32500,正常即可.

总结

上述则是当前部署中可运行正常的服务执行Run.sh 输入init,则可以调试脚本,对应的启动文件,修改,则可以进行调试(playbook/tools/deploy_test.yaml)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/846949.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本地构建包含java和maven的镜像

目录 1.前提条件 2.下载 2.1.创建Dockerfile 3.构建镜像 参考文章 1.前提条件 本地环境需要的系统和软件 win10 Docker Desktop Powershell 图1 Win10安装Docker后&#xff0c;直接在Powershell使用Docker命令 有些Developer不习惯win10系统&#xff0c;却想要使用Lin…

使用ResponseBodyAdvice封装统一返回值

目录 ResponseBodyAdvice 接口概述 ResponseBodyAdvice 快速使用 父pom文件 pom文件 ResponseDto MyResponseBodyAdvice DemoController 结果展示 ResponseBodyAdvice 接口概述 在实际项目中&#xff0c;我们经常需要在请求前后进行一些操作&#xff0c;比如&#xf…

Cesium 实战教程 - 三种方式(CZML、nodeTransformations)修改模型节点组件属性(比例、旋转、移动等)

Cesium 实战教程 - 三种方式&#xff08;CZML、nodeTransformations&#xff09;修改模型节点组件属性&#xff08;比例、旋转、移动等&#xff09; 核心代码完整代码在线示例 关于 Cesium 设置模型组件的动作&#xff0c;之前是通过 CZML articulations 来实现的&#xff0c;…

xAI与GPT-4:探索宇宙真实本质的AI之战

xAI与GPT-4&#xff1a;AI之战 写在前面第一部分推动科学研究提升人机交互引发伦理和社会问题 第二部分模型的进一步优化跨领域合作人机融合 反AI斗士 马斯克进军AI中国的AI产业怎么样AI这把火&#xff0c;还能怎么烧&#xff1f;最后总结 北京时间7月13日凌晨&#xff0c;马斯…

加速手机充电,打开这个小技巧,让充电速度翻倍,快速充满电量

加速手机充电&#xff0c;打开这个小技巧&#xff0c;让充电速度翻倍&#xff0c;快速充满电量 通过打开这个小技巧&#xff0c;我们可以在有限的时间内快速充满手机电量&#xff0c;解决了电量不足的困扰。不再需要长时间等待充电&#xff0c;让我们能够更加便捷地使用手机&a…

微服务监控技术skywalking的部署与使用(亲测无坑)

微服务监控技术skywalking的部署与使用 1. 前期准备2. skywalking安装部署2.1 Java Agent2.2 apache/skywalking-oap-server2.3 apache/skywalking-ui 3. 项目启动4.效果展示 1. 前期准备 注&#xff1a;本篇文章采用docker部署&#xff0c;采用8.2.0版本&#xff0c;版本一定…

vue+Highcharts绘制3D饼图

效果图 一、下载highcharts插件 npm install highcharts 二、main.js全局配置插件 import Highcharts from "highcharts/highcharts"; import highcharts3d from "highcharts/highcharts-3d"; highcharts3d(Highcharts); 三、封装highcharts.vue组件 …

FreeFileSync 12.5 正式发布,文件夹比较与同步软件

导读FreeFileSync 是一款开源软件&#xff0c;适用于 Windows、macOS 和 Linux。FreeFileSync 本质是一个用于文件夹对比和同步的软件&#xff0c;它可以创建和管理所有重要文件的备份副本。FreeFileSync 不是每次都复制每个文件&#xff0c;而是确定源文件夹和目标文件夹之间的…

vue-baidu-map-3x 使用记录

在 Vue3 TypeScript 项目中&#xff0c;为了采用 标签组件 的方式&#xff0c;使用百度地图组件&#xff0c;冲浪发现了一个开源库 ovo&#xff0c;很方便&#xff01;喜欢的朋友记得帮 原作者 点下 star ~ vue-baidu-map-3xbaidu-map的vue3/vue2版本&#xff08;支持v2.0、v…

海外ASO优化之如何给应用选择正确的类别

将我们的应用程序放在Apple App Store和Google Play正确的类别中&#xff0c;不仅对按类别浏览应用的用户有帮助&#xff0c;而且能够帮助我们的应用程序获得良好排名。 1、应用程序属于多个类别的解决方案。 需要选择最能描述我们应用程序的类别&#xff0c;检查一下每个类别…

.net几行代码音乐API各排行榜 热搜 入库

对比了几家大厂的音乐API的接口 这家相对规范些 现在开始从零开始 net6敏捷开发对接 入库吧 关键技术工具和思维 1 json 生成类 2 分析类 规划表设计3 sqlsuger codefirst 生成表 4 封装get post 连接5 类映射automapper6 sqlsuger 插入数据 1 json 生成类 宇宙 第 一的…

轻量级低代码平台,快速生成应用程序及不同类型的CRM系统

私有化部署的低代码快速开发平台 无需代码或通过少量代码就可以快速生成应用程序的开发平台。 这套低代码管理后台平台可以支持多种企业应用场景&#xff0c;包括但不限于 OA系统、 CRM系统、 ERP系统、项目管理系统、进销存系统等。无论是懂技术的开发人员还是不懂技术的业务…

多通道振弦数据记录仪应用于桥梁监测

随着城市化进程的加快&#xff0c;城市桥梁的数量不断增加。对于城市交通的保障作用&#xff0c;桥梁的重要性不言而喻。而为了保障桥梁的安全&#xff0c;桥梁监测的重要性也越来越受到人们的重视。在桥梁监测中&#xff0c;多通道振弦数据记录仪的应用得到了广泛的认可和应用…

算法通关村第五关——n数之和问题解析

1. 两数之和问题 力扣第1题就是两数之和问题&#xff0c;给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那两个整数&#xff0c;并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一…

聚观早报|美团创始人王慧文退出;马斯克将直播与扎克伯格笼斗

【聚观365】8月8日消息 美团创始人王慧文退出马斯克将在X上直播与扎克伯格笼斗蚂蚁微尘故事余承东微博透露鸿蒙4新进展华为出资15亿成立地产公司 美团创始人王慧文退出 据国家企业信用信息公示系统显示&#xff0c;北京光年之外科技有限公司在近期完成工商变更&#xff0c;创…

Hadoop理论及实践-HDFS读写数据流程(参考Hadoop官网)

NameNode与DataNode回顾 主节点和副本节点通常指的是Hadoop分布式文件系统&#xff08;HDFS&#xff09;中的NameNode和DataNode。 NameNode&#xff08;主节点&#xff09;&#xff1a;NameNode是Hadoop集群中的一个核心组件&#xff0c;它负责管理文件系统的命名空间和元数据…

uni——不规则tab切换(skew)

案例展示 案例代码 <!-- 切换栏 --> <view class"tabBoxs"><view class"tabBox"><block v-for"(item,index) in tabList" :key"index"><view class"tabItem":class"current item.id&…

Vue 本地应用 记事本 v-on v-model v-for使用

vue当中如何生成列表结构&#xff1f;使用的指令是v-for&#xff0c;同时要有一个可以生成列表的数据&#xff0c;常用的是数组。记事本里面的内容并不复杂&#xff0c;所以这里使用字符串数组就行了。 获取用户输入的内容使用绑定v-model&#xff0c;双向数据绑定&#xff08…

黑马头条项目学习--Day1: 环境搭建、SpringCloud微服务(注册发现、网关)

Nacos注册发现、网关 a. 项目介绍b. app登录1) 需求分析2) 表结构分析3) 手动加密&#xff08;md5随机字符串&#xff09;4) 用户端微服务搭建5) 功能实现6) app网关7) 网关校验jwt8) 前端集成, 配置nginx a. 项目介绍 业务说明 技术栈说明 [外链图片转存失败,源站可能有防盗…

基于MSP430 红外避障-遥控小车(电赛必备 附项目代码)

文章目录 一、硬件清单二、模块连接三、程序设计四、项目源码 项目环境&#xff1a; 1. MSP430F55292. Code Composer Studio3. 蓝牙调试助手 项目简介&#xff1a; 小车可分为3种工作模式&#xff0c;每种工作模式都会打印在OLED显示屏上&#xff0c;通过按键转换工作模式。 模…