ubuntu24.04安装Kubernetes1.31.0(k8s1.30.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如下:

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镜
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的凯尔森同学

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值