ベアメタル版 Anthos クラスタは、OpenStack Kubernetes Cloud プロバイダをサポートしています。この機能を使用して、OpenStack 負荷分散を Service(LBaaS)リソースとして自動的にプロビジョニングします。これらのリソースで、MetalLB リソースを置き換え、ベアメタル版 Anthos クラスタで実行されているサービスを他の OpenStack テナント内または OpenStack ネットワーク外に容易に公開できます。
始める前に
OpenStack LBaaS リソースを使用する必要がある Anthos クラスタを決めます。
構成しようとしているマシンにアクセスできることを確認します。
Kubernetes ドキュメントで cloud-controller-manager の実行について詳細を確認します。
クラスタの構成ファイルを変更する
OpenStack Kubernetes クラウド プロバイダでは、次の引数を使用して、すべてのノードで kubelet
を実行する必要があります。
cloud-provider: "external"
Anthos クラスタがこの要件を簡単に満たすには、クラスタを初期化する前に、メタデータ セクションの下にあるクラスタの構成ファイルに baremetal.cluster.gke.io/external-cloud-provider: "true"
アノテーションを追加します。
構成ファイルのエントリは、次の例のようになります。
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/external-cloud-provider: "true"
spec:
..
他のクラウド プラットフォームの一部のクラウド プロバイダでは、providerID
に特別な形式が必要となります。ベアメタル版 Anthos クラスタでは、マシンごとに providerID
が生成されます。形式は baremetal://MACHINE_ADDRESS
のようなものです。異なる providerID
を持つ場合は、IP アドレスとともにノードごとに 1 つを指定できます。構成は以下のようになります。
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
clusterNetwork:
pods:
cidrBlocks:
- 192.168.0.0/16
services:
cidrBlocks:
- 10.96.0.0/20
controlPlane:
nodePoolSpec:
nodes:
- address: 10.200.0.1
+ providerID: some-prefix://unique-string
- address: 10.200.0.2
+ providerID: some-prefix2://unique-string2
...
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: nodepool1
namespace: cluster-admin1
spec:
clusterName: admin1
nodes:
- address: 172.18.0.2
+ providerID: some-prefix3://unique-string3
構成ファイルを編集した後、次のコマンドを使用してクラスタを初期化します。
bmctl create cluster -c cluster1
これで、cluster1
内のすべてのノードが必要な引数 cloud-provider:
"external"
を使用して実行されます。
また、すべてのノードの構成ファイルには、次のフィールドも追加されます。
taints:
- effect: NoSchedule
key: node.cloudprovider.kubernetes.io/uninitialized
value: "true"
これらのフィールドは、このクラスタでクラウド プロバイダを初期化すると削除されます。
このノードに指定した場合、kubelet
は提供された providerID
で実行されます。