GKE sur Bare Metal est compatible avec le fournisseur de cloud Kubernetes OpenStack. Cette fonctionnalité permet de provisionner automatiquement des ressources LBaaS (Load Balancing as a Service) OpenStack. Ces ressources peuvent remplacer les ressources MetaLB pour exposer facilement les services exécutés sur vos clusters Anthos sur Bare Metal à d'autres locataires OpenStack ou en dehors du réseau OpenStack.
Avant de commencer
Choisissez les clusters Anthos qui doivent utiliser des ressources LBaaS OpenStack.
Vérifiez que vous avez accès aux machines que vous essayez de configurer.
Obtenez plus d'informations sur l'exécution de cloud-controller-manager dans la documentation de Kubernetes.
Modifier le fichier de configuration de vos clusters
Le fournisseur cloud OpenStack Kubernetes nécessite que kubelet
s'exécute sur tous les nœuds avec l'argument suivant :
cloud-provider: "external"
Pour vous assurer que vos clusters Anthos répondent facilement à cette exigence, ajoutez l'annotation baremetal.cluster.gke.io/external-cloud-provider: "true"
au fichier de configuration de vos clusters sous la section des métadonnées avant de les initialiser.
L'entrée de votre fichier de configuration doit ressembler à l'exemple suivant :
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/external-cloud-provider: "true"
spec:
..
Certains fournisseurs de services cloud sur d'autres plates-formes cloud nécessitent un format spécial pour providerID
. GKE sur Bare Metal génère une providerID
pour chaque machine. Le format est semblable à baremetal://MACHINE_ADDRESS
. Si vous souhaitez utiliser une valeur providerID
différente, vous pouvez en spécifier une pour chaque nœud ainsi que l'adresse IP. La configuration se présente comme suit :
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
Après avoir modifié le fichier de configuration, utilisez la commande suivante pour initialiser votre cluster :
bmctl create cluster -c cluster1
Tous les nœuds dans cluster1
s'exécutent maintenant avec l'argument requis : cloud-provider:
"external"
Tous les nœuds disposent également des champs suivants ajoutés à leurs fichiers de configuration :
taints:
- effect: NoSchedule
key: node.cloudprovider.kubernetes.io/uninitialized
value: "true"
Ces champs sont supprimés après l'initialisation de votre fournisseur cloud sur ce cluster.
kubelet
sera exécuté avec l'ID providerID
fourni si vous en avez spécifié un pour ce nœud.