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

推薦する

ウェブマスターはSEOにこだわりすぎてはいけない

個々のウェブマスターは、SEO に執着しすぎるのをやめるべきでしょうか? このトピックを見ると、企業...

Toutiaoが「今日のゲーム」モジュールをリリース。これはテンセントに対抗する試みか?

昨日、今日頭条が今日のゲーム機能を開始したことが明らかになった。これはほとんどの主流の製品タイプをカ...

raksmartはどうですか?韓国クラウドサーバーの簡易評価(本土最適化回線)

raksmartはどうですか? raksmart Koreaはどうですか? raksmart韓国クラ...

重慶:今年上半期に合計112の違法ウェブサイトが禁止され、閉鎖された

今年に入ってから、市は30以上の違法出版物生産・販売所を解体し、ポルノ出版物6万部以上、各種の著作権...

食料を乞うジュフアスアン:共同購入業界の「短期的および長期的な懸念」

資金と交通量の不足という状況の中で、いくつかの独立した共同購入企業は、敵であり味方でもある Juhu...

ウェブサイトのユーザー エクスペリエンス分析: ページ ナビゲーションの原則

有名なグリム童話では、ヘンゼルとグレーテルは継母が自分たちを深い森で迷わせようとしていることを知って...

Tudou.comは本日ナスダックから上場廃止、CEOの王偉氏が退任を発表

テンセントテクノロジーニュース(越谷小北)北京時間8月24日、海外メディアの報道によると、Youku...

Weiboマーケティングはどれほど重要ですか?こちらをご覧ください

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeibo はネットユー...

PaaS開発は2018年に転換点を迎えるかもしれない

過去 10 年間で、クラウド コンピューティングは初期から爆発的な成長を遂げました。 3 つのサービ...

中小企業がネットワークマーケティングを体系的に行うには(第3回) - コンテンツ

コンテンツとは、インターネット上で公開されるすべての情報を指します。コンテンツは、ユーザーが読んでニ...

Baidu SearchがAuroraアルゴリズムを導入:オリジナルで高品質なコンテンツの促進を目指す

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています6月7日、...

Kubernetes スキルを向上させる 5 つの方法

クラウド ネイティブの成長の中で、開発者は、アプリケーションを実行するサーバーとリソースを共有する、...

香港スペース(香港ホスト、香港バーチャルホスト)

香港スペース: 通常は香港ホスティング、特に香港仮想ホスティングを指します。主な特徴は、高速で申請が...

電子商取引企業の在庫管理における3つの大きな問題

「私にとって最も辛いのは、廃棄される在庫1000万相当の契約を自らの手で締結したことだ」と、すでに破...

RSSは終了し、インターネット製品の時代は終わりました

3月16日頃、Googleが自社のRSSリーダークライアントを廃止するというニュースが業界内で流れ、...