マスタークラスタに再参加する k8s ノードの実装

マスタークラスタに再参加する k8s ノードの実装

1. ノードを削除する

kubectl delete node node01を実行します。

2. この時点で結合を直接実行するとエラーが報告されます。次のように:

[root@k8s-node02 pki]# kubeadm join 192.168.140.128:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:a3d9827be411208258aea7f3ee9aa396956c0a77c8b570503dd677aa3b6eb6d8 
[プリフライト] プリフライトチェックの実行
 [警告 SystemVerification]: この Docker バージョンは検証済みバージョンのリストにありません: 19.03.12。最新の検証済みバージョン: 18.09
エラー実行フェーズのプリフライト: [プリフライト] 致命的なエラーが発生しました:
 [ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf がすでに存在します
 [ERROR FileAvailable--etc-kubernetes-bootstrap-kubelet.conf]: /etc/kubernetes/bootstrap-kubelet.conf がすでに存在します
 [エラー ポート-10250]: ポート 10250 は使用中です
 [ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt は既に存在します
[プリフライト] 何をしているのかわかっている場合は、`--ignore-preflight-errors=...` を使用して致命的ではないチェックを行うことができます。

解決:

エラー レポートによると、ポートが占有されており、構成ファイルと CA 証明書が生成されていることがわかります。そのため、これらの構成ファイルと証明書を削除し、占有されているポートを強制終了する必要があります。削除する前にバックアップすることをお勧めします。

[root@k8s-node02 pki]# lsof -i:10250
コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名
kubelet 694 ルート 30u IPv6 26021 0t0 TCP *:10250 (LISTEN)
[root@k8s-node02 pki]# キル -9 694
[root@k8s-node02 pki]# cd /etc/kubernetes/
[root@k8s-node02 kubernetes]# ls
bootstrap-kubelet.conf kubelet.conf マニフェスト pki
[root@k8s-node02 kubernetes]# mv bootstrap-kubelet.conf bootstrap-kubelet.conf_bk
[root@k8s-node02 kubernetes]# mv kubelet.conf kubelet.conf_bk
[root@k8s-node02 kubernetes]# cd pki/
[root@k8s-node02 pki]# ls
ca.crt
[root@k8s-node02 pki]# rm -rf ca.crt 

3. 再度結合を実行すると、再度エラーが発生します。

[root@k8s-node02 ~]# kubeadm join 192.168.140.128:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:a3d9827be411208258aea7f3ee9aa396956c0a77c8b570503dd677aa3b6eb6d8 
[プリフライト] プリフライトチェックの実行
 [警告 SystemVerification]: この Docker バージョンは検証済みバージョンのリストにありません: 19.03.12。最新の検証済みバージョン: 18.09
[プリフライト] クラスターから構成を読み取っています...
[プリフライト] 参考までに: この設定ファイルは 'kubectl -n kube-system get cm kubeadm-config -oyaml' で確認できます。
[kubelet-start] kube-system 名前空間の "kubelet-config-1.15" ConfigMap から kubelet の設定をダウンロードしています
[kubelet-start] kubelet 設定をファイル "/var/lib/kubelet/config.yaml" に書き込みます
[kubelet-start] フラグ付きの kubelet 環境ファイルをファイル "/var/lib/kubelet/kubeadm-flags.env" に書き込みます
[kubelet-start] kubeletサービスの有効化
[kubelet-start] kubelet が TLS ブートストラップを実行するのを待機しています...
[kubelet-check] 初期タイムアウトの40秒が経過しました。
実行フェーズのエラー kubelet-start: crisocket のアップロード エラー: 条件の待機中にタイムアウトしました

解決:

kubeadm reset を実行して子ノードをリセットします。

[root@k8s-node02 ~]# kubeadm リセット
[リセット] 警告: 'kubeadm init' または 'kubeadm join' によってこのホストに加えられた変更は元に戻ります。
[リセット] 続行しますか? [y/N]: y
[プリフライト] プリフライトチェックの実行
W0710 10:22:57.487306 31093 removeetcdmember.go:79] [リセット] kubeadm 構成がありません。etcd ポッド仕様を使用してデータディレクトリを取得します
[リセット] etcd 設定が見つかりません。外部 etcd を想定しています
[リセット] さらなる問題を防ぐために、etcdを手動でリセットしてください。
[リセット] kubelet サービスを停止する
[リセット] 「/var/lib/kubelet」にマウントされたディレクトリをアンマウントします
[リセット] 設定ディレクトリの内容を削除しています: [/etc/kubernetes/manifests /etc/kubernetes/pki]
[リセット] ファイルを削除しています: [/etc/kubernetes/admin.conf /etc/kubernetes/kubelet.conf /etc/kubernetes/bootstrap-kubelet.conf /etc/kubernetes/controller-manager.conf /etc/kubernetes/scheduler.conf]
[リセット] ステートフルディレクトリの内容を削除しています: [/var/lib/kubelet /etc/cni/net.d /var/lib/dockershim /var/run/kubernetes]

リセット プロセスでは、iptables ルールまたは IPVS テーブルはリセットまたはクリーンアップされません。
iptables をリセットしたい場合は、手動で行う必要があります。
例えば:
iptables -F && iptables -t nat -F && iptables -t マングル -F && iptables -X

クラスタがIPVSを利用するように設定されている場合は、ipvsadm --clear(または同様のコマンド)を実行します。
システムの IPVS テーブルをリセットします。

リセット プロセスでは kubeconfig ファイルは消去されないため、手動で削除する必要があります。
$HOME/.kube/config ファイルの内容を確認してください。

4. 最後に結合を実行すると問題は解決します。

[root@k8s-node02 ~]# kubeadm join 192.168.140.128:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:a3d9827be411208258aea7f3ee9aa396956c0a77c8b570503dd677aa3b6eb6d8 
[プリフライト] プリフライトチェックの実行
 [警告 SystemVerification]: この Docker バージョンは検証済みバージョンのリストにありません: 19.03.12。最新の検証済みバージョン: 18.09
[プリフライト] クラスターから構成を読み取っています...
[プリフライト] 参考までに: この設定ファイルは 'kubectl -n kube-system get cm kubeadm-config -oyaml' で確認できます。
[kubelet-start] kube-system 名前空間の "kubelet-config-1.15" ConfigMap から kubelet の設定をダウンロードしています
[kubelet-start] kubelet 設定をファイル "/var/lib/kubelet/config.yaml" に書き込みます
[kubelet-start] フラグ付きの kubelet 環境ファイルをファイル "/var/lib/kubelet/kubeadm-flags.env" に書き込みます
[kubelet-start] kubeletサービスの有効化
[kubelet-start] kubelet が TLS ブートストラップを実行するのを待機しています...

このノードはクラスターに参加しました:
* 証明書署名要求が apiserver に送信され、応答が受信されました。
* Kubelet に新しい安全な接続の詳細が通知されました。

コントロール プレーンで「kubectl get nodes」を実行して、このノードがクラスターに参加していることを確認します。

5. マスターノードを確認し、正常に参加します。

[root@k8s-master01 ~]# kubectl ノードを取得する
名前 ステータス 役割 年齢 バージョン
k8s-master01 マスター 120m v1.15.1 準備完了
k8s-node01 準備完了 <なし> 100m v1.15.1
k8s-node02 準備完了 <なし> 83m v1.15.1

これで、k8s ノードをマスター クラスターに再参加させる実装に関するこの記事は終了です。より関連性の高い k8s ノード マスター クラスター コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Kafkaインターフェース管理ツール(kafkamanager)をK8Sにデプロイする方法の詳細な説明
  • Docker 学習ノート k8s デプロイ方法
  • CentOS 7 で k8s クラスターをインストールして構成する詳細な手順
  • Docker+K8S クラスタ環境構築と分散アプリケーション展開
  • k8sを使用してDjangoプロジェクトをデプロイする手順
  • SpringBoot アプリケーションを K8S に素早くデプロイする方法の詳細なチュートリアル
  • K8s に Redis クラスターをデプロイする方法
  • Kubernetes (K8S) コンテナ クラスタ管理環境の完全な展開の詳細チュートリアル - パート 1

<<:  MySQL の列から行への変換と年月グループ化の例

>>:  Linux suse11でルートパスワードを忘れた場合に変更する方法の簡単な分析

推薦する

MySQLを使用して列内の異なる値の数をカウントする例

序文この記事で実装されている要件は、実際には非常に一般的です。たとえば、ユーザーが登録したチャネルを...

Windows Server 2016 に MySQL 5.7.19 の解凍バージョンをインストールするための詳細なチュートリアル

MySQL 5.7.19 winx64 解凍版のインストールチュートリアルを収録しています。具体的な...

Win10にMySQL8圧縮パッケージ版をインストールするチュートリアル

1 公式サイトからMySQL8をダウンロードしてインストールするMySQL8 ダウンロードアドレスこ...

MySQL データベース クエリ パフォーマンス最適化戦略

クエリを最適化するExplain ステートメントを使用してクエリ ステートメントを分析するExpla...

MySQL サーバー ログイン エラー ERROR 1820 (HY000) の解決方法

障害サイト: MySQL サーバーにログインし、どのコマンドを実行してもこのエラーが発生します my...

HTMLタグの書き方でよくある間違い

注意を払う必要があります。HTML Police がコードを調べて、意味のないタグをすべて見つけ出す...

Linuxはjoin -a1を使用して2つのファイルを結合します

次の2つのファイルを結合するには、それらを結合して1.txtに結合します。 # 1.txt ジェリー...

ベンダー プレフィックス: ブラウザ エンジン プレフィックスが必要なのはなぜですか?

ベンダープレフィックスとは何ですか?ベンダー プレフィックス - ブラウザー エンジン プレフィック...

MySQL カーソルの概念と使用法の詳細な説明

この記事では、例を使用して MySQL カーソルの概念と使用方法を説明します。ご参考までに、詳細は以...

Nginx のインストールと設定ルールの詳細な紹介

目次1. nginxのインストールと操作(Mac OS環境) 2. nginxルールの設定3. コマ...

MySQL 5.7.18 無料インストール版ウィンドウ設定方法

初めてのブログです。データベースの勉強を始めた頃のことを書いています。自分でダウンロードしたのですが...

IEウェブページのポップアップウィンドウの共通パラメータは自分で設定できます

ポップアップは、現在のウィンドウにメニューツールバーがあるかどうかとは関係ありません。ページにスクリ...

ARGB、RGB、RGBAの違いと紹介

ARGB は、アルファ (透明度) チャネルが追加された RGB カラー モードであり、32 ビット...

HTML CSS3は画像表示効果を引き伸ばさない

1. transform 属性を使用して、画像を拡大せずに表示します (パスの問題は必要に応じて修正...

Vueで背景色と透明度を設定する方法

背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...