代码编织梦想

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如下:

hostname IP function Version
hep-kubernetes-master-prd-01 192.168.31.41 Control plane Ubuntu-Server-24.04
hep-kubernetes-master-prd-02 192.168.31.42 Control plane Ubuntu-Server-24.04
hep-kubernetes-master-prd-03 192.168.31.43 Control plane Ubuntu-Server-24.04
hep-kubernetes-apiserver-lb-prd-01 192.168.31.44 LoadBalancer Ubuntu-Server-24.04
hep-kubernetes-apiserver-lb-prd-02 192.168.31.45 LoadBalancer Ubuntu-Server-24.04
hep-kubernetes-worker-prd-01 192.168.31.46 worker node Ubuntu-Server-24.04
hep-kubernetes-worker-prd-02 192.168.31.47 worker node Ubuntu-Server-24.04
hep-kubernetes-worker-prd-03 192.168.31.48 worker node Ubuntu-Server-24.04

角色分配:

  • hep-kubernetes-apiserver-lb-prd-01hep-kubernetes-apiserver-lb-prd-02安装keepalivedhaproxy,做主节点apiserver的负载均衡器

  • hep-kubernetes-master-prd-01hep-kubernetes-master-prd-02hep-kubernetes-master-prd-03为三台master节点

  • hep-kubernetes-worker-prd-01hep-kubernetes-worker-prd-02hep-kubernetes-worker-prd-03为三台worker节点。

在安装部署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

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.toml

vim /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

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.toml


vim /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

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.toml


vim /etc/containerd/config.toml
#因为默认的pause镜像是在谷歌上拉取的,国内拉取不下来,所以需要修改 /etc/containerd/config.toml 配置文件,将pause镜
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/JingLisen/article/details/144059560

基于ubuntu24.04部署kubernetes1.31_ubuntu24.04 minikube1.31启动失败-爱代码爱编程

基于 Containerd 为 Kubernetes 提供了容器运行时,部署K8S 1.31 集群 一、主机准备 1.1 K8S概述 Kubernetes 也称为 K8s,是一种用于自动部署、扩展和管理容器化

k8s微服务架构就是云原生吗?两者是什么关系-爱代码爱编程

k8s微服务架构就是云原生吗?K8s微服务架构并不等同于云原生,但两者之间存在密切的联系。Kubernetes在云原生架构中扮演着核心组件的角色,它简化了容器化应用程序的管理,提供了弹性、自动化和安全性,使开发者能够更轻松地构建和部署现代化的应用程序。然而,云原生不仅仅局限于Kubernetes或任何单一的技术,它是一种方法论和最佳实践,涵盖了多个技术和理

运维tips:docker或k8s集群拉取harbor私有容器镜像仓库配置指南-爱代码爱编程

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] Docker与Kubernetes集群拉取Harbor私有容器镜像仓库配置 描述:在现在微服务、云原生的环境下,通常我们会在企业中部署Docker和Kubernetes集群,并且会在企业内部搭建Harbor私有镜像仓库以保证开发源码安全,以及加快CI/CD流水线速度,从而

关于如何在k8s中搭建一个nsfw黄图鉴定模型-爱代码爱编程

随着现在应用内图片越来越多,安全审查也是必不可少的一个操作了 下面手把手教你如何将huggingface中的黄图检测模型部署到自己的服务器上去 1.找到对应的模型 nsfw_image_detection 2.在本地先验

k8s的水平自动扩容和缩容hpa-爱代码爱编程

HPA全称是Horizontal Pod Autoscaler,翻译成中文是POD水平自动伸缩,HPA可以基于CPU利用率对replication controller、deployment和replicaset中的pod数量进行自动扩缩容(除了CPU利用率也可以基于其他应程序提供的度量指标custom metrics进行自动扩缩容)。pod自动缩放

k8s存储实验-爱代码爱编程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 实验目标一、环境准备二、nfs环境的部署及连通性验证三、yaml文件的整理1. pv文件2.pvc文件3.pod文件

k8s内存溢出问题剖析:排查与解决方案-爱代码爱编程

文章目录 一、背景二、排查方案:1. 可能是数据量超出了限制的大小,检查数据目录大小2. 查看是否是内存溢出2.1 排查数据量(查看数据目录大小是否超过limit限制)2.2 查看pod详情发现问题