baicai

白菜

一个勤奋的代码搬运工!

K3s クイックスタートガイド: マルチクラウド環境での K3S クラスターの構築

K3s は軽量の Kubernetes です。サーバーは最低でも 512M のメモリで動作します。

異なるアカウントや異なるクラウドサービスプロバイダー間では、内部ネットワークは接続できません。したがって、パブリックネットワークを介したコンテナネットワーク通信を実現し、任意のノード上の pod が任意のノード上の pod や service にアクセスできるようにし、通常の Kubernetes クラスターの体験と一致させる必要があります。

入門ガイドとマルチクラウドソリューションを参考にして再整理します。

目標:ハイブリッドクラウド(Tencent Cloud サーバー + Oracle サーバー + Microsoft Azure サーバー)環境での K3S クラスターを実現すること

サーバーのインストール#

# ローカルネットワークソリューション
curl -sfL https://get.k3s.io | sh -
# マルチクラウドインストールソリューション
curl -sfL https://get.k3s.io | sh -s - --node-external-ip=サーバーのパブリックアドレス --flannel-backend=wireguard-native 

中国のユーザーは、以下の方法でインストールを加速できます:

# ローカルネットワークソリューション
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
# マルチクラウドインストールソリューション
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - --node-external-ip=サーバーのパブリックアドレス --flannel-backend=wireguard-native --flannel-external-ip

このインストールを実行後:

K3s サービスは、ノードが再起動したり、プロセスがクラッシュしたり、強制終了された場合に自動的に再起動するように構成されます。
他のユーティリティがインストールされます。これには ```kubectl```、```crictl```、```ctr```、```k3s-killall.sh```、および ```k3s-uninstall.sh``` が含まれます。
kubeconfig ファイルは ```/etc/rancher/k3s/k3s.yaml``` に書き込まれ、K3s によってインストールされた kubectl はこのファイルを自動的に使用します。

他のエージェントノードのインストール#

他のエージェントノードをインストールし、クラスターに追加するには、K3S_URL および K3S_TOKEN 環境変数を使用してインストールスクリプトを実行します。

# ローカルネットワークソリューション
curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -
# マルチクラウドインストールソリューション
curl -sfL https://get.k3s.io | K3S_URL=https://サーバーのパブリックアドレス:6443 K3S_TOKEN=mynodetoken sh -s - --node-external-ip=エージェントのパブリックアドレス
# ローカルネットワークソリューション
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -
# マルチクラウドインストールソリューション
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://サーバーのパブリックアドレス:6443 K3S_TOKEN=mynodetoken sh -s - --node-external-ip=エージェントのパブリックアドレス

備考:
K3S_URL パラメータは、インストーラーが K3s をサーバーではなくエージェントとして構成する原因となります。K3s エージェントは、URL でリッスンしている K3s サーバーに登録されます。K3S_TOKEN で使用される値は、サーバーノードの /var/lib/rancher/k3s/server/node-token に保存されます。
各ホストは一意のホスト名を持っている必要があります。コンピュータに一意のホスト名がない場合は、K3S_NODE_NAME 環境変数を渡し、各ノードに有効かつ一意のホスト名を提供してください。

ローカルで k3s クラスターにアクセスする#

kubectl をインストールします。

brew install kubectl

サーバーの /etc/rancher/k3s/k3s.yaml の内容をコピーします。

ローカルの ~/.kube/config ファイルに書き込みます。

scp コピーコマンドの参考:

scp server:/etc/rancher/k3s/k3s.yaml ~/.kube/config

テストコマンド#

ノードの状態を確認します:

$ kubectl get node
NAME            STATUS   ROLES                  AGE   VERSION
vm-4-10-debian             Ready    <none>      35m   v1.27.6+k3s1
vm-4-9-debian   Ready    control-plane,master   39m   v1.27.6+k3s1

クロスネットワーク通信を確認します:

$ kubectl get pod -A -o wide
NAMESPACE     NAME                                     READY   STATUS      RESTARTS   AGE   IP          NODE            NOMINATED NODE   READINESS GATES
kube-system   local-path-provisioner-957fdf8bc-gcgj4   1/1     Running     0          38m   10.42.0.5   vm-4-9-debian   <none>           <none>
kube-system   coredns-77ccd57875-vsxmt                 1/1     Running     0          38m   10.42.0.6   vm-4-9-debian   <none>           <none>
kube-system   helm-install-traefik-crd-sv9jh           0/1     Completed   0          38m   10.42.0.4   vm-4-9-debian   <none>           <none>
kube-system   metrics-server-5f8b4ffd8-zd4db           1/1     Running     0          38m   10.42.0.3   vm-4-9-debian   <none>           <none>
kube-system   helm-install-traefik-jp8sk               0/1     Completed   2          38m   10.42.0.2   vm-4-9-debian   <none>           <none>
kube-system   svclb-traefik-0782c5d1-wr5kd             2/2     Running     0          37m   10.42.0.7   vm-4-9-debian   <none>           <none>
kube-system   traefik-64f55bb67d-4lr2g                 1/1     Running     0          37m   10.42.0.8   vm-4-9-debian   <none>           <none>
kube-system   svclb-traefik-0782c5d1-444jv             2/2     Running     0          34m   10.42.1.2   vm-4-10-debian  <none>           <none>

ノードのリソース使用状況を確認します:

$ kubectl top node
NAME            CPU(cores)   CPU%        MEMORY(bytes)   MEMORY%     
vm-4-9-debian   24m          2%          1369Mi          69%         
vm-4-10-debian             <unknown>    <unknown>   <unknown>       <unknown> 

POD のリソース使用状況を確認します:

$ kubectl top pod -A
NAMESPACE     NAME                                     CPU(cores)   MEMORY(bytes)   
kube-system   coredns-77ccd57875-vsxmt                 1m           20Mi            
kube-system   local-path-provisioner-957fdf8bc-gcgj4   1m           14Mi            
kube-system   metrics-server-5f8b4ffd8-zd4db           3m           24Mi            
kube-system   svclb-traefik-0782c5d1-wr5kd             0m           0Mi             
kube-system   traefik-64f55bb67d-4lr2g                 1m           33Mi

これで k3s クラスターのデプロイが完了しました。さらにホストがある場合は、エージェントの設定手順を繰り返して追加できます。

K3s サーバーノードのインバウンドルール#

プロトコルポートソース目標説明
TCP2379-2380サーバーサーバー埋め込み etcd を持つ HA のみ必要
TCP6443エージェントサーバーK3s スーパーバイザーと Kubernetes API サーバー
UDP8472すべてのノードすべてのノードFlannel VXLAN のみ必要
TCP10250すべてのノードすべてのノードKubelet メトリクス
UDP51820すべてのノードすべてのノードIPv4 を使用する Flannel Wireguard のみ必要
UDP51821すべてのノードすべてのノードIPv6 を使用する Flannel Wireguard のみ必要

すべてのアウトバウンドトラフィックは通常許可されています。

参考:#

クイックスタートガイド

埋め込み k3s マルチクラウドソリューション

K3s クイックスタートガイド:マルチクラウド環境での K3S クラスターの構築

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。