このページでは、サブネットワーク、BGP ピアリング セッション、ロード バランシングなど、Google Distributed Cloud コネクテッドのネットワーキング機能について説明します。
このページの手順は、Distributed Cloud コネクテッド ラックにのみ適用されます。ただし、ロード バランシングは、Distributed Cloud コネクテッド ラックと Distributed Cloud コネクテッド サーバーの両方に適用されます。
Distributed Cloud Edge Network API を有効にする
Distributed Cloud の接続されたデプロイでネットワーキングを構成する前に、Distributed Cloud Edge Network API を有効にする必要があります。これを行うには、このセクションの手順を完了します。デフォルトでは、Distributed Cloud コネクテッド サーバーには、Distributed Cloud Edge Network API がすでに有効になっています。
コンソール
コンソールで、 [Distributed Cloud Edge Network API] ページに移動します。 Google Cloud
[有効にする] をクリックします。
gcloud
次のコマンドを使用します。
gcloud services enable edgenetwork.googleapis.com
Distributed Cloud コネクテッドでネットワーキングを構成する
このセクションでは、Distributed Cloud コネクテッド デプロイでネットワーキング コンポーネントを構成する方法について説明します。
Distributed Cloud コネクテッド サーバーには、次の制限が適用されます。
- サブネットワークのみを構成できます。
- サブネットワークは VLAN ID のみをサポートします。CIDR ベースのサブネットワークはサポートされていません。
Distributed Cloud コネクテッドの一般的なネットワーク構成は、次の手順で構成されます。
省略可: 必要に応じて、ターゲット ゾーンのネットワーク構成を初期化します。
ネットワークを作成する。
ネットワーク内に 1 つ以上のサブネットワークを作成します。
対応する Interconnect アタッチメントを使用して、PE ルーターとのノースバウンド BGP ピアリング セッションを確立します。
対応するサブネットワークを使用して、ワークロードを実行する Pod とのサウスバウンド BGP ピアリング セッションを確立します。
省略可: 高可用性のためにループバック BGP ピアリング セッションを確立します。
設定をテストします。
Pod をネットワークに接続します。
省略可: Distributed Cloud ゾーンのネットワーク構成を初期化する
次の場合には、Distributed Cloud コネクテッド ゾーンのネットワーク構成を初期化する必要があります。
- Distributed Cloud コネクテッド ハードウェアがオンプレミスにインストールされた直後。
- 既存の Distributed Cloud コネクテッド デプロイで Distributed Cloud コネクテッド バージョン 1.3.0 以降にアップグレードしたが、Distributed Cloud Edge Network API のプライベート プレビューに参加していない場合。
ゾーンのネットワーク構成を初期化すると、default という名前のデフォルト ルーターと、default という名前のデフォルト
ネットワークが作成されます。また、対応する Interconnect アタッチメントを作成することで、Distributed Cloud
コネクテッド ハードウェアを注文したときにリクエストしたすべての Interconnect とピアリングするように default
ルーターを構成します。この構成により、Distributed Cloud コネクテッド デプロイにローカル
ネットワークへの基本的なアップリンク接続が提供されます。
ゾーンのネットワーク構成の初期化は 1 回限りの手順です。詳細な手順については、 ゾーンのネットワーク構成を初期化するをご覧ください。
ネットワークを作成する
新しいネットワークを作成するには、 ネットワークを作成するの手順に沿って操作します。 また、Distributed Cloud コネクテッド ノードがネットワークに接続できるようにするには、ネットワーク内に少なくとも 1 つのサブネットワークを作成する必要があります。
1 つ以上のサブネットワークを作成する
サブネットワークを作成するには、 サブネットワークを作成するの手順に沿って操作します。 ノードがネットワークにアクセスできるようにするには、ネットワークに少なくとも 1 つのサブネットワークを作成する必要があります。作成した各サブネットワークに対応する VLAN は、ゾーン内のすべてのノードで自動的に使用できます。
Distributed Cloud コネクテッド サーバーの場合、VLAN ID を使用してサブネットワークを構成することしかできません。CIDR ベースのサブネットワークは対象外です。
ノースバウンド BGP ピアリング セッションを確立する
ネットワークとその対応するサブネットワークを作成すると、それらは Distributed Cloud コネクテッド ゾーンに対してローカルになります。アウトバウンド接続を有効にするには、ネットワークとピアリング エッジルーターの間に少なくとも 1 つのノースバウンド BGP ピアリング セッションを確立する必要があります。
ノースバウンド BGP ピアリング セッションを確立するには、次の操作を行います。
ゾーンで使用可能な Interconnect を一覧表示 し、このピアリング セッションのターゲット Interconnect を選択します。
選択した Interconnect に 1 つ以上の Interconnect アタッチメントを作成します。Interconnect アタッチメントは、次のステップで作成するルーターを選択した Interconnect にリンクします。
ルーターを作成します。このルーターは、前のステップで作成した Interconnect アタッチメントを使用して、Interconnect とネットワーク間のトラフィックをルーティングします。
この手順で作成した Interconnect アタッチメントごとに、ルーターにインターフェースを追加します。各インターフェースには、Distributed Cloud コネクテッド ラック内の対応するトップオブラック(ToR)スイッチの IP アドレスを使用します。手順については、 ノースバウンド ピアリング セッションを確立するをご覧ください。
ピアを追加します。前のステップでルーターに作成した インターフェースごと
サウスバウンド BGP ピアリング セッションを確立する
ローカル ネットワークからワークロードへのインバウンド接続を有効にするには、ピアリング エッジルーターと Pod が属するサブネットワークの間に 1 つ以上のサウスバウンド BGP ピアリング セッションを確立する必要があります。各サブネットワークのゲートウェイ IP アドレスは、Distributed Cloud コネクテッド ラック内の対応する ToR スイッチの IP アドレスです。
サウスバウンド BGP ピアリング セッションを確立するには、次の操作を行います。
インバウンド接続でプロビジョニングするサブネットワークごとに、ターゲット ネットワークのルーターにインターフェースを追加します。手順については、 サウスバウンド ピアリング セッションを確立するをご覧ください。
ピアを追加します 前のステップでルーターに作成したインターフェースごとに。
省略可: ループバック BGP ピアリング セッションを確立する
ワークロードとローカル ネットワーク間の高可用性接続を有効にするには、ターゲット Pod と Distributed Cloud コネクテッド ラック内の両方の ToR スイッチの間にループバック BGP ピアリング セッションを確立します。ループバック ピアリング セッションは、Pod に対して 2 つの独立したピアリング セッションを確立します。1 つは各 ToR スイッチとのセッションです。
ループバック BGP ピアリング セッションを確立するには、次の操作を行います。
ターゲット ネットワークのルーターにループバック インターフェースを追加します。手順については、 ループバック ピアリング セッションを確立するをご覧ください。
ピアを追加します。 ループバック インターフェースの
設定をテストする
作成したネットワーク コンポーネントの構成をテストするには、次の操作を行います。
Pod をネットワークに接続する
Pod をネットワークに接続して高度なネットワーク機能を構成するには、 ネットワーク機能オペレータの手順に沿って操作します。
ロード バランシング
Distributed Cloud には、レイヤ 2 モードの MetalLB に基づくネットワーク ロード バランシング ソリューションがバンドルされています。このソリューションを使用すると、次のように仮想 IP アドレス(VIP)を使用して、Distributed Cloud ゾーンで実行されるサービスを外部に公開できます。
- ネットワーク管理者は、ネットワーク トポロジを計画し、Distributed Cloud の注文時に必要な仮想 IPv4 アドレス サブネットワークを指定します。Google は、配送前に Distributed Cloud ハードウェアを適切に構成します。
次の点に注意してください。
- この VIP サブネットワークは、Distributed Cloud ゾーン内で実行されるすべての Kubernetes クラスタ間で共有されます。
- リクエストされた VIP サブネットワークのルートは、Distributed Cloud ゾーンとローカル ネットワーク間の BGP セッションを通じてアドバタイズされます。
- サブネットワーク内の最初(ネットワーク ID)、2 番目(デフォルト ゲートウェイ)、最後(ブロードキャスト アドレス)のアドレスは、コア システム 機能用に予約されています。これらのアドレスを MetalLB 構成のアドレスプールに割り当てないでください。
- 各クラスタは、構成された VIP サブネットワーク内の個別の VIP 範囲を使用する必要があります。
- Distributed Cloud ゾーンにクラスタを作成するときに、クラスタ管理者は CIDR 表記を使用して Pod と ClusterIP Service のアドレスプールを指定します。ネットワーク管理者は、適切な
LoadBalancerVIP サブネットワークをクラスタ管理者に提供します。 クラスタが作成されたら、クラスタ管理者は対応する VIP プールを構成します。リモート コントロール プレーン クラスタの場合は、
kubectl editコマンドまたはkubectl replaceコマンドを使用して、metallb-system名前空間のmetallb-configConfigMap を編集する必要があります。kubectl applyコマンドは使用しないでください。使用すると、Distributed Cloud によって変更が上書きされます。次の例は、このような構成を示しています。
# metallb-config.yaml apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: metallb-config data: config: | address-pools: - name: default protocol: layer2 addresses: - 192.168.1.2-192.168.1.254ローカル コントロール プレーン クラスタの場合は、クラスタの作成時に
--external-lb-ipv4-address-poolsフラグを使用して VIP プールを指定する必要があります。詳細については、 生存モードをご覧ください。クラスタ管理者は、適切な Kubernetes
LoadBalancerService を作成します。
単一ノードプールの Distributed Cloud ノードは共通のレイヤ 2 ドメインを共有するため、MetalLB ロードバランサ ノードでもあります。 で実行される Google Cloud Distributed Cloud コントロール プレーン ノードは、ロードバランサノードとして機能しません。
Distributed Cloud Ingress
ロード バランシングに加えて、Distributed Cloud コネクテッドは Kubernetes Ingress
リソースもサポートしています。Kubernetes Ingress リソースは、Distributed Cloud コネクテッド
クラスタで実行される Kubernetes Service への HTTP(S) トラフィックのフローを制御します。次の例は、一般的な
Ingress リソースを示しています。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- http:
paths:
- backend:
service:
name: my-service
port:
number: 80
path: /foo
pathType: Prefix
構成すると、ネットワーク トラフィックは istio-ingress Service を通過します。この Service には、デフォルトで
MetalLB 構成で指定された VIP プールからランダムな IP アドレスが割り当てられます。istio-ingress Service
定義の loadBalancerIP フィールドを使用して、MetalLB 構成から特定の IP アドレスまたは仮想 IP
アドレスを選択できます。次に例を示します。
apiVersion: v1
kind: Service
metadata:
labels:
istio: ingress-gke-system
release: istio
name: istio-ingress
namespace: gke-system
spec:
loadBalancerIP: <targetLoadBalancerIPaddress>
この機能は、Distributed Cloud コネクテッド サーバーでは使用できません。
デフォルトの Distributed Cloud Ingress リソースを無効にする
デフォルトでは、Distributed Cloud コネクテッド クラスタを作成すると、Distributed Cloud によってクラスタの
istio-ingress Service が自動的に構成されます。istio-ingress Service なしで
Distributed Cloud コネクテッド クラスタを作成することもできます。手順は次のとおりです。
gcloud
次の内容で
SystemsAddonConfig.yamlという名前の YAML 構成ファイルを作成します。systemAddonsConfig: ingress: disabled: true
クラスタ作成コマンドで
--system-addons-configフラグを使用して、SystemsAddonConfig.yamlファイルを渡します。この機能を使用するには、gcloud alphaバージョンを使用する必要があります。次に例を示します。gcloud alpha edge-cloud container clusters create MyGDCECluster1 --location us-west1 \ --system-addons-config=SystemsAddonConfig.yamlDistributed Cloud クラスタの作成の詳細については、 クラスタを作成するをご覧ください。
API
クラスタ作成リクエストの JSON ペイロードに次の JSON コンテンツを追加します。
"systemAddonConfig" { "ingress" { "disabled": true } }クラスタを作成する の説明に沿って、クラスタ作成リクエストを送信します。
SCTP のサポート
Distributed Cloud コネクテッドは、内部ネットワーキングと外部ネットワーキングの両方で、プライマリ ネットワーク
インターフェースの Stream Control Transmission Protocol(SCTP)をサポートしています。SCTP
のサポートには、NodePort、LoadBalancer、ClusterIP Service のタイプが含まれます。Pod
は SCTP を使用して、他の Pod や外部リソースと通信できます。次の例は、SCTP を使用して IPERF を ClusterIP
Service として構成する方法を示しています。
apiVersion: v1
kind: Pod
metadata:
name: iperf3-sctp-server-client
labels:
app.kubernetes.io/name: iperf3-sctp-server-client
spec:
containers:
- name: iperf3-sctp-server
args: ['-s', '-p 31390']
ports:
- containerPort: 31390
protocol: SCTP
name: server-sctp
- name: iperf3-sctp-client
...
---
apiVersion: v1
kind: Service
metadata:
name: iperf3-sctp-svc
spec:
selector:
app.kubernetes.io/name: iperf3-sctp-server-client
ports:
- port: 31390
protocol: SCTP
targetPort: server-sctp
この機能は、Distributed Cloud コネクテッド サーバーでは使用できません。
SCTP カーネル モジュール
バージョン 1.5.0 以降では、Distributed Cloud コネクテッドは sctp Edge OS カーネル
モジュールをロード可能として構成します。これにより、カーネル ユーザー空間に独自の SCTP プロトコル スタックをロードできます。
また、Distributed Cloud コネクテッドは、デフォルトで次のモジュールをカーネルにロードします。
| モジュール名 | 構成名 |
|---|---|
fou |
CONFIG_NET_FOU |
nf_conntrack_proto_gre |
CONFIG_NF_CT_PROTO_GRE |
nf_conntrack_proto_sctp |
CONFIG_NF_CT_PROTO_SCTP |
inotify |
CONFIG_INOTIFY_USER |
xt_redirect |
CONFIG_NETFILTER_XT_TARGET_REDIRECT |
xt_u32 |
CONFIG_NETFILTER_XT_MATCH_U32 |
xt_multiport |
CONFIG_NETFILTER_XT_MATCH_MULTIPORT |
xt_statistic |
CONFIG_NETFILTER_XT_MATCH_STATISTIC |
xt_owner |
CONFIG_NETFILTER_XT_MATCH_OWNER |
xt_conntrack |
CONFIG_NETFILTER_XT_MATCH_CONNTRACK |
xt_mark |
CONFIG_NETFILTER_XT_MARK |
ip6table_mangle |
CONFIG_IP6_NF_MANGLE |
ip6_tables |
CONFIG_IP6_NF_IPTABLES |
ip6table_filter |
CONFIG_IP6_NF_FILTER |
ip6t_reject |
CONFIG_IP6_NF_TARGET_REJECT |
iptable_mangle |
CONFIG_IP_NF_MANGLE |
ip_tables |
CONFIG_IP_NF_IPTABLES |
iptable_filter |
CONFIG_IP_NF_FILTER |
ClusterDNS リソース
Distributed Cloud コネクテッドは、spec.domains
セクションを使用して、特定のドメインのアップストリーム ネームサーバーを構成するための Google Distributed Cloud ClusterDNS
リソースをサポートしています。このリソースの構成の詳細については、spec.domains をご覧ください。
この機能は、Distributed Cloud コネクテッド サーバーでは使用できません。