Kubernetes the Hard Way on Azure : 11. Podのネットワークルート
こんにちは。
引き続き、Kubernetes the Hard Way on Azure を進めていきます。
Provisioning Pod Network Routes
ノード にスケジュールされた Pod は、ノード のPod CIDR範囲からIPアドレスを受け取ります。この時点で Pod は、ネットワークルート がないため、異なる ノード で実行されている他の Pod と通信できません。
このラボでは、ノード の Pod CIDR範囲を ノード の内部IPアドレスにマップする各 ワーカーノード のルートを作成します。
今回はこの辺り。絵には表現していないけど、ワーカーノードの属するネットワークの部分。
The Routing Table
このセクションでは、kubernetes-vnetでルートを作成するために必要な情報を収集します。
各ワーカーインスタンスの内部IPアドレスと Pod CIDR範囲を出力します。
for instance in worker-0 worker-1; do PRIVATE_IP_ADDRESS=$(az vm show -d -g kubernetes -n ${instance} --query "privateIps" -otsv) POD_CIDR=$(az vm show -g kubernetes --name ${instance} --query "tags" -o tsv) echo $PRIVATE_IP_ADDRESS $POD_CIDR done # 出力内容 内部IP・PodのCIDR 10.240.0.20 10.200.0.0/24 10.240.0.21 10.200.1.0/24
Routes
ワーカーインスタンス用のネットワークルートを作成します。
# ルートテーブルの作成 az network route-table create -g kubernetes -n kubernetes-routes # kubernetes-vnet, kubernetes-subnet にルートテーブル設定 az network vnet subnet update -g kubernetes \ -n kubernetes-subnet \ --vnet-name kubernetes-vnet \ --route-table kubernetes-routes # kubernetes-routes にルートを登録 for i in 0 1; do az network route-table route create -g kubernetes \ -n kubernetes-route-10-200-${i}-0-24 \ --route-table-name kubernetes-routes \ --address-prefix 10.200.${i}.0/24 \ --next-hop-ip-address 10.240.0.2${i} \ --next-hop-type VirtualAppliance done
note:ここでは仮想アプライアンス(仮想マシン)にネクストホップを指定しています。
[kubernetes-vnet] のルート一覧を表示します。
az network route-table route list -g kubernetes --route-table-name kubernetes-routes -o table # 出力内容 AddressPrefix Name NextHopIpAddress NextHopType ProvisioningState ResourceGroup --------------- ------------------------------ ------------------ ---------------- ------------------- --------------- 10.200.0.0/24 kubernetes-route-10-200-0-0-24 10.240.0.20 VirtualAppliance Succeeded kubernetes 10.200.1.0/24 kubernetes-route-10-200-1-0-24 10.240.0.21 VirtualAppliance Succeeded kubernetes
- 異なるノードのPod同士で通信するには ネットワークルートが必要
- Azureではサブネット単位でルートテーブルが作成
タイムリーに業務でAKS触っているときにルートテーブルの話になっていたので、仕事に即座に生かせる知識を得られました。意識せずとも、ネットワーク・サブネット構築時にルートテーブルが自動作成されていたんだ、と・・・
ネットワーク周りは苦手意識がありますが、こればかりは避けて通れない技術なので理解を深めていきたいと思います。
ちなみに、先日ネットワークに強い方にお会いしたときおすすめいただいた本はこちら。読んでみます。
[改訂新版] 3分間ネットワーク基礎講座
追記 16.02.2020
twitter で「K8sのネットワーク分からん、これはAzure独自の構成なのか?」と呟いたら、様々な方からアドバイスいただきました。ありがとうございます。
AKSのネットワークはデフォルトでKubenet
docs.microsoft.comGKE のネットワーク構成もルートベースクラスタを構築できる
- VPC native が主流になっている
medium.com
- VPC native が主流になっている
12.に続きます。