kubeadm方式升级k8s集群

一、注意事项

升级前最好备份所有组件及数据,例如etcd

不要跨两个大版本进行升级,可能会存在版本bug,如:

1.19.4-->1.20.4 可以

1.19.4-->1.21.4 不可以

跨多个版本的可以逐个版本进行升级。

二、查看当前版本

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash">[root@k8s-master1 ~]<span style="color:#787878"># kubectl get nodes</span>
NAME          STATUS   ROLES                  AGE   VERSION
k8s-master1   Ready    control-plane,master   41d   v1.20.4
k8s-node1     Ready    jenkins,node           41d   v1.20.4
k8s-node2     Ready    gitlab,node            38d   v1.20.4</code></span></span></span></span>

目前我的版本是v1.20.4,官网最新版本已经到1.25.0。升级到最新版本需要逐步升级:v1.20.4-->v1.21.4-->v1.22.4-->v1.23.4-->v1.24.4-->v1.25.0,共升级5次。

三、确定当前版本

先配置阿里云yum源,每台节点都需要配置

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash">[root@k8s-master1 yum.repos.d]<span style="color:#787878"># pwd</span>
/etc/yum.repos.d
[root@k8s-master1 yum.repos.d]<span style="color:#787878"># cat kubernetes.repo</span>
[kubernetes]
<span style="color:#919e6b">name</span><span style="color:#919e6b">=</span>Kubernetes
<span style="color:#919e6b">baseurl</span><span style="color:#919e6b">=</span>https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
<span style="color:#919e6b">enabled</span><span style="color:#919e6b">=</span><span style="color:#cf694a">1</span>
<span style="color:#919e6b">gpgcheck</span><span style="color:#919e6b">=</span><span style="color:#cf694a">0</span>
<span style="color:#919e6b">repo_gpgcheck</span><span style="color:#919e6b">=</span><span style="color:#cf694a">0</span>
<span style="color:#919e6b">gpgkey</span><span style="color:#919e6b">=</span>https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg</code></span></span></span></span>

配置后更新yum源,执行命令:

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash"><span style="color:#787878">#yum clean all</span>
<span style="color:#787878">#yum makecache</span></code></span></span></span></span>

查询版本,会列出目前所有的正式版本,我们现在从1.20.4升级到1.21版本,所以需要找到v.1.21.4版本号

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash">[root@k8s-master1 yum.repos.d]<span style="color:#787878"># yum list --showduplicates kubeadm --disableexcludes=kubernetes</span></code></span></span></span></span>

四、开始升级---升级 master 节点

4.1 在 master 节点上执行如下命令,升级 kubeadm,对应的版本必须一致v1.24.4

如果是高可用集群,找其中一台master执行以下命令

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash">[root@k8s-master1 ~]<span style="color:#787878"># yum install -y kubeadm-1.21.4-0 --disableexcludes=kubernetes</span>

Upgrade  <span style="color:#cf694a">1</span> Package

Total download size: <span style="color:#cf694a">9.1</span> M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
61c56c520cec529ff02ca33f37f190d23253acff6e84bd695cc045cdd4f52b2e-kubeadm-1.21.4-0.x86_64.rpm                                                 <span style="color:#919e6b">|</span> <span style="color:#cf694a">9.1</span> MB  00:01:24
Running transaction check
Running transaction <span style="color:#f9ee9a">test</span>
Transaction <span style="color:#f9ee9a">test</span> succeeded
Running transaction
  Updating   <span style="color:#f9ee9a">:</span> kubeadm-1.21.4-0.x86_64                                                                                                                          <span style="color:#cf694a">1</span>/2
  Cleanup    <span style="color:#f9ee9a">:</span> kubeadm-1.20.4-0.x86_64                                                                                                                          <span style="color:#cf694a">2</span>/2
  Verifying  <span style="color:#f9ee9a">:</span> kubeadm-1.21.4-0.x86_64                                                                                                                          <span style="color:#cf694a">1</span>/2
  Verifying  <span style="color:#f9ee9a">:</span> kubeadm-1.20.4-0.x86_64                                                                                                                          <span style="color:#cf694a">2</span>/2

Updated:
  kubeadm.x86_64 <span style="color:#cf694a">0</span>:1.21.4-0

Complete<span style="color:#919e6b">!</span></code></span></span></span></span>

4.2、在同一台master上继续继续以下命令,kubeadm更新计划

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash">[root@k8s-master1 ~]<span style="color:#787878"># kubeadm upgrade plan</span></code></span></span></span></span>

kubeadm更新计划会打印出目前能支持到的版本,显示我最高可以升级到v1.21.14,由于前面kubeadmin更新的是v1.21.4版本,后续也必须保持统一版本,如果这里apply了1.21.14会报错

在打印信息中可以看到,升级集群每个组件对应的当前版本和升级后的版本。而且升级的组件只包括kube-apiserver,kube-controller-manager,kube-scheduler,kube-proxy,CoreDNS,etcd。

不包括kubectl,kubelet,docker和网络组件flannel等

4.3 根据上面输出提示,执行如下命令以升级:

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash">[root@k8s-master1 ~]<span style="color:#787878"># kubeadm upgrade apply v1.21.4</span>
....
[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to get nodes
[bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs <span style="color:#f9ee9a">in</span> order <span style="color:#f9ee9a">for</span> nodes to get long term certificate credentials
[bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
[bootstrap-token] configured RBAC rules to allow certificate rotation <span style="color:#f9ee9a">for</span> all node client certificates <span style="color:#f9ee9a">in</span> the cluster
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy

[upgrade/successful] SUCCESS<span style="color:#919e6b">!</span> Your cluster was upgraded to <span style="color:#919e6b">"v1.21.4"</span><span style="color:#f9ee9a">.</span> Enjoy<span style="color:#919e6b">!</span>

[upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets <span style="color:#f9ee9a">if</span> you haven't already <span style="color:#f9ee9a">done</span> so.
<span style="color:#787878">#升级成功</span></code></span></span></span></span>

如果是高可用还需要在其他 master 节点上执行命令:

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash">kubeadm upgrade node</code></span></span></span></span>

在所有的 master 节点上执行如下命令升级 kubelet 和 kubectl

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash">[root@k8s-master1 ~]<span style="color:#787878"># yum install -y kubelet-1.21.4-0 kubectl-1.21.4-0 --disableexcludes=kubernetes</span></code></span></span></span></span>

执行如下命令,以重启 kubelet

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash">[root@k8s-master1 ~]<span style="color:#787878"># systemctl daemon-reload && systemctl restart kubelet</span></code></span></span></span></span>

五、升级 node 节点

5.1 在所有的 node 节点上执行如下命令,升级 kubeadm

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash">[root@k8s-node2 ~]<span style="color:#787878"># yum install -y kubeadm-1.21.4-0 --disableexcludes=kubernetes</span></code></span></span></span></span>

5.2 升级 kubelet 的配置,在所有node节点上执行

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash">[root@k8s-node2 ~]<span style="color:#787878"># kubeadm upgrade node</span>
[upgrade] Reading configuration from the cluster...
[upgrade] FYI: You can look at this config file with <span style="color:#919e6b">'kubectl -n kube-system get cm kubeadm-config -o yaml'</span>
[preflight] Running pre-flight checks
[preflight] Skipping prepull. Not a control plane node.
[upgrade] Skipping phase. Not a control plane node.
[kubelet-start] Writing kubelet configuration to file <span style="color:#919e6b">"/var/lib/kubelet/config.yaml"</span>
[upgrade] The configuration <span style="color:#f9ee9a">for</span> this node was successfully updated<span style="color:#919e6b">!</span>
[upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.</code></span></span></span></span>

5.3 升级 kubelet 和 kubectl

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash">[root@k8s-node2 ~]<span style="color:#787878"># yum install -y kubelet-1.21.4-0 kubectl-1.21.4-0 --disableexcludes=kubernetes</span></code></span></span></span></span>

执行如下命令,以重启 kubelet

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash">[root@k8s-node2 ~]<span style="color:#787878"># systemctl daemon-reload && systemctl restart kubelet</span></code></span></span></span></span>

六、检查集群的状态

版本已经从v1.20.4升级到v1.21.4

<span style="color:#424242"><span style="background-color:#ffffff"><span style="background-color:#212121"><span style="color:#ffffff"><code class="language-bash">[root@k8s-master1 ~]<span style="color:#787878"># kubectl get nodes</span>
NAME          STATUS   ROLES                  AGE   VERSION
k8s-master1   Ready    control-plane,master   41d   v1.21.4
k8s-node1     Ready    jenkins,node           41d   v1.21.4
k8s-node2     Ready    gitlab,node            38d   v1.21.4</code></span></span></span></span>
今天向大家介绍一款非常好用的单机版OCR图文识别软件,它不仅功能多,识别能力强,而且还是免费使用的。OCR软件为什么要使用单机版,懂得都懂,因为如果使用在线识别的OCR软件,用户需要将文档上传互联网服务器的,这样就会导致某些敏感信息暴露在互联网上,导致信息泄露。 软件特色:   1、识别率高、速度快:对于被划分区域内的文字有很高的识别率,而且速度同样很快。   2、导出功能:清华TH-OCR官方版可以将带有表格的文当导出成为RTF格式的文件,从而允许用户在Word等应用程序中继续进行编辑。   3、版面自动分析:对图文混排的文件具有版面自动分析功能,它自动对扫描的版面进行分析,把应识别的文字区域划分出来,之后进行识别。   4、转换图像格式:将扫描进来的图像格式转换成TIFF、BMP或PCZ等格式,具有很大的灵活性。   5、批量识别:可以让用户一次把多页文稿全部扫描之后再进行识别,避免了扫描一页识别一页带来的麻烦,这一版本最多可实现10000页的批量识别。   6、手写体识别:手写的信件或文件就可以扫描到计算机中,识别出来后用电子文档的方式进行保存。   7、自学习:当遇到有生僻字时,可以通过键盘输入进行学习,用户就可以自由地添加一些本来不“认识”的字,大大拓宽了中文OCR系统的识别字符集。   8、排版功能:汉字和英文混排、日文和英文混排、韩文和英文混排同时识别。   9、识别能力:是唯一可以识别2万多汉字的多体文字识别系统,汉字识别国内最优。   10、支持多接口:文通TH-OCR支持WINDOWS环境和GB、BIG5、GBK、JIS、 SHIFT-JIS和KSC等多种内码,适合全球各个地区使用。TH-OCR还具有自学习功能,不论什么生僻字,都可以通过键盘输入进行学习,大大拓宽了OCR系统的识别字符集。
内容概要:本文详细介绍了Tarjan算法及其在求解有向图强连通分量(SCC)中的应用。首先解释了连通性的概念,区分了无向图和有向图的连通分量,重点阐述了有向图中强连通分量的定义及其重要性,包括编译器优化、社交网络分析、电子电路设计和生态系统建模等领域。接着介绍了Tarjan算法的优势,如单次DFS遍历、线性时间复杂度和高效的空间利用。文章深入解析了算法的实现细节,包括发现时间数组、最低访问数组、栈状态标记和栈等数据结构的作用。最后,探讨了基于Tarjan算法的拓展应用,如图的缩点技术和2-SAT问题求解,展示了其在依赖关系分析、路径优化、控制流分析和任务调度等方面的应用。 适合人群:具备一定图论基础和编程经验的计算机科学专业学生、软件工程师以及从事算法研究和开发的技术人员。 使用场景及目标:①理解Tarjan算法的工作原理,掌握其在强连通分量识别中的具体实现;②学习如何通过缩点技术将复杂有向图简化为DAG,以优化路径计算和依赖分析;③掌握2-SAT问题的求解方法,提高对布尔可满足性问题的理解和处理能力。 阅读建议:本文内容较为深入,建议读者先熟悉图论基础知识,特别是深度优先搜索(DFS)的相关概念。在学习过程中,结合具体的例子和代码实现,逐步理解各个数据结构和算法步骤的作用,同时关注Tarjan算法在实际应用中的拓展和变种。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

遇见火星

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

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

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

打赏作者

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

抵扣说明:

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

余额充值