ubuntu24.04安装Kubernetes1.31.0(k8s1.30.0)高可用集群

devtools/2024/11/30 17:05:05/

kubernetes1300_0">ubuntu24.04安装Kubernetes1.30.0(kubernetes1.30.0)高可用集群

一、总体概览

目前最新版的K8S版本应该是1.31.0,我们安装的是第二新的版本1.30.0,因为有大神XiaoHH Superme指路,所以基本上没踩坑,很顺利就搭建完成了。所有的机器都采用的最新版Ubuntu-Server-24.04长期支持版,Ubuntu-Server机器准备就绪,安装了必要的vimssh等,并开启了ssh自启动等最基础的操作,并且每台机器都进行了固定IP的设置。如果有需要请参考这里。机器都是跑在PVE虚拟主机上,稳的一逼。

在这里插入图片描述

3台master主节点(4C8G)、3台(4C8G)worker node、2台LoadBalancer(4C8G),对应的 IP如下:

hostnameIPfunctionVersion
hep-kubernetes-master-prd-01192.168.31.41Control planeUbuntu-Server-24.04
hep-kubernetes-master-prd-02192.168.31.42Control planeUbuntu-Server-24.04
hep-kubernetes-master-prd-03192.168.31.43Control planeUbuntu-Server-24.04
hep-kubernetes-apiserver-lb-prd-01192.168.31.44LoadBalancerUbuntu-Server-24.04
hep-kubernetes-apiserver-lb-prd-02192.168.31.45LoadBalancerUbuntu-Server-24.04
hep-kubernetes-worker-prd-01192.168.31.46worker nodeUbuntu-Server-24.04
hep-kubernetes-worker-prd-02192.168.31.47worker nodeUbuntu-Server-24.04
hep-kubernetes-worker-prd-03192.168.31.48worker nodeUbuntu-Server-24.04

角色分配:

在安装部署Kubernetes的时候,由于机器比较多,网上的大佬们写的文章很多时候都不知道该在哪台机器上操作,让小白们不知所措,所以我们写的这个教程都是基于机器的,每台机器上该操作啥,全部列举出来了。当然如果你觉得繁琐,特别是在PVE这样的虚拟化管理软件中,可以在一台机器上操作完成,然后复制虚拟机即可,这样就方便了太多。

二、配置容器运行时

选用的容器运行时是containerd,版本号为 1.7.20,可使用如下命令进行下载,或者直接访问https://github.com/containerd/containerd/releases/download/v1.7.20/cri-containerd-cni-1.7.20-linux-amd64.tar.gz

curl -LO https://github.com/containerd/containerd/releases/download/v1.7.20/cri-containerd-cni-1.7.20-linux-amd64.tar.gz

kubernetesmasterprd01containerd_40">2.1 hep-kubernetes-master-prd-01配置containerd

#设置主机名
hostnamectl set-hostname hep-kubernetes-master-prd-01
#修改hosts文件,把k8s所有机器主机名都填上去,这样集群内就可以根据主机名匹配到对应的IP地址,从而进行通信了
vim /etc/hosts
#增加如下内容
192.168.31.41 hep-kubernetes-master-prd-01
192.168.31.42 hep-kubernetes-master-prd-02
192.168.31.43 hep-kubernetes-master-prd-03
192.168.31.44 hep-kubernetes-apiserver-lb-prd-01
192.168.31.45 hep-kubernetes-apiserver-lb-prd-02
192.168.31.46 hep-kubernetes-worker-prd-01
192.168.31.47 hep-kubernetes-worker-prd-02
192.168.31.48 hep-kubernetes-worker-prd-03#设置为中国上海时区
timedatectl set-timezone Asia/Shanghai#时间同步工具
apt install -y ntpdate
#进行时间同步
ntpdate ntp.aliyun.com#修改/etc/fstab文件注释掉带/swap.img的这一行
vim /etc/fstab# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
EOF# 应用 sysctl 参数而不重新启动
sysctl --system#验证 net.ipv4.ip_forward 是否设置为 1
sysctl net.ipv4.ip_forward#选用的容器运行时是containerd,版本号为 1.7.20,可直接执行下面这行命令下载此安装包
curl -LO https://github.com/containerd/containerd/releases/download/v1.7.20/cri-containerd-cni-1.7.20-linux-amd64.tar.gz#我这里是使用的webmin远程登录到家里的机器,从这台机器拷贝containerd到当前机器
scp root@192.168.31.2:/usr/software/cri-containerd-cni-1.7.20-linux-amd64.tar.gz /usr/software/#压缩包解压到根目录
tar -zxvf cri-containerd-cni-1.7.20-linux-amd64.tar.gz -C /#查看版本号
containerd --version#因为安装后默认是不自带配置文件的,所以需要创建目录并生成配置文件
mkdir /etc/containerd#执行这行命令生成配置文件
containerd config default | sudo tee /etc/containerd/config.tomlvim /etc/containerd/config.toml
#因为默认的pause镜像是在谷歌上拉取的,国内拉取不下来,所以需要修改 /etc/containerd/config.toml 配置文件,将pause镜像改为 registry.aliyuncs.com/google_containers/pause:3.9
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"#搜索plugins."io.containerd.grpc.v1.cri".registry.mirrors,增加几个docker仓库
[plugins."io.containerd.grpc.v1.cri".registry.mirrors][plugins."io.containerd.grpc.v1.cri".registry.mirrors."https://docker.m.daocloud.io"]endpoint = ["https://docker.m.daocloud.io"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."https://noohub.ru"]endpoint = ["https://noohub.ru"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."https://huecker.io"]endpoint = ["https://huecker.io"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."https://dockerhub.timeweb.cloud"]endpoint = ["https://dockerhub.timeweb.cloud"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."https://docker.rainbond.cc"]endpoint = ["https://docker.rainbond.cc"]#然后需要开启cgroup,用于限制分配给进程的资源。将SystemdCgroup设置为true
SystemdCgroup = true#启动containerd,并设置为开机自启动
systemctl start containerd
systemctl enable --now containerd#开放端口,这是百度出的K8S集群需要通信的端口号
ufw allow 6443
ufw allow 10248
ufw allow 10259
ufw allow 10257
ufw allow 10250
ufw allow 10251
ufw allow 10252
ufw allow 10259
ufw allow 10257
ufw allow 10255
ufw allow 10256
ufw allow 2375
ufw allow 8472
ufw allow 4789
ufw allow 9099
ufw allow 9796
ufw allow 2379
ufw allow 2380
ufw allow 80
ufw allow 443
ufw allow 9443#开机自启动
ufw enable#当然你也可以无脑操作关闭防火墙,但生产环境不建议,如果你只是本地跑跑玩玩
ufw disable

kubernetesmasterprd02containerd_151">2.2 hep-kubernetes-master-prd-02配置containerd

#设置主机名
hostnamectl set-hostname hep-kubernetes-master-prd-02
#修改hosts文件,把k8s所有机器主机名都填上去,这样集群内就可以根据主机名匹配到对应的IP地址,从而进行通信了
vim /etc/hosts
#增加如下内容
192.168.31.41 hep-kubernetes-master-prd-01
192.168.31.42 hep-kubernetes-master-prd-02
192.168.31.43 hep-kubernetes-master-prd-03
192.168.31.44 hep-kubernetes-apiserver-lb-prd-01
192.168.31.45 hep-kubernetes-apiserver-lb-prd-02
192.168.31.46 hep-kubernetes-worker-prd-01
192.168.31.47 hep-kubernetes-worker-prd-02
192.168.31.48 hep-kubernetes-worker-prd-03#设置为中国上海时区
timedatectl set-timezone Asia/Shanghai#时间同步工具
apt install -y ntpdate
#进行时间同步
ntpdate ntp.aliyun.com#修改/etc/fstab文件注释掉带/swap.img的这一行
vim /etc/fstab# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
EOF# 应用 sysctl 参数而不重新启动
sysctl --system#验证 net.ipv4.ip_forward 是否设置为 1
sysctl net.ipv4.ip_forward#选用的容器运行时是containerd,版本号为 1.7.20,可直接执行下面这行命令下载此安装包
curl -LO https://github.com/containerd/containerd/releases/download/v1.7.20/cri-containerd-cni-1.7.20-linux-amd64.tar.gz#我这里是使用的webmin远程登录到家里的机器,从这台机器拷贝containerd到当前机器
scp root@192.168.31.2:/usr/software/cri-containerd-cni-1.7.20-linux-amd64.tar.gz /usr/software/#压缩包解压到根目录
tar -zxvf cri-containerd-cni-1.7.20-linux-amd64.tar.gz -C /#查看版本号
containerd --version#因为安装后默认是不自带配置文件的,所以需要创建目录并生成配置文件
mkdir /etc/containerd#执行这行命令生成配置文件
containerd config default | sudo tee /etc/containerd/config.tomlvim /etc/containerd/config.toml
#因为默认的pause镜像是在谷歌上拉取的,国内拉取不下来,所以需要修改 /etc/containerd/config.toml 配置文件,将pause镜像改为 registry.aliyuncs.com/google_containers/pause:3.9
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
#搜索plugins."io.containerd.grpc.v1.cri".registry.mirrors,增加几个docker仓库
[plugins."io.containerd.grpc.v1.cri".registry.mirrors][plugins."io.containerd.grpc.v1.cri".registry.mirrors."https://docker.m.daocloud.io"]endpoint = ["https://docker.m.daocloud.io"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."https://noohub.ru"]endpoint = ["https://noohub.ru"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."https://huecker.io"]endpoint = ["https://huecker.io"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."https://dockerhub.timeweb.cloud"]endpoint = ["https://dockerhub.timeweb.cloud"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."https://docker.rainbond.cc"]endpoint = ["https://docker.rainbond.cc"]#然后需要开启cgroup,用于限制分配给进程的资源。将SystemdCgroup设置为true
SystemdCgroup = true#启动containerd,并设置为开机自启动
systemctl start containerd
systemctl enable --now containerd#开放端口,这是百度出的K8S集群需要通信的端口号
ufw allow 6443
ufw allow 10248
ufw allow 10259
ufw allow 10257
ufw allow 10250
ufw allow 10251
ufw allow 10252
ufw allow 10259
ufw allow 10257
ufw allow 10255
ufw allow 10256
ufw allow 2375
ufw allow 8472
ufw allow 4789
ufw allow 9099
ufw allow 9796
ufw allow 2379
ufw allow 2380
ufw allow 80
ufw allow 443
ufw allow 9443#开机自启动
ufw enable#当然你也可以无脑操作关闭防火墙,但生产环境不建议,如果你只是本地跑跑玩玩
ufw disable

kubernetesmasterprd03containerd_262">2.3 hep-kubernetes-master-prd-03配置containerd

#设置主机名
hostnamectl set-hostname hep-kubernetes-master-prd-03
#修改hosts文件,把k8s所有机器主机名都填上去,这样集群内就可以根据主机名匹配到对应的IP地址,从而进行通信了
vim /etc/hosts
#增加如下内容
192.168.31.41 hep-kubernetes-master-prd-01
192.168.31.42 hep-kubernetes-master-prd-02
192.168.31.43 hep-kubernetes-master-prd-03
192.168.31.44 hep-kubernetes-apiserver-lb-prd-01
192.168.31.45 hep-kubernetes-apiserver-lb-prd-02
192.168.31.46 hep-kubernetes-worker-prd-01
192.168.31.47 hep-kubernetes-worker-prd-02
192.168.31.48 hep-kubernetes-worker-prd-03#设置为中国上海时区
timedatectl set-timezone Asia/Shanghai#时间同步工具
apt install -y ntpdate
#进行时间同步
ntpdate ntp.aliyun.com#修改/etc/fstab文件注释掉带/swap.img的这一行
vim /etc/fstab# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
EOF# 应用 sysctl 参数而不重新启动
sysctl --system#验证 net.ipv4.ip_forward 是否设置为 1
sysctl net.ipv4.ip_forward#选用的容器运行时是containerd,版本号为 1.7.20,可直接执行下面这行命令下载此安装包
curl -LO https://github.com/containerd/containerd/releases/download/v1.7.20/cri-containerd-cni-1.7.20-linux-amd64.tar.gz#我这里是使用的webmin远程登录到家里的机器,从这台机器拷贝containerd到当前机器
scp root@192.168.31.2:/usr/software/cri-containerd-cni-1.7.20-linux-amd64.tar.gz /usr/software/#压缩包解压到根目录
tar -zxvf cri-containerd-cni-1.7.20-linux-amd64.tar.gz -C /#查看版本号
containerd --version#因为安装后默认是不自带配置文件的,所以需要创建目录并生成配置文件
mkdir /etc/containerd#执行这行命令生成配置文件
containerd config default | sudo tee /etc/containerd/config.tomlvim /etc/containerd/config.toml
#因为默认的pause镜像是在谷歌上拉取的,国内拉取不下来,所以需要修改 /etc/containerd/config.toml 配置文件,将pause镜

http://www.ppmy.cn/devtools/138255.html

相关文章

Python plotly库介绍

一、引言 在数据可视化领域&#xff0c;Python提供了众多强大的库。其中&#xff0c;plotly是一个功能强大、交互式的可视化库&#xff0c;可以创建各种类型的图表&#xff0c;包括线图、散点图、柱状图、饼图、3D图表等。它不仅提供了美观的可视化效果&#xff0c;还支持交互式…

三、计算机视觉_08YOLO目标检测

0、前言 YOLO作为目前CV领域的扛把子&#xff0c;分类、检测等任务样样精通&#xff0c;本文将基于两个小案例&#xff0c;用YOLO做检测任务&#xff0c;看看效果如何 1、对图片内容做检测 假设我有一张名为picture.jpeg的图片&#xff0c;其内容如下 我将图片和代码放到了同…

mysql将一个表的数据插入到另一个表中

在MySQL中&#xff0c;可以使用INSERT INTO ... SELECT ...语句将一个表中的数据插入到另一个表。假设我们有两个表&#xff1a;source_table&#xff08;源表&#xff09;和target_table&#xff08;目标表&#xff09;&#xff0c;它们具有相同的结构。以下是一个示例代码&am…

360发布多模态创作引擎纳米搜索,近屿智能带你了解多模态大模型

11月27日晚&#xff0c;360集团正式发布了全新的多模态内容创作引擎——纳米搜索。这款引擎以“搜学写创”为核心能力&#xff0c;不仅打破了传统网页搜索的局限&#xff0c;还超越了现有的答案引擎&#xff0c;被行业解读为搜索引擎3.0&#xff0c;即“创作引擎”。 360集团创…

云计算之elastaicsearch logstach kibana面试题

1.ELK是什么? ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写 Elasticsearch:负责日志检索和储存 Logstash:负责日志的收集和分析、处理 Kibana:负责日志的可视化 这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,…

vue中如何获取public路径

在Vue项目中获取public路径的方法有多种&#xff0c;主要通过以下1、使用相对路径、2、使用环境变量、3、使用webpack配置三种方式来实现。这些方法可以帮助开发者在项目中更灵活地使用静态资源。下面将详细解释每种方法以及如何使用它们。 一、使用相对路径 在Vue项目中&#…

论文笔记 SliceGPT: Compress Large Language Models By Deleting Rows And Columns

欲买桂花同载酒&#xff0c;终不似&#xff0c;少年游。 数学知识 秩&#xff1a; 矩阵中最大线性无关的行/列向量数。行秩与列秩相等。 线性无关&#xff1a;对于N个向量而言&#xff0c;如果任取一个向量 v \textbf{v} v&#xff0c;不能被剩下的N-1个向量通过线性组合的方式…

Python 网络爬虫高级教程:分布式爬取与大规模数据处理

经过基础爬虫和进阶爬虫的学习&#xff0c;我们已经掌握了爬虫的基本原理、动态内容处理及反爬机制的应对。然而&#xff0c;当我们面对海量数据或需要高效爬取多个站点时&#xff0c;分布式爬虫和数据存储、处理能力就显得尤为重要。本篇博客将带你迈向网络爬虫的高级阶段&…