《Kubernetes部署篇:Ubuntu20.04基于外部etcd+部署kubernetes1.25.14集群(多主多从)》

news2024/11/26 5:45:36

一、部署架构图

1、架构图如下所示:

在这里插入图片描述

2、部署流程图如下所示:
在这里插入图片描述


二、环境信息

  • 1、资源下载

基于外部etcd+部署容器版kubernetes1.25.14集群资源合集

  • 2、部署规划
主机名 K8S版本 系统版本 内核版本 IP地址 备注
k8s-master-12 1.25.14 Ubuntu 20.04.5 LTS 5.15.0-69-generic 192.168.1.12 master节点 + etcd节点
k8s-master-13 1.25.14 Ubuntu 20.04.5 LTS 5.15.0-69-generic 192.168.1.13 master节点 + etcd节点
k8s-master-14 1.25.14 Ubuntu 20.04.5 LTS 5.15.0-69-generic 192.168.1.14 master节点 + etcd节点
k8s-worker-15 1.25.14 Ubuntu 20.04.5 LTS 5.15.0-69-generic 192.168.1.15 worker节点
- - - - 192.168.1.110 vip(虚拟ip)
k8s-lb-01 - Ubuntu 20.04.5 LTS 5.15.0-69-generic 192.168.1.16 Nginx + keepalived
k8s-lb-02 - Ubuntu 20.04.5 LTS 5.15.0-69-generic 192.168.1.17 Nginx + keepalived

  • 3、集群网段
宿主机 集群Pod网段 集群Service网段
192.168.1.0/24 10.48.0.0/16 10.96.0.0/16

说明:Kubernetes高可用集群基于kubeadm工具部署,其中etcd集群采用二进制方式部署。由于测试机器数量有限,etcd服务部署在master节点上,你可以根据自己需要,使用单独的主机部署etcd集群服务。


  • 4、基础软件版本
软件 版本 安装方式
etcd 3.5.6 二进制
containerd 1.7.2 apt工具
kubeadm、kubectl、kubelet v1.25.14 apt工具
kube-lb(nginx) 1.22.1 二进制
keepalived v2.2.7 二进制

使用apt工具安装containerd会一起安装runc,版本信息如下:

软件 版本
containerd 1.7.2
runc 1.1.7

使用apt工具安装kubeadm、kubectl、kubelet会一起安装cri-tools、ebtables、kubernetes-cni、ebtables、socat、conntrack,版本信息如下:

软件 版本
conntrack 1.4.5
cri-tools 1.26.0
kubernetes-cni 1.2.0
ebtables 2.0.11
socat 1.7.3
kubeadm 1.25.14
kubectl 1.25.14
kubelet 1.25.14

总结:

1、安装containerd,需要同时安装runc及cni网络插件。Containerd不能直接操作容器,需要通过runc来运行容器。默认Containerd管理的容器仅有lo网络(无法访问容器之外的网络),如果需要访问容器之外的网络则需要安装CNI网络插件。CNI(Container Network Interface) 是一套容器网络接口规范,用于为容器分配ip地址,通过CNI插件Containerd管理的容器可以访问容器之外的网络。

2、cri-tools(容器运行时工具):这是一个 用于与Kubernetes容器运行时接口(CRI)进行交互的命令行工具集。它提供了一些有用的功能,如创建、销毁和管理容器等。

3、ebtables(以太网桥规则管理工具):这是一个用于在Linux系统中管理以太网桥规则的工具。在Kubernetes中,ebtables 用于在网络分区中实现容器之间的隔离和通信。

4、socat(网络工具):这是一个用于在Linux系统中建立各种类型网络连接的工具。在Kubernetes网络中,socat可以 用于创建端口转发、代理和转发等网络连接。

5、conntrack:这是一个用于连接跟踪的内核模块和工具。它允许您跟踪网络连接的状态和信息,如源IP地址、目标IP地址、端口号等。


  • 5、容器镜像版本
K8S镜像 calico镜像
registry.k8s.io/kube-apiserver:v1.25.14 docker.io/calico/cni:v3.26.1
registry.k8s.io/kube-controller-manager:v1.25.14 docker.io/calico/kube-controllers:v3.26.1
registry.k8s.io/kube-scheduler:v1.25.14 docker.io/calico/node:v3.26.1
registry.k8s.io/kube-proxy:v1.25.14 -
registry.k8s.io/pause:3.8 -
registry.k8s.io/coredns/coredns:v1.9.3 -

K8S版本与calico版本对应关系,如下所示:

calico版本 calico yml文件下载 支持K8S版本
v3.24.6 calico.yml v1.22、v1.23、v1.24、v1.25
v3.25.2 calico.yml v1.23、v1.24、v1.25、v1.26
v3.26.1 calico.yml v1.24、v1.25、v1.26、v1.27

三、安装和配置先决条件

3.1、主机名设置

说明:分别在对应的节点IP上设置主机名。

主机IP 设置主机名
192.168.1.12 hostnamectl set-hostname k8s-master-12 && bash
192.168.1.13 hostnamectl set-hostname k8s-master-13 && bash
192.168.1.14 hostnamectl set-hostname k8s-master-14 && bash
192.168.1.15 hostnamectl set-hostname k8s-worker-15 && bash
192.168.1.16 hostnamectl set-hostname k8s-lb-01 && bash
192.168.1.17 hostnamectl set-hostname k8s-lb-02 && bash

3.2、配置主机hosts

说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

cat >> /etc/hosts <<EOF
192.168.1.12  k8s-master-12
192.168.1.13  k8s-master-13
192.168.1.14  k8s-master-14
192.168.1.15  k8s-worker-15
EOF

3.3、关闭防火墙

说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

ufw disable && systemctl stop ufw && systemctl disable ufw

3.4、关闭swap分区

说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

swapoff -a
sed -i '/swap/ s/^/#/'  /etc/fstab

3.5、修改系统参数

说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

cat >>/etc/security/limits.conf <<EOF
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
* soft  memlock  unlimited
* hard memlock  unlimited
EOF

3.6、时间时区同步

说明:以下操作无论是master节点、worker节点、kube-lb节点均需要执行。

1、设置时区为Asia/Shanghai,如果已经是则请忽略

root@k8s-master-12:~# timedatectl
               Local time: 五 2023-03-31 14:11:36 CST
           Universal time: 五 2023-03-31 06:11:36 UTC
                 RTC time: 五 2023-03-31 06:11:36    
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes                       
              NTP service: active                    
          RTC in local TZ: no  

3.7、修改内核参数

说明:以下操作无论是master节点、worker节点均需要执行。

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

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

相关文章

【音视频】AAC音频压缩格式

AAC音频压缩格式 ADTSvsADIF 总结&#xff1a; ADTS可以在任意帧解码&#xff0c;也就是说它每一顿都有头信息【默认使用格式】 ADIF只有一个统一的头&#xff0c;所以必须得到所有的数据后解码【一般不使用】 每一帧结构 每一帧的ADTS的头文件都包含了音频的采样率&#x…

【Linux学习】01Linux初识与安装

Linux&#xff08;B站黑马&#xff09;学习笔记 01Linux初识与安装 文章目录 Linux&#xff08;B站黑马&#xff09;学习笔记前言01Linux初识与安装操作系统简述Linux初识虚拟机介绍安装VMware Workstation虚拟化软件VMware中安装CentOS7 Linux操作系统下载CentOS操作系统VMwa…

kafka安装部署,和基本操作

kafka下载地址&#xff1a;Apache Kafka 我这里下载3.5.1 ​ 2、通过rz命令上传到linux服务器 3、解压 tar -zxvf kafka_2.12-3.5.1.tgz 4、在config目录下修改配置文件server.properties 主要修改这两处&#xff1a; #监听的端口advertised.listenersPLAINTEXT://自己…

【音视频】MP4封装格式

基本概念 使用MP4box.js查看MP4内部组成结构 整体结构 数据索引&#xff08;moov&#xff09;数据流包&#xff08;mdat&#xff09; 各个包的位置&#xff0c;大小&#xff0c;信息&#xff0c;时间戳&#xff0c;编码方式等全在数据索引 数据流包只有纯二进制码流数据 数据…

Linux基础开发工具

目录 前言 一、yum —— 软件包管理工具 1.1 yum的简介 1.2 yum的使用 1.3 yum源更新 二、vim —— 文本编辑器 2.1 vim的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行模式命令集 extra vim补充 extra1 批量化注释 extra2 创建文件的…

腾讯云微服务平台 TSF 异地多活单元化能力重磅升级

导语 2023腾讯全球数字生态大会已于9月7-8日完美落幕&#xff0c;40专场活动展示了腾讯最新的前沿技术、核心产品、解决方案。 微服务与消息队列专场&#xff0c;腾讯云微服务平台 TSF 产品经理张桢带来了《腾讯云微服务平台 TSF 异地多活单元化能力重磅升级》的精彩演讲。本…

【LeetCode热题100】--48.找到字符串中所有字母异位词

48.找到字符串中所有字母异位词 使用滑动窗口&#xff1a; 由于字符串p的异位词的长度一定与字符串p的长度相同&#xff0c;所以我们可以在字符串s中构造一个长度为字符串p的长度相同的滑动窗口&#xff0c;并在滑动中维护窗口中每种字母的数量&#xff1b;当窗口中每种字母的数…

编译原理 —— 编译器

文章目录 编译原理阶段词法分析器语法分析器语义分析器中间代码生成器代码优化器代码生成器 编译原理阶段 编译器分为9个阶段来将我们所编写的高级代码编译为计算机可执行的机器码 源程序词法分析器语法分析器语义分析器中间代码生成器独立于机器的代码优化器代码生成器依赖于…

activiti流程变量

activiti流程变量 定义 流程变量在Activiti 中是一个十分重要的角色&#xff0c;流程运转时&#xff0c;需要靠流程变量&#xff0c;业务系统和activiti 结合时少不了流程变量&#xff0c;流程变量就是activiti 在管理工作流时根据管理需要而设置的变量。比如&#xff1a;在出…

JADE盲分离算法仿真

JADE算法原理 JADE 算法首先通过去均值预白化等预处理过程得到解相关的混合信号&#xff0c;预处理后的信号构建的协方差矩阵变为单位阵&#xff0c;为后续的联合对角化奠定基础&#xff1b;其次&#xff0c;通过建立四阶累积量矩阵&#xff0c;利用高阶累积量的统计独立性等性…

React+Node——next.js 构建前后端项目

一、安装全局依赖 npm i -g create-next-app二、创建next项目 create-next-app react-next-demo //或 create-next-app react-next-demo --typescript三、加载mysql依赖 npm i -S mysql2四、运行项目 npm run dev五、创建db文件目录&#xff0c;目录下创建index.ts import…

WebRTC系列--sdp协商中的answer编解码协商过程

关于createAnswer的流程在前面的文章WebRTC系列-SDP之CreateAnswer这篇文章中有详细的分析。 这篇文章主要对于MediaSessionDescriptionFactory的AddAudioContentForAnswer做详细的分析,也就是说对于音频编码的匹配也是在这个方法里实现: 首先主要的函数调用如下图: 这篇文…

怒赞,阿里P8推荐的Java面试宝典:41个专题PDF(史上最全+面试必备)

《尼恩Java面试宝典》 40岁老架构师 尼恩 经过对大量 Java面试题 的不断梳理、迭代&#xff0c; 编著成5000页的《尼恩Java面试宝典》&#xff0c;致力于体系化&#xff0c; 系统化&#xff0c;形象化 梳理&#xff0c;形成一个大的知识体系&#xff0c;从而帮助大家 进大厂&a…

20-SpringCloudAlibaba-1

一 Spring Cloud Alibaba简介 什么是Spring Cloud Alibaba Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。 此项目包含开发分布式应用微服务的必需组件&#xff0c;方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 为什么要推出Sp…

Python处理英文文档(添加音标和翻译)

Python处理英文文档&#xff08;添加音标和翻译&#xff09; Python处理英文文档单词标注音标英文翻译对word文档的操作方法整合待改进之处 Python处理英文文档 上英语课的时候老师总喜欢找人读文章和翻译文章&#xff0c;一点点的准备太浪费时间&#xff0c;就用Python写了一…

已解决 Python Error: ImportError: No module named ‘module_name‘

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

人声分离网站,帮你快速提取视频中的人声和背景音乐

今天给大家带来一个可以分离人声的网站——音分轨&#xff0c;他运用人工智能算法可以将音频中的人声部分和音乐部分分离&#xff0c;使我们的视频制作过程可以更方便。 我们点击右下角“选择文件”上传一个音频&#xff0c;上传好音频后&#xff0c;人工智能就开始处理我们上传…

同步 -- 信号量

本篇文章基于Linux-6.5源码 建议&#xff1a;搭配Linux源码观看更佳 struct semaphore {raw_spinlock_t lock; // 保护信号量的自旋锁unsigned int count; // 最大同时可访问临界区的进程数量struct list_head wait_list; // 等待队列&#xff0c;wait_list指…

linux 磁盘命令之du和df命令

du相关的命令: du -ah 显示所有目录或文件所占空间 du -KG 显示所有目录或文件所占空间 块大小K为单位 du -BM 显示所有目录或文件所占空间 块大小M为单位 du -BG 显示所有目录或文件所占空间 块大小G为单位du -sh [目录名] 返回该目录的大小 du -sm [文件夹] 返回该文…

5.2 磁盘CRC32完整性检测

CRC校验技术是用于检测数据传输或存储过程中是否出现了错误的一种方法&#xff0c;校验算法可以通过计算应用与数据的循环冗余校验&#xff08;CRC&#xff09;检验值来检测任何数据损坏。通过运用本校验技术我们可以实现对特定内存区域以及磁盘文件进行完整性检测&#xff0c;…