k8s1.24升级1.28

0、简介

这里只用3台服务器来做一个简单的集群,当前版本是1.24.17目标升级到1.28.17

地址主机名
192.168.160.40kuber-master-1
192.168.160.41kuber-master-2
192.168.160.42kuber-node-1

因为1.24已经更换过了容器运行时,所以之后的升级相对就会简单,只要递归升级

从1.24-->1.25-->1.26-->1.27-->1.28。这期间只需要注意插件的版本就行。

1、升级calico

calico对应

System requirements | Calico Documentation

升级calico到3.26

目前最新的calico版本支持1.25~1.30的k8s版本

直接升级到3.26

curl https://raw.githubusercontent.com/projectcalico/calico/v3.26.5/manifests/calico.yaml -o calico.yaml

kubectl apply -f calico.yaml

2、升级集群master

升级第一个master

yum list --showduplicates kubelet kubeadm kubectl --disableexcludes=kubernetes | grep 1.25
yum install kubeadm-1.25.14-0 kubectl-1.25.14-0 kubelet-1.25.14-0 --disableexcludes=kubernetes -y
kubeadm upgrade plan
kubectl drain master --ignore-daemonsets
kubeadm upgrade apply 1.25.14
systemctl daemon-reload
systemctl restart kubelet
kubectl uncordon master

升级其他的master

yum install kubeadm-1.25.14-0 kubectl-1.25.14-0 kubelet-1.25.14-0 --disableexcludes=kubernetes -y
kubectl drain master --ignore-daemonsets
kubeadm upgrade node
systemctl daemon-reload
systemctl restart kubelet
kubectl uncordon master

3、升级集群node

和升级其他master的步骤一样

yum install kubeadm-1.25.14-0 kubectl-1.25.14-0 kubelet-1.25.14-0 --disableexcludes=kubernetes -y
kubectl drain node --ignore-daemonsets
kubeadm upgrade node
systemctl daemon-reload
systemctl restart kubelet
kubectl uncordon node

4、升级ingress

将ingress的包fetch下来,修改里边的参数

我这里就修改 hostport、service类型NodePort、pod的类型为Daemonset

先升级到4.9.1的版本

helm fetch ingress-nginx/ingress-nginx --version 4.9.1

tar -zxvf ingress-nginx-4.9.1.tgz

helm upgrade ingress-nginx -f values.yaml . --namespace ingress-nginx

问题
Error: UPGRADE FAILED: template: ingress-nginx/templates/controller-role.yaml:48:9: executing "ingre.......

如果碰到了上边的问题,可能由于helm版本过低了,升级一下helm版本

https://github.com/helm/helm/releases/tag/v3.17.2

后边在升级到1.26,1.27,1.28不用在升级插件了。直接参照升级集群去做就可以了。

### 内网环境下安装 Kubernetes 1.24 版本 #### 准备工作 为了在内网环境中成功安装 Kubernetes 1.24,需提前完成如下准备工作: - **配置 `/etc/hosts` 文件** 确保所有节点能够通过主机名互相解析。编辑各节点上的 `/etc/hosts` 文件,添加集群中其他机器的信息。 ```bash echo "192.168.0.1 master" >> /etc/hosts echo "192.168.0.2 node1" >> /etc/hosts ``` - **允许 iptables 检查桥接流量** 设置系统参数以便容器间的通信正常运作。 ```bash cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF sudo modprobe br_netfilter ``` - **配置网桥过滤内核转发** 调整内核参数支持 Docker Kubelet 的功能需求。 ```bash cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl --system ``` - **关闭防火墙并禁用交换分区** 停用不必要的服务减少干扰因素。 ```bash sudo swapoff -a sudo systemctl stop firewalld && sudo systemctl disable firewalld ``` #### 安装必要组件 由于处于内网环境,无法直接访问外部仓库,因此需要事先准备好所需的 RPM 或 DEB 包,并将其放置于本地 HTTP(S) 服务器供后续安装使用。 对于基于 RedHat/CentOS 的操作系统: ```bash yum install -y ./packages/*.rpm ``` 对于基于 Debian/Ubuntu 的操作系统: ```bash dpkg -y apt install -y kubeadm=1.24.1-00 kubelet=1.24.1-00 kubectl=1.24.1-00[^1] ``` 注意:上述命令中的 `*.deb` 应替换为实际路径下的具体包名称;如果已知确切版本,则可以直接指定版本号进行安装。 #### 修改默认镜像源地址 针对国内用户,默认的 pause 镜像可能难以获取,建议更改为阿里云提供的镜像资源。 ```bash sed -i 's|sandbox_image.*$|sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"|g' /var/lib/kubelet/config.yaml[^5] ``` #### 初始化 Master 节点 当一切就绪之后,在 Master 上执行初始化操作。 ```bash kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers ``` 此过程可能会花费一些时间等待所需镜像被拉取完毕。完成后按照提示信息配置管理员账户权限以及创建 Pod 网络插件(如 Flannel, Calico 等),以实现跨宿主机之间的网络互通。 #### 加入 Worker 节点 最后一步是在各个 Workder 节点上运行由 `kubeadm init` 输出得到的 join 命令来加入到现有集群当中去。 ```bash kubeadm join ... ``` 以上即完成了整个内网环境下 Kubernetes 1.24 的搭建流程概述[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值