クラウド スキルを向上させましょう: CKA 認定と K8s アップグレードのヒントについて詳しく学びましょう。

クラウド スキルを向上させましょう: CKA 認定と K8s アップグレードのヒントについて詳しく学びましょう。

1. 準備知識のポイント

Kubernetes のバージョンアップグレードは非常に高速で、3 か月ごとに 1 つのバージョンが更新されます。多くの新機能が新しいバージョンですぐに反復されます。コミュニティ バージョンの機能との一貫性を保ちながら Kubernetes クラスターをアップグレードするために、コミュニティは kubeadm ツールを通じてクラスターのアップグレードを統一しており、アップグレード手順はシンプルで簡単です。アップグレードの基本的なプロセスは次のとおりです。

  • プライマリコントロールプレーンノードのアップグレード
  • 他のコントロールプレーンノードのアップグレード
  • ワーカーノードのアップグレード

バージョンアップグレードは、一般的に次の 2 つのカテゴリに分けられます。

1. マイナーバージョンアップ

マイナーバージョンアップグレードには、1.14.1 から 1.14.2 へのアップグレードが含まれます。マイナー バージョン アップグレードでは、1.14.1 から 1.14.3 へのアップグレードなど、バージョン間でアップグレードすることもできます。

2. バージョン間のアップグレード

クロスバージョン アップグレードとは、1.14.x から 1.15.x へのアップグレードなど、メジャー バージョン アップグレードを指します。

バージョン間でアップグレードすることはできませんのでご注意ください。

  • 1.19.x → 1.20.y: はい (y > x の場合)
  • 1.19.x → 1.21.y: 断面は作成できなくなりました (y > x の場合)
  • 1.21.x → 1.21.y: これも可能 (y > x である限り)

したがって、メジャー バージョン間でアップグレードする必要がある場合は、段階的に複数回アップグレードする必要があります。

2. アップグレード手順

1. アップグレードするバージョンを決定する

オペレーティング システムのパッケージ マネージャーを使用して、最新のパッチ バージョンを見つけます。

 # 在列表中查找最新的1.29 版本# 它看起来应该是1.29.x-*,其中x 是最新的补丁版本sudo apt update sudo apt-cache madison kubeadm

2. アップグレードノードをメンテナンス状態に設定する

ノードをスケジュール不可としてマークし、ノードのメンテナンスに備えてすべての負荷を排除します。

 # 将<node-to-drain> 替换为你要腾空的控制面节点名称kubectl drain <node-to-drain> --ignore-daemonsets

<node-to-drain> はノード名であり、kubectl get node を通じて表示できます。

上記のコマンドを実行すると、出力結果は次のようになります。

ノードをメンテナンス状態に設定する

3. コントロールプレーンノードをアップグレードする

コントロール プレーン ノードのアップグレード プロセスは、一度に 1 つのノードずつ進行する必要があります。まず最初にアップグレードするコントロール プレーン ノードを選択します。ノードには /etc/kubernetes/admin.conf ファイルが必要です。

(1)kubeadmのアップグレード

# 用最新的补丁版本号替换1.29.x-* 中的x sudo apt-mark unhold kubeadm && \ sudo apt-get update && sudo apt-get install -y kubeadm='1.29.x-*' && \ sudo apt-mark hold kubeadm

以下は 1.29.0 から 1.29.2 にアップグレードする例です。上記のコマンドの出力は次のようになります。

新しいバージョンのkubeadmをインストールする

(2)ダウンロード操作が正常であり、kubeadmのバージョンが正しいことを確認します。

 kubeadm version

上記のコマンドを実行した場合の出力は次のようになります。

kubeadm バージョン

(3)アップグレード計画を確認する

sudo kubeadm upgrade plan

上記のコマンドを実行した場合の出力は次のようになります。

アップグレードプラン

(4)アップグレードする対象バージョンを選択し、適切なコマンドを実行します。例えば:

 sudo kubeadm upgrade apply v1.29.2

上記のコマンドを実行すると、アップグレードが成功したことを示す次の結果が返されます。

 [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.29.2". Enjoy! [upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.

kubeletとkubectlをアップグレードする

kubelet と kubectl をアップグレードするときは、ノードをスケジュール不可としてマークし、すべてのロードを削除する必要があります。

 # 用最新的补丁版本替换1.29.x-* 中的x sudo apt-mark unhold kubelet kubectl && \ sudo apt-get update && sudo apt-get install -y kubelet='1.29.2-*' kubectl='1.29.2-*' && \ sudo apt-mark hold kubelet kubectl

上記のコマンドを実行すると、出力結果は次のようになります。

Kubelet と kubectl のアップグレードに成功しました

アップグレードが完了したら、次のコマンドを実行して kubelet サービスを再起動します。

 sudo systemctl daemon-reload sudo systemctl restart kubelet

下の図の結果から、コントロールノードのバージョンが v1.29.0 から v1.29.2 にアップグレードされたことがわかります。

5. ノード保護を削除する

現在のノードはまだメンテナンス状態です。 kubectl uncordon controlplane を実行してノードの保護を削除することを忘れないでください。この時点で、コントロール プレーン全体のアップグレードが完了しました。

3. CKAの実際の質問

構成環境を設定します。

 [candidate@node-1] $ kubectl config use-context mk8s

タスク:

  • 既存の Kubernetes クラスターはバージョン 1.29.0 を実行しています。マスター ノードのみで、すべての Kubernetes コントロール プレーンとノード コンポーネントをバージョン 1.29.1 にアップグレードします。
  • アップグレードする前に必ずマスター ノードをドレインし、アップグレード後にマスター ノードの遮断を解除してください。

次のコマンドを使用して、ssh 経由でマスター ノードに接続できます。

 ssh master01

次のコマンドを使用して、マスター ノードでより高い権限を取得できます。

 sudo -i

さらに、マスター ノード上の kubelet と kubectl をアップグレードします。ワーカーノード、etcd、コンテナ マネージャー、CNI プラグイン、DNS サービス、その他のプラグインをアップグレードしないでください。

公式文書 - k8s アップグレード [1]

質問に答える

(1)試験中にクラスターを切り替えながら実行する。

 kubectl config use-context mk8s

(2)ノード情報を見る

controlplane $ kubectl get node NAME STATUS ROLES AGE VERSION controlplane Ready control-plane 23d v1.29.0 node01 Ready <none> 23d v1.29.0

(3)アップグレードノードをスケジュール不可としてマークし、すべての負荷を排除してアップグレードの準備をします。

 controlplane $ kubectl cordon controlplane node/controlplane cordoned controlplane $ kubectl drain controlplane --ignore-daemonsets node/controlplane already cordoned Warning: ignoring DaemonSet-managed Pods: kube-system/canal-kn5fq, kube-system/kube-proxy-f8kcp evicting pod local-path-storage/local-path-provisioner-5d854bc5c4-tszl5 evicting pod kube-system/calico-kube-controllers-9d57d8f49-wlth4 pod/calico-kube-controllers-9d57d8f49-wlth4 evicted pod/local-path-provisioner-5d854bc5c4-tszl5 evicted node/controlplane drained

(4)コントロールプレーンのアップグレード

# 在考试环境中ssh 到master 节点,并切换到root 下# ssh master01 # sudo -i controlplane $ apt-get update # 找到题目要求升级到的指定版本controlplane $ apt-cache madison kubeadm | grep 1.29.1 kubeadm | 1.29.1-1.1 | https://pkgs.k8s.io/core:/stable:/v1.29/deb Packages controlplane $ apt-get install kubeadm=1.29.1-1.1 # 验证下载操作正常,并且kubeadm 版本正确: controlplane $ kubeadm version kubeadm version: &version.Info{Major:"1", Minor:"29", GitVersion:"v1.29.1", GitCommit:"bc401b91f2782410b3fb3f9acf43a995c4de90d2", GitTreeState:"clean", BuildDate:"2024-01-17T15:49:02Z", GoVersion:"go1.21.6", Compiler:"gc", Platform:"linux/amd64"} #验证升级计划controlplane $ kubeadm upgrade plan #排除etcd,升级其他的controlplane $ kubeadm upgrade apply v1.29.1 --etcd-upgrade=false #升级kubelet 和kubectl controlplane $ apt-get install kubelet=1.29.1-1.1 kubectl=1.29.1-1.1 controlplane $ systemctl restart kubelet.service # 考试环境中退出root,退回到student@master01 # 解除节点的保护controlplane $ kubectl uncordon controlplane # 检查master1 是否为Ready controlplane $ kubectl get node NAME STATUS ROLES AGE VERSION controlplane Ready control-plane 23d v1.29.1 node01 Ready <none> 23d v1.29.0

参考文献:

[1]公式ドキュメント - k8s アップグレード: https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/#changing-the-package-repository

<<:  生成AIとクラウドの相互利益を探る

>>:  あなたが書いた分散 IM システムは非常に優れていると聞きました。見させていただいてもいいですか?

推薦する

Baidu のオリジナルアルゴリズム — 死!

私は SEO に携わってまだ 3 か月も経っていない初心者です。この業界について理解を深めていくうち...

完全なクラウド コンピューティングの時代において、企業にはどのようなクラウド セキュリティ機能が必要ですか?

クラウド セキュリティの重要性は、いつ言及されても過小評価されることはありません。 サイバーセキュリ...

SEO ウェブサイト最適化 リソース構築 ブログ運用 スキル共有

検索エンジンのアルゴリズムの調整に伴い、主要な検索エンジンによるブログの認知度は、大多数のSEO担当...

適切な Kubernetes ディストリビューションを選択するにはどうすればよいでしょうか?

[51CTO.com クイック翻訳] Kubernetes を使用してコンテナ化されたアプリケーショ...

SEO の本質的な目標はランキングではない (パート 2)

今日のSEO環境は大きく悪化しています。スパムがインターネットに溢れており、SEO に取り組んでいる...

垂直型ウェブサイトQiushibaike.comの成功についての簡単な分析

先輩の「Qiushiyou」として、仕事以外で私が毎日必ず訪問するウェブサイトはQiushibaik...

ウェブサイトを最適化するためのテクニックは本当に存在するのでしょうか?

A5 フォーラムで、SEO 最適化のためのコツがあるかどうか尋ねる初心者を見ました。私の答えは、はい...

フォレスターが2019年のクラウドコンピューティングに関する4つの予測を発表

2018 年、クラウド コンピューティングはあらゆる企業にとって必須のテクノロジーとなり、北米企業の...

Baidu検索結果URL変更の分析と影響予測

Baidu の検索結果の表示 URL が最近変更されました。これはアルゴリズムの更新だと考えられます...

効率的な運用とイノベーションの加速により、SAP は Yongtai Biopharmaceuticals が患者にデジタルケアを提供できるよう支援します。

[51CTO.com からのオリジナル記事] 健康は常に国民が最も懸念する問題の 1 つです。 Yo...

Baidu のセキュリティリスク警告が再び強化されました。ウェブマスターは何をすべきでしょうか?

Baidu のすべてのアップデートとアップグレードは、私を含むウェブマスターにとって大きな関心事です...

ウェブマスターネットワークからの毎日の報告:政府ウェブサイト侵入事件の判決が発表され、ビデオワンが米国で公開されました

広東省最大の政府ウェブサイトハッキングと偽造事件の判決:金額は3億ドルに達する昨日午後、広東省掲陽市...

タオバオのお客様、目を覚ましてください!梅里朔はあなたの悲しみです! ! !

Taobao の顧客が自社製品を宣伝したい場合、Meilishuo のような Web サイトは適して...

Baidu によって削除された Web サイトを保存するにはどうすればよいですか?

かつて、非常に優れたショッピングガイドのウェブサイトが目の前にありましたが、私はそれを大切にしません...

クラウド プラットフォームを「より適切に管理」するにはどうすればよいでしょうか?ファーウェイのクラウド集中運用・保守が企業のイノベーションを加速

デジタル化の波は世界の経済情勢を一変させており、デジタル経済は世界の持続可能な成長の新たな原動力にな...