ハイブリッドクラスターで使用されるコンテナネットワークプラグインは、データセンターで実行されるネットワークプラグインと、クラウドコンピューティングノードで実行されるネットワークプラグインの2つの部分で構成されます。 このトピックでは、ハイブリッドクラスターにTerwayをデプロイおよび設定する方法について説明します。
前提条件
Terwayパラメーターは、次のシナリオで登録済みクラスターを作成するときに設定されます。シナリオ2: データセンターはコンテナーネットワークにBGPネットワークを使用しますおよびシナリオ3: データセンターはコンテナーネットワークにホストネットワークを使用します。
IPVLANはビジネス要件に基づいて設定されます。
ポッドvSwitchが指定されています。
Service CIDRブロックが指定されています。
詳細については、「登録済みクラスターの作成」をご参照ください。
ネットワークプラグインはデータセンターで実行するように設定され、ネットワークプラグインはクラウドで実行するように設定されています。
シナリオ1: データセンターがコンテナーネットワークにオーバーレイネットワークを使用
このシナリオでは、データセンターはコンテナーネットワークにオーバーレイネットワークを使用します。 クラウド計算ノードもこのネットワークモードを使用できます。 クラウドコンピュートノードがコンテナーネットワークプラグインのDaemonSetで使用されるコンテナーイメージを取得できることを確認するだけで済みます。
以下のオーバーレイネットワークモードが一般的に使用されます。
フランネルVXLAN
キャリコIPIP
繊毛VXLAN
シナリオ2: データセンターがコンテナーネットワークにBGPネットワークを使用
このシナリオでは、データセンターはコンテナーネットワークにBorder Gateway Protocol (BGP) ネットワークを使用します。 クラウド計算ノードでTerwayネットワークプラグインを使用する必要があります。 オンプレミスネットワークとクラウドを接続する方法の詳細については、「BGPの設定と管理」をご参照ください。
このシナリオでは、次の条件が満たされていることを確認します。
CalicoのBGPルートリフレクターなど、オンプレミスのコンテナネットワークプラグインのDaemonSetは、クラウド計算ノードにスケジュールされていません。
TerwayネットワークプラグインのDaemonSetは、オンプレミスのコンピュートノードにスケジュールされていません。
登録済みクラスターのノードプールから追加された各計算ノードには、alibabacloud.com/external=true
ラベルがあります。 このラベルを使用して、クラウド計算ノードとオンプレミス計算ノードを区別できます。
たとえば、ノードアフィニティ
を設定して、オンプレミスのCalicoネットワークプラグインのDaemonSetがalibabacloud.com/external=true
ラベルを持つノードにスケジュールされないようにすることができます。 同じ方法を使用して、他のオンプレミスのワークロードがクラウド計算ノードにスケジュールされないようにすることができます。 次のコマンドを実行して、Calicoネットワークプラグインを更新します。
cat <<EOF > calico-ds.pactch
spec:
template:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: alibabacloud.com/external
operator: NotIn
values:
- "true"
EOF
kubectl -n kube-system patch ds calico-node -p "$(cat calico-ds.pactch)"
デフォルトでは、TerwayのDaemonSetはalibabacloud.com/external=true
ラベルを持つノードにスケジュールされます。
シナリオ3: データセンターはコンテナーネットワークにホストネットワークを使用します
このシナリオでは、データセンターはコンテナーネットワークにホストネットワークを使用します。 TerwayネットワークプラグインのDaemonSetがオンプレミスのコンピュートノードにスケジュールされていないことを確認するだけです。 デフォルトでは、TerwayネットワークプラグインのDaemonSetは、alibabacloud.com/external=true
ラベルを持つノードにのみスケジュールされます。
Terwayネットワークプラグインのインストールと設定
シナリオ2およびシナリオ3では、ハイブリッドクラスターのクラウド計算ノードにTerwayネットワークプラグインをインストールして設定する必要があります。
手順1: Terwayネットワークプラグインに権限を付与する
RAMコンソールの使用
RAMユーザーを作成し、次のポリシーをRAMユーザーにアタッチします。 詳細については、「RAMを使用したクラスターとクラウドリソースへのアクセス許可」をご参照ください。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[シークレット] ページで、[YAMLから作成] をクリックします。 次のサンプルコードを入力して、alibaba-addon-Secretという名前のシークレットを作成します。
説明コンポーネントは、保存されたAccessKeyIDとAccessKeySecretを使用してクラウドサービスにアクセスします。
alibaba-addon-secret
が既に存在する場合は、この手順をスキップします。apiVersion: v1 kind: Secret metadata: name: alibaba-addon-secret namespace: kube-system type: Opaque stringData: access-key-id: <AccessKeyID of the RAM user> access-key-secret: <AccessKeySecret of the RAM user>
onectlの使用
オンプレミスマシンにonectlをインストールします。 詳細については、「onectlを使用した登録済みクラスターの管理」をご参照ください。
次のコマンドを実行して、TerwayにResource Access Management (RAM) 権限を付与します。
onectl ram-user grant --addon terway-eniip
期待される出力:
Ram policy ack-one-registered-cluster-policy-terway-eniip granted to ram user ack-one-user-ce313528c3 successfully.
ステップ2: Terwayプラグインのインストール
ACKコンソールの使用
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[アドオン] ページで、[ネットワーク] タブをクリックします。 terway-eniipコンポーネントを選択し、[インストール] をクリックします。
説明NetworkPolicyはデフォルトで無効になっています。 このポリシーを有効にするには、インストールページで [Enables NetworkPolicy] を選択し、追加設定を完了します。 詳細については、「TerwayのNetworkPolicy機能の有効化 (オプション) 」をご参照ください。
onectlの使用
次のコマンドを実行して、Terwayプラグインをインストールします。
onectl addon install terway-eniip
期待される出力:
Addon terway-eniip, version **** installed.
手順3: Terwayプラグインの設定
次のコマンドを実行してeni-config ConfigMapを変更し、eni_conf.access_key
およびeni_conf.access_secret
パラメーターを設定します。
kubectl -n kube-system edit cm eni-config
次のサンプルコードは、eni-config ConfigMapの例を示しています。
kind: ConfigMap
apiVersion: v1
metadata:
name: eni-config
namespace: kube-system
data:
eni_conf: |
{
"version": "1",
"max_pool_size": 5,
"min_pool_size": 0,
"vswitches": {"AZoneID":["VswitchId"]},
"eni_tags": {"ack.aliyun.com":"{{.ClusterId}}"},
"service_cidr": "{{.ServiceCIDR}}",
"security_group": "{{.SecurityGroupId}}",
"access_key": "",
"access_secret": "",
"vswitch_selection_policy": "ordered"
}
10-terway.conf: |
{
"cniVersion": "0.3.0",
"name": "terway",
"type": "terway"
}
kubeconfigファイルを使用して登録済みクラスターに接続し、Terwayネットワークプラグイン用に作成されたDaemonSetを照会できます。 クラウドコンピュートノードがハイブリッドクラスターに追加される前に、DaemonSetはオンプレミスコンピュートノードにスケジュールされません。
次のコマンドを実行して、Terwayネットワークを照会します。
kubectl -nkube-system get ds |grep terway
期待される出力:
terway-eniip 0 0 0 0 0 alibabacloud.com/external=true 16s
TerwayのNetworkPolicy機能の有効化 (オプション)
デフォルトでは、登録済みクラスターでTerwayのNetworkPolicy機能は無効になっています。 詳細については、「ACKクラスターでのネットワークポリシーの使用」をご参照ください。
NetworkPolicyを有効にする必要がない場合は、この手順をスキップしてください。
NetworkPolicyを有効にした場合、ビジネス要件に基づいてCustomResourceDefinitions (CRD) をインストールするかどうかを決定する必要があります。 次のYAMLテンプレートでは、CRDの例を示します。
重要TerwayのNetworkPolicy機能は、Calicoに関連するCRDに依存しています。 Calicoを使用するクラスターでTerwayのNetworkPolicy機能を有効にすると、既存のCalicoネットワークでエラーが発生する可能性があります。 質問があれば、
チケットを起票してサポートセンターにお問い合わせくださいしてサポートセンターにお問い合わせください。