当前位置:

首页 > 系统应用 > Kubernetes1.20.2高可用集群快速升级及扩容

Kubernetes1.20.2高可用集群快速升级及扩容

本文目录

    2021年已经到来,让我们有一个新的开始。Kubernetes 1.20.2正式发布啦,高可用集群能够直接进行升级(hub.docker.com已停止更新,要使用registry.cn-hangzhou.aliyuncs.com/google_containers哦)。快速升级(包含国内镜像快速下载

    2021年已经到来,让我们有一个新的开始。

    Kubernetes 1.20.2正式发布啦,高可用集群能够直接进行升级(hub.docker.com已停止更新,要使用registry.cn-hangzhou.aliyuncs.com/google_containers哦)。快速升级(包含国内镜像快速下载链接)主要有三个步骤,分别是升级kubeadm/kubectl/kubelet版本、拉取镜像、升级Kubernetes集群。大家可以参考《Ubuntu上软件锁定版本不更新》来安装特定的DockerCE版本。

    提前将镜像传送到相应节点上,然后在任何一个master节点运行下面的命令即可完成升级。

    kubeadm upgrade apply v1.20.2

    在当前的集群中新增节点:

    • 第一步,重新创建certificate key和token:
    sudo kubeadm init phase upload-certs --upload-certs

    ### Got:
    # [upload-certs] Using certificate key:
    # 2ffe5bbf7d2e670d5bcfb03dac194e2f21eb9715f2099c5f8574e4ba7679ff78

    # Add certificate-key for Multi Master Node.
    kubeadm token create --print-join-command --certificate-key 2ffe5bbf7d2e670d5bcfb03dac194e2f21eb9715f2099c5f8574e4ba7679ff78
    • 第二步,增加Worker节点:
    kubeadm join 192.168.199.173:6443 --token rlxvkn.2ine1loolri50tzt
    --discovery-token-ca-cert-hash sha256:86e68de8febb844ab8f015f6af4526d78a980d9cdcf7863eebb05b17c24b9383
    • 第三步,增加master节点:
    kubeadm join 192.168.199.173:6443 --token rlxvkn.2ine1loolri50tzt
    --discovery-token-ca-cert-hash sha256:86e68de8febb844ab8f015f6af4526d78a980d9cdcf7863eebb05b17c24b9383
    --control-plane --certificate-key 440a880086e7e9cbbcebbd7924e6a9562d77ee8de7e0ec63511436f2467f7dde

    在arm上部署kubernetes参考:

    • Kubernetes for arm 1.18.0快速安装
    • kubernetes on arm发展现状

    升级时出现一些小错误,后来解决了:

    • kubernetes高可用集群升级的etcd错误
    • Ubuntu跨版本升级出错问题解决
    • Ubuntu apt upgrade出现error "NO_PUBKEY"的解决

    1、升级kubeadm/kubectl/kubelet版本

    sudo apt install kubeadm=1.20.2-00 kubectl=1.20.2-00 kubelet=1.20.2-00
    • 设置中国区的软件源,参考:kubernetes for china

    查看该版本的容器镜像版本:

    kubeadm config images list

    输出如下:

    ~# kubeadm config images list

    k8s.gcr.io/kube-apiserver:v1.20.2
    k8s.gcr.io/kube-controller-manager:v1.20.2
    k8s.gcr.io/kube-scheduler:v1.20.2
    k8s.gcr.io/kube-proxy:v1.20.2
    k8s.gcr.io/pause:3.2
    k8s.gcr.io/etcd:3.4.13-0
    k8s.gcr.io/coredns:1.7.0

    2、拉取容器镜像

    原始的kubernetes镜像文件在gcr上,不能直接下载。我原来是把镜像到了阿里云的杭州机房的容器仓库里,拉取还是比较快的。现在hub.docker.com的访问没有问题了,有同学把镜像放到料里面,而且更新还挺及时,可以直接用。

    #mirrorgcrio已经没有更新了...
    #MY_REGISTRY=mirrorgcrio
    MY_REGISTRY=registry.cn-hangzhou.aliyuncs.com/google_containers
    K8S_VERSION="1.20.2"

    echo ""
    echo "=========================================================="
    echo "Pull Kubernetes for x64 v$K8S_VERSION Images from docker.io ......"
    echo "=========================================================="
    echo ""


    ## 拉取镜像
    docker pull ${MY_REGISTRY}/kube-apiserver:v$K8S_VERSION
    docker pull ${MY_REGISTRY}/kube-controller-manager:v$K8S_VERSION
    docker pull ${MY_REGISTRY}/kube-scheduler:v$K8S_VERSION
    docker pull ${MY_REGISTRY}/kube-proxy:v$K8S_VERSION
    docker pull ${MY_REGISTRY}/etcd:3.4.13-0
    docker pull ${MY_REGISTRY}/pause:3.2

    #docker pull ${MY_REGISTRY}/coredns-arm64:1.7.0
    docker pull coredns/coredns:1.7.0

    ## 添加Tag
    docker tag ${MY_REGISTRY}/kube-apiserver:v$K8S_VERSION k8s.gcr.io/kube-apiserver:v$K8S_VERSION
    docker tag ${MY_REGISTRY}/kube-scheduler:v$K8S_VERSION k8s.gcr.io/kube-scheduler:v$K8S_VERSION
    docker tag ${MY_REGISTRY}/kube-controller-manager:v$K8S_VERSION k8s.gcr.io/kube-controller-manager:v$K8S_VERSION
    docker tag ${MY_REGISTRY}/kube-proxy:v$K8S_VERSION k8s.gcr.io/kube-proxy:v$K8S_VERSION
    docker tag ${MY_REGISTRY}/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0
    docker tag ${MY_REGISTRY}/pause:3.2 k8s.gcr.io/pause:3.2

    #docker tag ${MY_REGISTRY}/coredns-arm64:1.7.0 k8s.gcr.io/coredns:1.7.0
    docker tag coredns/coredns:1.7.0 k8s.gcr.io/coredns:1.7.0

    echo ""
    echo "=========================================================="
    echo "Pull Kubernetes for x64 v$K8S_VERSION Images FINISHED."
    echo "into docker.io/mirrorgcrio, "
    echo " by openthings@https://my.oschina.net/u/2306127."
    echo "=========================================================="

    echo ""

    保存为shell脚本,然后执行。

    • 或者,下载脚本:https://github.com/openthings/kubernetes-tools/blob/master/kubeadm/2-images/

    3、升级Kubernetes集群

    全新安装:

    #指定IP地址,1.20.2版本:
    sudo kubeadm init --kubernetes-version=v1.20.2 --apiserver-advertise-address=10.1.1.199 --pod-network-cidr=10.244.0.0/16

    高可用安装(多master节点):

    sudo kubeadm init --kubernetes-version=v1.20.2
    --apiserver-advertise-address=192.168.199.173
    --control-plane-endpoint=192.168.199.173:6443
    --pod-network-cidr=10.244.0.0/16
    --upload-certs
    • 使用kubeadm部署高可用Kubernetes 1.17.0

    先查看一下需要升级的各个组件的版本。

    使用kubeadm upgrade plan,输出的版本升级信息如下:

    Components that must be upgraded manually after you ha ve upgraded the control plane with 'kubeadm upgrade apply':
    COMPONENT CURRENT A VAILABLE
    Kubelet 1 x v1.20.0 v1.20.2
    8 x v1.20.0 v1.20.2

    Upgrade to the latest version in the v1.20 series:

    COMPONENT CURRENT A VAILABLE
    API Server v1.20.0 v1.20.2
    Controller Manager v1.20.0 v1.20.2
    Scheduler v1.20.0 v1.20.2
    Kube Proxy v1.20.0 v1.20.2
    CoreDNS 1.7.0 1.7.0
    Etcd 3.4.13-0 3.4.13-0

    You can now apply the upgrade by executing the following command:

    kubeadm upgrade apply v1.20.2

    确保上面的容器镜像已经下载(如果没有提前下载,可能被网络阻隔导致挂起),然后执行升级:

    kubeadm upgrade apply v1.20.2

    看到下面信息,就OK了。

    [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.20.2". Enjoy!

    然后,配置当前用户环境:

      mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    就可以使用kubectl version来查看状态和kubectl cluster-info查看服务地址。

    • 如果服务没有起来,测试一下:
      • 查看服务版本,kubectl version
      • 查看集群信息,kubectl cluster-info
      • 查看服务状态,sudo systemctl status kubelet
      • 查看服务日志,journalctl -xefu kubelet

    4、工作节点的升级

    每个工作节点需要拉取上面对应版本的镜像,以及安装kubelet的对应版本。

    检查版本:

    ~$ kubectl version

    查看Pod信息:

    kubectl get pod --all-namespaces

    完成。

    注意:1.17后版本,如果使用kubeadm安装为高可用模式,所有master节点都可以被升为最新版本(需要提前把k8s的容器镜像放到节点上去)。

    更多参考:

    • Kubernetes 1.17.4快速升级
    • Kubernetes 1.17.2快速升级
    • Kubernetes 1.17.1快速升级
    • Kubernetes 1.17.0 已发布
    • 使用kubeadm部署高可用Kubernetes 1.17.0
    • Kubernetes 1.17.0管理界面Dashboard 2
    • 设置Kubernetes的Master节点运行应用pod
    • Kubernetes pod中systemctl状态探针失败问题
    • 运用Jupyter Notebook进行系统管理
    • 将Jupyter/JupyterHub/JupyterLab运行为系统服务
    • 快速设置JupyterHub for K8s
    • 在JupyterHub for K8s使用GlusterFS存储
    本文内容来源于网友投稿,如有侵权请联系删除。
    作者最新文章
    系统应用
    相关文章 更多
    win10升级新版本后取消开机密码失效怎么修复
    win10升级新版本后取消开机密码失效怎么修复

    Windows 10更新后开机突然要求输入密码?本文解析自动登录失效的真实原因,提供通过netplwiz重新保存凭据、关闭Windows Hello干扰及排查账户策略的完整步骤,助你恢复免密进入桌面。

    win10更新没下载完反复重试该怎么停止任务
    win10更新没下载完反复重试该怎么停止任务

    Windows 10更新下载失败反复重试怎么办?不要直接停用服务。本文教你通过设置页面暂停更新、启用按流量计费连接以及调整活动时间,安全地暂时停止下载任务并避免意外重启。

    win10怎么取消系统准备强制升级新版本
    win10怎么取消系统准备强制升级新版本

    面对Win10强制升级新版本的提示,本文解析家庭版与专业版的应对差异。介绍如何通过暂停更新、设置活动时间临时避让,以及利用组策略控制功能版本。强调Windows 10支持终止后的安全风险,避免使用高风险的禁用服务手段。

    win10组策略找不到更新选项该怎么处理
    win10组策略找不到更新选项该怎么处理

    Win10组策略编辑器中找不到Windows Update选项怎么办?本文分析家庭版与专业版的权限差异,厘清本地策略与域策略的区别,提供设置页替代方案及企业环境排查思路,避免盲目修改注册表或安装非官方补丁。

    win10取消开机密码会影响电脑里的文件安全吗?
    win10取消开机密码会影响电脑里的文件安全吗?

    很多人为了便捷选择取消 Win10 开机密码,这会导致文件丢失吗?本文详解取消密码后文件访问权限的变化、BitLocker 加密的有效性以及更安全的替代方案,帮助用户在便利与数据安全之间做出正确选择。

    win10弹出立即重启更新怎么延后这个操作
    win10弹出立即重启更新怎么延后这个操作

    Win10弹出立即重启更新会打断工作?本文介绍如何通过Windows Update页面安排重启时间、设置活动时段以及暂停后续更新,有效延后重启操作,保护未保存的工作成果。

    win10自动更新在夜间偷偷运行怎么限制
    win10自动更新在夜间偷偷运行怎么限制

    Win10晚上自动下载或重启怎么办?不要直接禁用服务。本文教你通过设置活动时间、安排指定重启时间及短期暂停更新,精准控制Windows Update行为,避免夜间网络占用和意外重启,同时保留系统安全性。

    win10本地账户取消开机密码有哪些简单方法
    win10本地账户取消开机密码有哪些简单方法

    想跳过Win10开机输入密码?本文详解本地账户清空密码、netplwiz自动登录及PIN设置的步骤与区别,同时提醒Microsoft账户和域策略下的限制与风险。

    win10更新重启倒计时怎么取消不让电脑重启
    win10更新重启倒计时怎么取消不让电脑重启

    面对Win10更新重启倒计时,如何通过设置界面取消或延后?本文详解活动时间、安排重启及暂停更新的位置与作用,帮助你在不影响工作的前提下管理系统重启。

    win10取消开机密码重启后还要输密码怎么办?
    win10取消开机密码重启后还要输密码怎么办?

    Win10设置取消密码后重启依然要求输入?这通常不是系统故障,而是自动登录配置错误或睡眠唤醒验证未关闭。本文教你区分本地账户与微软账户,正确设置netplwiz自动登录,并检查锁屏策略,彻底解决开机免密问题。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    macOS软件
    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    Mac软件 更多
    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

    灵活计算器
    灵活计算器
    macOS/iOS/Android

    灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

    WINDOWS 更多
    3dmax(3ds max)
    3dmax(3ds max)
    Windows

    Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。