ミニマリストチュートリアル!K3をCloudControllerとすばやく統合する方法を教えてください

前回の記事では、60秒で4ノードのK3sクラスターを作成する方法を紹介しました。この記事には、仮想マシンの構成も含まれています。このクラスターの唯一の問題は、クラウドプロバイダーがサポートされていないことです。つまり、LoadBalancer、ストレージ、およびその他のサービスを使用できません。したがって、この記事では、K3をクラウドプロバイダーと統合する方法について説明します。

CCM(Cloud Management Controller)をK3sと統合するということは、基本的に、K3sクラスターがクラウドプロバイダーのAPIと通信して、LoadBalancer(入力用)やノード用などのサービスを要求および構成できることを意味します。適切なラベルなどを貼ってください。このプロセスは、クラウドプロバイダーごとに異なり、主にクラウドプロバイダーが最初にCCMを提供するかどうかによって異なります。この記事では、DigitalOceanにK3をインストールします。

全体のプロセスは複雑ではありませんが、以下の手順に注意深く従う必要があります。まず、マスターノードから始めます。K3sマスターノードをインストールするときは、次のパラメーターを渡す必要があります。

— disable-cloud-controller

— no-deploy servicelb

— kubelet-arg=”cloud-provider=external”

— kubelet-arg=”provider-id=digitalocean://[master_node_id]”

それで、それらはどういう意味ですか?まず、名前が示すように、デフォルトのK3sクラウドプロバイダーを無効にします。無効にしないと、K3sは独自の組み込みクラウドコントローラーを使用します。次に、IPアドレスを台無しにするため、K3にservicelbをデプロイしないように依頼します。servicelbは入力IPをノードIPで上書きし、DigitalOcean LoadBalancerIPをLoadBalancerサービスタイプとして使用します。第三に、これはほとんどすべてのCCM要件であり、外部のクラウドプロバイダーを使用するようにkubeletに指示するだけで済みます。最後のパラメーター、これはDOCCMの要件です-DOCCM Githubリポジトリ(https://github.com/digitalocean/digitalocean-cloud-controller-manager)を確認すると、このパラメーターを渡すだけでよいことがわかります。 kubeletへ。[master_node_id]は、DOダッシュボードで見つけるか、ドロップレット自体からGET呼び出しを行うことで見つけることができます。

curl http://169.254.169.254/metadata/v1/id

したがって、CCM用に準備されたK3sサーバーをインストールするには、次のコマンドを実行する必要があります。

curl -sfL https://get.k3s.io | sh -s — server \
  --disable-cloud-controller \
  --no-deploy servicelb \
  --kubelet-arg=”cloud-provider=external” \
  --kubelet-arg=”provider-id=digitalocean://$master_id”

上記は最初の部分、準備です。K3sサーバーを起動したら、CCMをインストールする必要があります。この手順を完了するには、最初にgitリポジトリのクローンを作成する必要があります。

https://github.com/digitalocean/digitalocean-cloud-controller-manager

次に、DigitalOceanAPIトークンを含むKubernetesシークレットを作成する必要があります。リポジトリでシークレットジェネレータを使用するか、次のコマンドを使用できます。

kubectl -n kube-system create secret generic digitalocean --from-literal=access-token=[YOUR_DO_API_TOKEN]

シークレットが保存されている場合は、ウェアハウスからyamlマニフェストを適用するだけです。

kubectl apply -f releases/v0.1.21.yml

これで、LoadBalancerサービスが有効になるたびに、DigitalOcean LoadBalancerが作成され、トラフィックをその負荷にルーティングするように構成されます。さらに、k3sにはデフォルトでTraefikが組み込まれているため、DOLBが自動的に作成されます。

これまでのところ、K3マスターノードのみを作成しました。ワーカーノードの場合、次のパラメーターを使用してK3をインストールするだけで済みます。

curl -sfL https://get.k3s.io | K3S_TOKEN=${token} sh -s - agent \
  --server https://${master_node_ip}:6443 \
  --kubelet-arg="cloud-provider=external" \
  --kubelet-arg="provider-id=digitalocean://$worker_id"

これで、すべてのノードに適切なラベルセット(パブリック/プライベートIP、DOエリアなど)が設定され、DOLBを介したルーティングがすぐに開始されます。

最後に、プロセス全体を自動化するための簡単なbashスクリプトを作成しました。このソリューションでは、DO CCMを使用して、DigitalOcean上に4ノード(1つのマスターノード+ 3つのワーカーノード)のk3sクラスターを2分以内に作成できます。

https://github.com/DavidZisky/k3s-cloud

著者:

Dawid Ziolkowski、クラウドネイティブエンジニア

元のリンク:

https://itnext.io/how-to-integrate-k3s-with-the-cloud-controller-36bd5020b8f7

おすすめ

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