可用性の高いK3sクラスターをインストールするにはどうすればよいですか?

著者について

Janakiram MSVは、Janakiram&Associatesの主任アナリストであり、International School of InformationTechnologyのパートタイム教師です。彼はまた、Google
認定
開発者、Amazon認定ソリューションアーキテクト、Amazon認定開発者、Amazon認定SysOps管理者、およびMicrosoft認定AzureProfessionalでもあります。

Janakiramは、Cloud Native Computing Foundationの大使であり、Kubernetes認定の最初の管理者およびKubernetes認定のアプリケーション開発者の1人です。彼は
Microsoft、AWS、GigaomResearchなどの有名な企業で働いてきました

では前の記事、私たちは、マルチノードetcdクラスタを設定する方法を学びました。この記事では、同じインフラストラクチャを使用して、K3に基づいて可用性の高いKubernetesクラスターをセットアップおよび構成します。

可用性の高いKubernetesクラスター

Kubernetesクラスターのコントロールプレーンはほとんどステートレスです。唯一のステートフルコントロールプレーンコンポーネントはetcdデータベースであり、クラスター全体の唯一の真実のソースとして機能します。API Serverはetcdデータベースのゲートウェイとして機能し、内部および外部のユーザーはそれを介してステータスにアクセスして操作できます。

etcdデータベースは、単一の障害点がないことを保証するためにHAモードで構成する必要があります。etcdの設定方法に応じて、可用性の高い(HA)Kubernetesクラスターのトポロジを構成するための2つのオプションがあります。

最初のトポロジはスタッククラスタ設計に基づいており、各ノードは制御プレーンでetcdインスタンスを実行します。各コントロールプレーンノードは、kube-apiserver、kube-scheduler、およびkube-controller-managerのインスタンスを実行します。kube-apiserverは、ロードバランサーを使用してワーカーノードに公開します。

各制御平面ノードはローカルのetcdメンバーを作成し、etcdメンバーはこのノードのkube-apiserverとのみ通信します。同じことがローカルのkube-controller-managerインスタンスとkube-schedulerインスタンスにも当てはまります。

このトポロジでは、HAKubernetesクラスターに少なくとも3つのスタック制御プレーンモードが必要です。この人気のあるクラスターインストールツールであるKubeadmは、このトポロジを使用してKubernetesクラスターを構成します。

ここに写真の説明を挿入

2番目のトポロジでは、まったく異なるホストのセットにインストールおよび管理されている外部etcdクラスターを使用します。

このトポロジでは、各コントロールプレーンノードはkube-apiserverkube -scheduler、およびkube -controller-managerのインスタンスを実行し、各etcdホスト各コントロールプレーンノードのkube-apiserverと通信します

ここに写真の説明を挿入

このトポロジに必要なホストの数は、スタックされたHAトポロジの2倍です。このトポロジを使用するHAクラスターには、少なくとも3つのコントロールプレーンノードホストと3つのetcdノードホストが必要です。

クラスターの開始の詳細については、Kubernetesの公式ドキュメントを参照してください。

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ha-topology/

高可用性モードのK3

K3は主にエッジにデプロイされ、ハードウェアリソースが限られているため、専用ホストでetcdデータベースを実行できない場合があります。デプロイメントアーキテクチャは、etcdデータベースが事前に構成されていることを除いて、スタックトポロジと非常によく似ています。

ここに写真の説明を挿入

このチュートリアルでは、IntelNUCハードウェアで実行されているベアメタルインフラストラクチャを使用しています。マッピングは次のとおりです。

ここに写真の説明を挿入

この一連のチュートリアルの前の部分を参照して IPアドレス10.0.0.60、10.0.0.61、および10.0.0.62の最初の3つのノードにetcdをインストールして構成します。

K3sサーバーをインストールします

まず、etcdがインストールされているすべてのノードにサーバーをインストールしましょう。最初のノードにSSHで接続し、次の環境変数を設定します。これは、前のチュートリアルの手順に従ってetcdクラスターを構成したことを前提としています。

export K3S_DATASTORE_ENDPOINT='https://10.0.0.60:2379,https://10.0.0.61:2379,https://10.0.0.62:2379'
export K3S_DATASTORE_CAFILE='/etc/etcd/etcd-ca.crt'
export K3S_DATASTORE_CERTFILE='/etc/etcd/server.crt'
export K3S_DATASTORE_KEYFILE='/etc/etcd/server.key'

これらの環境変数は、状態管理に既存のetcdデータベースを使用するようにK3sインストーラーに指示します。

次に、エージェントがクラスターに参加するときに使用されるトークンをK3S_TOKENに入力します。

export K3S_TOKEN="secret_edgecluster_token"

最初のノードにサーバーをインストールする準備ができました。次のコマンドを実行して、プロセスを開始します。

curl -sfL https://get.k3s.io | sh -

ノード2とノード3でこれらの手順を繰り返して、追加のサーバーを起動します。

この時点で、コントロールプレーンとetcdコンポーネントを高可用性モードで実行する3ノードのK3sクラスターができました。

sudo kubectl get nodes

ここに写真の説明を挿入

次のコマンドでサービスステータスを確認できます。

sudo systemctl status k3s.service

ここに写真の説明を挿入

K3sエージェントをインストールします

コントロールプレーンの確立と操作により、ワーカーノードとエージェントをクラスターに簡単に追加できます。サーバーに関連付けられているのと同じトークンを使用する必要があります。

ワーカーノードの1つにSSHで接続し、コマンドを実行します。

export K3S_TOKEN="secret_edgecluster_token"
export K3S_URL=https://10.0.0.60:6443

環境変数K3S_URLは、既存のサーバーに接続するようにノードを構成するようにインストーラーに要求するエージェントです。

最後に、前の手順と同じスクリプトを実行します。

curl -sfL https://get.k3s.io | sh -

ここに写真の説明を挿入

新しいノードがクラスターに追加されているかどうかを確認します。

ここに写真の説明を挿入

おめでとう!これで、可用性の高いK3sクラスターが正常にインストールされ、外部のetcdデータベースがバックアップされました。

etcdデータベースを確認する

k3sクラスターが状態管理にetcdデータベースを使用していることを確認しましょう。

K3sクラスターで単純なNGINXポッドを起動します。

sudo kubectl run nginx --image nginx --port 80
sudo kubectl get pods

ここに写真の説明を挿入

ポッドの仕様とステータスは、etcdデータベースに保存する必要があります。etcdctlCLIを介して取得してみましょう。JSON出力を解析するjqツールをインストールします。

出力はbase64でエンコードされているため、base64ツールを使用してデコードします。

etcdctl --endpoints https://10.0.0.61:2379 \
--cert /etc/etcd/server.crt \
--cacert /etc/etcd/etcd-ca.crt \
--key /etc/etcd/server.key get /registry/pods/default/nginx \
--prefix=true -w json | jq -r .kvs[].value | base64 -d

ここに写真の説明を挿入

出力は、ポッドがetcdデータベースに関連付けられたキーと値を持っていることを示しています。特殊文字は正しく表示されませんが、ポッドに関する十分なデータが表示されます。

この記事では、エッジでよりスムーズに練習できるように、高可用性モードでK3sクラスターをセットアップおよび構成する方法を学習しました。

おすすめ

転載: blog.csdn.net/qq_42206813/article/details/109391034