このドキュメントは、Anthos clusters on bare metal を実行するアプリケーション オーナーとプラットフォーム管理者を対象としています。このドキュメントでは、Anthos VM ランタイムを使用する VM ワークロードをサポートする仮想ネットワークを作成して使用する方法について説明します。
始める前に
このドキュメントの内容を実施するには、次のリソースへのアクセス権が必要です。
- Anthos clusters on bare metal バージョン 1.12.0(
anthosBareMetalVersion: 1.12.0
)以降のクラスタへのアクセス権。ワークロードを実行可能な、どのクラスタタイプでも使用できます。必要に応じて、Compute Engine の Anthos clusters on bare metal を試すか、クラスタ作成の概要をご覧ください。 kubectl
のプラグインとしてインストールされたvirtctl
クライアント ツール。必要に応じて、virtctl クライアント ツールをインストールします。
仮想ネットワークの概要
ネットワークはカスタム リソースを使用して作成されます。ネットワークはクラスタの作成するといつでも作成できます。ホスト インターフェースと VLAN ID の割り当てのネットワーク設定が定義されている場合、ネットワークの作成すると変更できません。
ネットワークの削除にはいくつかの条件があります。たとえば、VM やネットワーク インターフェースなどのリソースでネットワークが使用されている場合、そのネットワークの削除はネットワーク コントローラによって拒否されます。
ネットワーク定義には、ゲートウェイ、ルート、DNS 情報を含めることができます。 外部 DHCP サーバーの使用を有効にすることもできます。これらのネットワーク設定は、特定のネットワーク構成オプションの定義方法に応じて、静的または動的に割り当てられます。
デフォルトの pod-network
各クラスタには、デフォルトで pod-network
が作成されます。このネットワークは変更できません。Pod CIDR とサービス CIDR のルートおよび DNS 構成が自動的に入力されます。DNS 構成では、クラスタと同じ値が使用されます。
pod-network
は、クラスタの Pod ネットワークにアクセスするためのインターフェースを必要とし、特定の構成オプションを必要としないワークロードで使用できます。
デフォルト ゲートウェイが pod-network
インターフェースにない場合でも、pod-network
のルートは常にワークロードのクラスタとサービスへのアクセスを確保するように構成されます。
このデフォルトの pod-network
では、独自の仮想ネットワークを作成する追加の手順なしで Anthos VM ランタイムをテストできます。多くのドキュメントでは、このデフォルトの pod-network
を使用して例の複雑さを軽減しています。このデフォルトの pod-network
で十分か、または独自の仮想ネットワークを作成して使用するかは、VM ワークロードのニーズによって決まります。
次の YAML マニフェストは、pod-network
のサンプル構成を示しています。
ルート、DNS、インターフェース名の値はクラスタによって入力されています。
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: pod-network
spec:
routes:
- to: 192.168.0.0/16
- to: 10.96.0.0/12
dnsConfig:
nameservers:
- 10.96.0.10
仮想ネットワークを作成、使用する
本番環境ワークロードをサポートするには、外部 DHCP サーバーの使用、VLAN ID の使用など、必要な機能をサポートするネットワークを作成します。これらのネットワークでは、VM にレイヤ 2(L2)接続が提供されます。
ネットワークの作成を開始する前に、次のクラスタ構成オプションを確認してください。
クラスタ構成の
clusterNetwork
セクションのmultipleNetworkInterfaces
フィールドが false に設定されていることを確認します。 このフィールドは Pod 用のマルチ NIC に使用されます。Anthos VM ランタイムでは無効にする必要があります。別の場所を指定しない限り、クラスタ構成ファイルはbmctl-workspace/CLUSTER-NAME/CLUSTER-NAME.yaml
として保存されます。クラスタ構成で
multipleNetworkInterfaces: true
が定義されている場合は、別のクラスタを作成してから、Anthos VM ランタイムを有効化する必要があります。... clusterNetwork: multipleNetworkInterfaces: false ...
外部 DHCP サーバーを使用する
Anthos VM ランタイムでは DHCP サーバーが提供されません。VM の IP アドレスを手動で指定するか、外部 DHCP サーバーの使用を構成する必要があります。外部 DHCP サーバーの使用を有効にすると、DHCP によって提供される DNS とゲートウェイの設定の構成をスキップできます。
外部 DHCP サーバーを使用するネットワークを作成するには、次の手順を実行します。
任意のエディタで、
Network
マニフェスト(use-dhcp-network.yaml
など)を作成します。nano use-dhcp-network.yaml
次の YAML マニフェストをコピーして貼り付けます。
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 nodeInterfaceMatcher: interfaceName: INTERFACE_NAME externalDHCP4: true
次の値を置き換えます。
NETWORK_NAME
: ネットワークの名前。INTERFACE_NAME
: ネットワークを接続する Anthos clusters on bare metal ノードのインターフェース名。使用するノードの物理インターフェースの名前を指定します。クラスタ内のすべてのノードに同じインターフェース名を設定する必要があります。
この
Network
マニフェストでは、次の値が設定されています。type
はL2
に設定されています。この設定では、ワークロードはこのネットワークへのレイヤ 2 アタッチメントのみを持つことができます。これは、Anthos VM ランタイムで作成できる唯一のネットワークtype
です。externalDHCP4
はtrue
に設定されています。この設定により、ネットワークに対して外部 DHCP が有効になります。外部 DHCP サーバーは、このネットワークに接続されるワークロードの IPv4 アドレスの割り振り、ルート、ゲートウェイ、DNS の構成を実施します。
Network
マニフェストをエディタに保存して閉じます。kubectl
を使用してネットワークを作成します。kubectl apply -f use-dhcp-network.yaml
ネットワーク設定を手動で定義する
Anthos VM ランタイムでは DHCP サーバーが提供されません。VM の IP アドレスを手動で指定するか、外部 DHCP サーバーの使用を構成する必要があります。IP アドレスを手動で指定する場合は、DNS、ルート、デフォルト ゲートウェイのネットワーク設定を定義する必要があります。
VM のネットワーク設定を手動で指定するネットワークを作成するには、次の手順を行います。
任意のエディタで、
Network
マニフェスト(manual-network.yaml
など)を作成します。nano manual-network.yaml
次の YAML マニフェストをコピーして貼り付けます。
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 nodeInterfaceMatcher: interfaceName: INTERFACE_NAME routes: - to: "ROUTE_ADDRESS" gateway4: GATEWAY_ADDRESS dnsConfig: nameservers: - NAMESERVER_ADDRESS
次の値を置き換えます。
NETWORK_NAME
: ネットワークの名前。INTERFACE_NAME
: ネットワークを接続する Anthos clusters on bare metal ノードのインターフェース名。使用するノードの物理インターフェースの名前を指定します。クラスタ内のすべてのノードに同じインターフェース名を設定する必要があります。ROUTE_ADDRESS
: このネットワークに接続するすべての VM に構成する、CIDR 表記のオプション ルート。GATEWAY_ADDRESS
: VM が使用するゲートウェイ IP アドレス。NAMESERVER_ADDRESS
: VM が使用する 1 つ以上の DNS ネームサーバー IP アドレス。
Network
マニフェストをエディタに保存して閉じます。kubectl
を使用してネットワークを作成します。kubectl apply -f manual-network.yaml
VLAN ID を使用する
仮想ネットワークを作成するときに、タグ付き VLAN を定義できます。これらの VLAN 割り当ては、ワークロードの要件と分離のニーズに基づいてネットワーク トラフィックを分離するのに役立ちます。AnthosManaged
ネットワークでは、クラスタにすべてのノードで VLAN インターフェースを作成および削除する権限があります。
VLAN の割り当てを定義するネットワークを作成する手順は、次のとおりです。
任意のエディタで、
Network
マニフェスト(vlan-network.yaml
など)を作成します。nano vlan-network.yaml
次の YAML マニフェストをコピーして貼り付けます。
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 networkLifecycle: AnthosManaged l2NetworkConfig: vlanID: VLAN_ID nodeInterfaceMatcher: interfaceName: INTERFACE_NAME externalDHCP4: true
次の値を置き換えます。
NETWORK_NAME
: ネットワークの名前。INTERFACE_NAME
: ネットワークを接続する Anthos clusters on bare metal ノードのインターフェース名。使用するノードの物理インターフェースの名前を指定します。クラスタ内のすべてのノードに同じインターフェース名を設定する必要があります。VLAN_ID
: トラフィックにタグを付ける VLAN ID。
この
Network
マニフェストでは、次の値が設定されています。- ワークロードには、このネットワークへの
L2
アタッチメントのみを設定できます。 - ネットワークは、
AnthosManaged
です。指定しない場合、この設定はデフォルトのライフサイクルになります。- このモードでは、クラスタに、すべてのノード(
INTERFACE_NAME.VLAN_ID
など)で VLAN インターフェースを作成および削除する権限があります。 - ノード上の VLAN インターフェースを作成するか、すでに作成している場合、次のセクションに示すように、
networkLifecycle
値をUserManaged
に設定します。
- このモードでは、クラスタに、すべてのノード(
- ネットワークで外部 DHCP が有効になっています。外部 DHCP サーバーは、このネットワークに接続されるワークロードの IPv4 アドレスの割り振り、ルート、ゲートウェイ、DNS の構成を実施します。
Network
マニフェストをエディタに保存して閉じます。kubectl
を使用してネットワークを作成します。kubectl apply -f vlan-network.yaml
ユーザー管理ネットワークを作成する
次の仮想ネットワークの例では、前の例の Anthos 管理とは対照的に、ネットワークがユーザー管理です。ユーザー管理ネットワークでは、ホスト上で VLAN インターフェースを作成または削除するのはユーザーの責任です。
ユーザー管理モードでネットワークを作成し、VLAN インターフェース構成を手動で定義するには、次の手順を行います。
任意のエディタで、
Network
マニフェスト(user-managed-network.yaml
など)を作成します。nano user-managed-network.yaml
次の YAML 定義をコピーして貼り付けます。
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 networkLifecycle: UserManaged l2NetworkConfig: vlanID: VLAN_ID nodeInterfaceMatcher: interfaceName: INTERFACE_NAME externalDHCP4: true
次の値を置き換えます。
NETWORK_NAME
: ネットワークの名前。INTERFACE_NAME
: ネットワークを接続するホスト インターフェース。VLAN_ID
: トラフィックにタグを付ける VLAN ID。
この
Network
マニフェストでは、次の値が設定されています。- ワークロードには、このネットワークへの
L2
アタッチメントのみを設定できます。 - ネットワークは、
UserManaged
です。ネットワークが作成される前や、ネットワークが削除された後は、すべてのノードで VLANVLAN_ID
インターフェースを作成または削除する必要があります。 - ネットワークで外部 DHCP が有効になっています。外部 DHCP サーバーは、このネットワークに接続されるワークロードの IPv4 アドレスの割り振り、ルート、ゲートウェイ、DNS の構成を実施します。
Network
マニフェストをエディタに保存して閉じます。kubectl
を使用してネットワークを作成します。kubectl apply -f user-managed-network.yaml
VM をネットワークに接続する
DNS や DHCP などの VM のネットワーク設定は、特定のネットワーク構成オプションの定義方法に応じて、静的または動的に割り当てられます。
- VM で静的 IP アドレスを構成すると、DHCP サーバーにクエリは送信されません。ゲートウェイとルートを構成するための追加情報は、ネットワーク リソースから取得する必要があります。
- VM で静的 IP アドレスを構成しない場合は、クエリが DHCP サーバーに送信されます。VM は DHCP サーバーからすべての情報を取得し、ネットワーク リソースで定義した構成は無視されます。
- ネットワーク リソースで外部 DHCP が
true
に設定されていない場合は、VM の静的 IP アドレスを構成する必要があります。他のすべての情報は、ネットワーク リソースで定義した構成から取得されます。
ネットワークに接続する VM を作成するには、次の手順を行います。
CLI
kubectl
を使用して VM を作成するには、次の手順を行います。kubectl virt create vm VM_NAME \ --image ubuntu20.04 \ --network NETWORK_NAME
次の値を置き換えます。
VM_NAME
: VM の名前NETWORK_NAME
: 接続先のネットワークの名前。- ネットワークが外部 DHCP サーバーを使用できるように構成されている場合、VM は IP アドレスの割り当てを自動的に取得します。静的 IP アドレスを定義する必要がある場合は、オプションの
--ip IP_ADDRESS
パラメータと値を追加します。
- ネットワークが外部 DHCP サーバーを使用できるように構成されている場合、VM は IP アドレスの割り当てを自動的に取得します。静的 IP アドレスを定義する必要がある場合は、オプションの
マニフェスト
YAML マニフェストを使用して VM を作成するには、次の手順を行います。
任意のエディタで、
VirtualMachine
マニフェスト(my-vm.yaml
など)を作成します。nano my-vm.yaml
次の YAML マニフェストをコピーして貼り付けます。
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: NETWORK_NAME ipAddresses: - IP_ADDRESS default: true disks: - virtualMachineDiskName: VM_NAME-boot-dv boot: true
この YAML マニフェストでは、次の設定を定義します。
VM_NAME
: VM の名前NETWORK_NAME
: 接続先のネットワークの名前。IP_ADDRESS
: VM に割り当てる CIDR 表記の IP アドレス(192.0.2.10/24
など)。- ネットワークが外部 DHCP サーバーを使用できるように構成されている場合は、このフィールドを
VirtualMachine
マニフェストから削除します。
- ネットワークが外部 DHCP サーバーを使用できるように構成されている場合は、このフィールドを
VM_NAME-boot-dv
という名前のブートディスクがすでに存在している必要があります。詳細については、VM ブートディスクを作成するをご覧ください。VirtualMachine
マニフェストをエディタに保存して閉じます。kubectl
を使用して VM を作成します。kubectl apply -f my-vm.yaml