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

推薦する

ブランドはダブルイレブンのマーケティングをどのように計画するのでしょうか?

毎年下半期、特にダブル11とダブル12は、電子商取引にとってカーニバルです。 9月になったが、eコマ...

記事を書いてレビューに合格することが目標ではない

他の人がどのように記事を書いて合格したかをネットでよく読みます。私も最初は、記事を書く本当の目的は合...

2018 年の初等・中等教育 APP ユーザーに関する洞察

昨年、盛り上がりを見せた小中高のオンライン教育は、現在「修復期」を迎えている。本来であれば業界の中心...

ion: サンノゼ cn2 gia VPS、厳格な管理、大規模なデータセンターの承認、信頼できる品質、月額 35 ドルから

Krypt傘下のVPSブランドであるionが、サンノゼデータセンターのVPSにcn2 gia回線のア...

またまた受賞です! | H3CがGNTCカンファレンスで輝き、インテリジェントネットワークの革新をリード

10月22日から24日まで、国家次世代インターネットエンジニアリングセンターが主催し、南京江北新区な...

分散システム調整カーネル - Zookeeper

[[402864]]この記事はWeChatの公開アカウント「Mu Niao Za Ji」から転載した...

yourlasthost: KVM タイプの小メモリ VPS、オプションのデータセンター 4 つ、年間 12.95 ドル

2009 年に設立された yourlasthost 社は現在、スナップショット バックアップをサポー...

#ブラックフライデー# liquidweb: 高級商用「完全管理型」VPS 推奨、月額 19.99 ドル、無料の cpanel/Plesk、無料のバックアップ

業界をリードするフルマネージドホスティングブランドであるLiquidwebは、Black 5ウォーム...

アプリケーションセンターのウェブサイトのデザインでユーザーを維持する方法についての簡単な説明

アプリケーション センターは、その名前が示すように、アプリケーションのコレクションであり、さまざまな...

過去を振り返り、未来に目を向けると、インターネットマーケティングとは何でしょうか?

「インターネット マーケティング」という用語には、実際には多くのことが含まれます。著者は学者ではない...

ウェブページのタイトルタグの最適化: 愛を伝えるのは簡単ではない

広大なインターネットでは、ネットユーザーはウェブページのタイトルを通じて目的のウェブページを閲覧して...

ウェブサイトのトラフィックを減少させるロングテールの剣を作成する

有能なSEO担当者にとって、ウェブサイトのターゲットキーワードをランク​​付けすることは、必ず完了し...

「スカイコンピューティング」は、今後のクラウドコンピューティングの新たな方向性となるのでしょうか?

SparkとRayは、2010年にオープンソース化された大規模データ処理向けに設計された高速で汎用的...

PythonでSaga分散トランザクションを簡単に完了する

[[422283]]銀行間送金業務は、典型的な分散型トランザクションのシナリオです。 A が銀行間で...