クラウド スキルを向上させましょう: 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 システムは非常に優れていると聞きました。見させていただいてもいいですか?

推薦する

今日、外部リンクが失敗する理由は数多くあります。

外部リンクは、オンラインプロモーションにおける強力な魔法の武器の 1 つと考えられています。強力な外...

現在、明日、そして未来のエッジコンピューティング

[[347834]] 「エッジ コンピューティングとは何ですか?」という質問をよく受けます。これは、...

arebz -peer1データセンター/中国最適化回線/無制限トラフィック/年間支払い189元から

peer1 データセンターは、中国では多くの人から中級から高級のデータセンターと見なされています。国...

ファーウェイ、新世代のエンタープライズレベル分散データウェアハウス「FusionInsight LibrA」をリリース

数兆のデータ相関分析に対する第2レベルの応答を実現するために、新しいPBレベルのエンタープライズデー...

hostodo: 米国独立記念日プロモーションで NVMe ハードドライブ VPS が 30% オフ、最低 $13/年、さらに DirectAdmin ライセンスも無料

7月4日はアメリカ合衆国の独立記念日であり、基本的には建国記念日を意味します。 Hostodo は今...

ウェブサイトはスタートラインで勝利する: アンカーテキストの作成方法

昨日、Xiaomaoが記事を書いているときに、「ウェブサイトはスタートラインで勝つ」という名前が突然...

ウェブサイトの登録数が増加するのではなく減少した5つの理由の実践的な分析

含まれるウェブサイトの数は、ウェブマスターにとって常に最も頭を悩ませる問題の 1 つです。含まれるウ...

ウェブサイトのバックリンク品質の重要性を共有する: SEO担当者の経験

みなさんこんにちは。私は Xiao Chen です。今日は、SEO 担当者の皆さんと外部リンクに関す...

列車チケット購入サイトは隙間に生き残る:おつかいモデルでは利益を上げるのは難しい

3月14日、国務院の「重大な部門改革」案が全国人民代表大会で承認された。鉄道部は廃止され、その機能は...

StableHost-10ドル/512mメモリ/1gバースト/20gハードディスク/2Tトラフィック/フェニックスシティ

StableHost の VPS がついに値下げされました。今なら 30% 割引コード LOVEST...

Hostshark: 月額 4.95 ドル、米国 VPS、2G メモリ/2 コア/80g NVMe/1Gbps 帯域幅 (トラフィック無制限)/Windows+Linux

Hostshark.ioは今年設立された新しい企業で、主に米国で仮想ホスティング、VPS、独立サーバ...

Dockerコンテナ実践:コンテナセキュリティ分析

オープンソースの詳細については、以下をご覧ください。 51CTO オープンソース基本ソフトウェアコミ...

列車チケット購入サイトがひっそりと払い戻しを再開、ただし払い戻し時期の保証は難しい

昨日、消費者の李さんは我が新聞に、CtripのTieyou.comでオンラインチケットを購入したが、...

ハイブリッド マルチクラウドがクラウドへの正しい道である理由は何ですか?

一般的に、企業はプライベート クラウドまたはデータ センターでアプリケーションを実行し、コンピューテ...