デフォルトでは、Container Service for Kubernetes (ACK) は、Kubernetesバージョンが1.26より前のACK edgeクラスターを作成した後に、edge-tunnel-serverおよびEdge-tunnel-agentコンポーネントをデプロイします。 これらのコンポーネントは、クラウドからエッジへのトンネルを確立するために使用されます。 トンネルが確立されると、クラウドからエッジノードにアクセスできます。 このトピックでは、ACK edgeクラスターのクラウドエッジトンネルに関連するコンポーネントの機能と、エッジノードのモニタリング機能を拡張する方法について説明します。
背景情報
Kubernetes 1.26以降を実行するACK Edgeクラスターを作成すると、Ravenがクラスターにインストールされます。 このコンポーネントを使用すると、クラウドからエッジノードにアクセスできます。 詳細については、「クラウドエッジ通信コンポーネントRavenの操作」をご参照ください。
Kubernetesクラスターでは、クラウド内のコントローラーコンポーネントがコマンドを実行し、メンテナンス要求をエッジノードのkubeletに渡す必要があります。 モニタリングコンポーネントmetrics-serverは、エッジノードからクラウドにモニタリングデータを収集する必要があります。 ACK edgeクラスターのエッジノードが内部ネットワークにデプロイされている場合、クラウドからエッジノードに直接アクセスすることはできません。
edge-tunnel-serverコンポーネントは、クラウド内のノードにデプロイとしてデプロイされます。 edge-tunnel-agentコンポーネントは、各エッジノードにDaemonSetとしてデプロイされます。
kubectl logsやkubectl execなどのKubernetesコマンド、またはmetrics-serverのコマンドを実行してO&M操作を実行すると、エッジノードのkubeletのポート10250とポート10255にリクエストが送信されます。
説明
ACK Edgeクラスターを作成するときは、少なくとも1つのECS (Elastic Compute Service) インスタンスを作成して、edge-tunnel-serverコンポーネントをデプロイする必要があります。
インターネット上で安全で暗号化されたトンネルを確立するために、システムはedge-tunnel-Serverによって作成されたサービスのserver Load Balancer (SLB) インスタンスを作成します。 エッジノード上のedge-tunnel-agentコンポーネントは、SLBインスタンスを介してedge-tunnel-serverへのトンネルを確立します。
kube-apiserverやmetrics-serverなどのコンポーネントが、クラウドからエッジノードのポート10250とポート10255にアクセスすると、ACK edgeクラスターが要求をEdge-tunnel-serverに転送します。 コンポーネントを変更する必要はありません。
次の図は、クラウドエッジトンネリングの仕組みを示しています。
エッジノードがクラウドから切断されているか、ネットワーク接続が弱い場合、トンネルは通常どおりに機能しない可能性があります。
トンネルが確立されているSLBインスタンスを削除または停止した場合、トンネルは通常どおりに機能しません。
1.16.9-aliyunedge.1などの初期のKubernetesバージョンのACK Edgeクラスターの場合、edge-tunnel-serverがデプロイされているECSノードにmetrics-serverなどのコンポーネントをデプロイする必要があります。 そうでない場合、コンポーネントはエッジノードにアクセスできません。 1.18.8-aliyunedge.1以降のACK Edgeクラスターの場合、metrics-serverやedge-tunnel-serverなどのコンポーネントを異なるECSノードにデプロイできます。
エッジノードの10250および10255以外のポートへのアクセスを設定する
ビジネスをクラウドに移行すると、ビジネスの監視システムもクラウドに移行されます。 エッジノードからクラウドへのシームレスな移行とモニタリングデータの収集を確実にするには、10250以外のポートへのアクセスと、クラウドのエッジノードの10255を設定する必要があります。 この例では、エッジノード上のポート9051および9052が使用される。
この例では、edge-tunnel-serverはHTTP経由でポート9051をリッスンし、HTTPS経由でポート9052をリッスンします。
1.18.8のクラスター-aliyunedge.1
1.18.8-aliyunedge.1のクラスターでは、コンポーネントが10250および10255以外のポートを介してエッジノードからクラウドにモニタリングデータを収集する場合、HTTPのみがサポートされます。 kube-system名前空間のedge-tunnel-server-cfg
ConfigMapのdnat-ports-pair
フィールドの値を変更する必要があります。 ポート番号=10264の形式で値を設定します。
コンポーネントがクラウドからエッジノードのポート9051にアクセスできるようにするには、次の設定を使用します。
cat <<EOF | kubectl apply -f
apiVersion: v1
data:
dnat-ports-pair: '9051=10264'
kind: ConfigMap
metadata:
name: edge-tunnel-server-cfg
namespace: kube-system
EOF
1.20.11のクラスター-aliyunedge.1
1.20.11-aliyunedge.1のクラスターでは、コンポーネントが10250とHTTPS以外のポートを介してエッジノードからクラウドにモニタリングデータを収集する場合、HTTPと10255がサポートされます。 コンポーネントは、クラウドからエッジノード上のlocalhostエンドポイントにアクセスすることもできます。
HTTP経由で10250および10255以外のポートへのアクセスを有効にするには、kube-system名前空間の
edge-tunnel-server-cfg
ConfigMapのhttp-proxy-ports
フィールドを設定します。 次の形式で値を設定します: ポート1、ポート2。HTTPS経由で10250および10255以外のポートへのアクセスを有効にするには、kube-system名前空間の
edge-tunnel-server-cfg
ConfigMapのhttps-proxy-ports
フィールドを設定します。 次の形式で値を設定します: ポート1、ポート2。エッジノードのlocalhostエンドポイントへのアクセスを有効にするには、kube-system名前空間の
edge-tunnel-server-cfg
ConfigMapでlocalhost-proxy-ports
フィールドを設定します。 デフォルト値: 10250、10255、10266 10267 さらにポートを追加できます。
コンポーネントが、ポート9051および9052を介してエッジノードからクラウドにモニタリングデータを収集し、エッジノード上のlocalhostエンドポイント (https:// 127.0.0.1:8080など) にアクセスできるようにするには、次の設定を使用します。
cat <<EOF | kubectl apply -f
apiVersion: v1
data:
http-proxy-ports: "9051"
https-proxy-ports: "9052, 8080"
localhost-proxy-ports: "10250, 10255, 10266, 10267, 8080"
kind: ConfigMap
metadata:
name: edge-tunnel-server-cfg
namespace: kube-system
EOF