GKE sur Bare Metal permet d'utiliser OpenStack en tant que plate-forme cloud privée. Ce guide explique comment configurer un cluster GKE sur Bare Metal pour collaborer avec un fournisseur cloud externe. L'exécution de GKE sur des clusters Bare Metal sur OpenStack vous permet d'utiliser les services OpenStack suivants:
Infrastructure as a Service (IaaS)
Load balancing as a Service (LBaaS)
Stockage
La configuration d'un cluster pour qu'il fonctionne avec OpenStack comprend les étapes suivantes:
Lorsque vous créez le cluster, vous ajoutez une annotation
baremetal.cluster.gke.io/external-cloud-provider
.Cette annotation oblige GKE sur Bare Metal à ajouter un indicateur kubelet
cloud-provider=external
.Le kubelet ajoute ensuite des rejets
node.cloudprovider.kubernetes.io/uninitialized:NoSchedule
aux nœuds du cluster.
Avec cette configuration, vous et OpenStack êtes propriétaire des processus d'initialisation des nœuds. Par exemple, vous pouvez déployer GKE sur Bare Metal sur OpenStack pour provisionner automatiquement des ressources OpenStack Load Balancing en tant que service (LBaaS) ou pour utiliser d'autres fonctionnalités OpenStack. Les ressources LBaaS peuvent remplacer les ressources MetalLB pour exposer les services exécutés sur vos clusters GKE sur Bare Metal à d'autres locataires OpenStack ou en dehors du réseau OpenStack. Pour en savoir plus sur les fonctionnalités et les avantages d'OpenStack, consultez la documentation OpenStack.
Exemples associés
Ce document explique uniquement comment configurer votre cluster pour l'utiliser avec OpenStack. Les guides suivants présentent un exemple de déploiement:
L'article Déployer un cluster GKE sur Bare Metal sur OpenStack vous guide à travers un exemple de déploiement d'un cluster hybride GKE sur Bare Metal sur des machines virtuelles (VM) OpenStack. Le déploiement utilise un script pour simplifier l'installation. Il présente également un moyen d'activer l'équilibrage de charge en tant que service (LBaaS).
L'article Configurer le fournisseur cloud OpenStack pour Kubernetes indique comment installer le fournisseur cloud OpenStack sur un cluster GKE sur bare metal déployé sur OpenStack. Le fournisseur cloud OpenStack n'est pas obligatoire pour utiliser GKE sur une solution Bare Metal avec OpenStack.
Avant de commencer
Déterminez les clusters GKE qui doivent utiliser les ressources OpenStack LBaaS.
Une fois que vous avez créé un cluster configuré pour utiliser les ressources OpenStack LBaaS, vous ne pouvez plus modifier la configuration pour passer aux ressources MetalLB. Veillez à initialiser vos clusters avec la configuration appropriée du fournisseur de services cloud.
Assurez-vous d'avoir accès aux machines que vous essayez de configurer.
Apprenez-en plus sur l'exécution de cloud-controller-manager dans la documentation de Kubernetes.
Modifier le fichier de configuration de votre cluster
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 votre cluster GKE répond à cette exigence, ajoutez l'annotation baremetal.cluster.gke.io/external-cloud-provider: "true"
au fichier de configuration de votre cluster dans la section des métadonnées avant de créer le cluster.
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 exigent un format spécial pour providerID
. GKE sur Bare Metal génère un providerID
avec un format tel que baremetal://MACHINE_ADDRESS
pour chaque machine de nœud. Si vous souhaitez utiliser un providerID
différent, vous pouvez en spécifier un pour chaque nœud ainsi que l'adresse IP.
L'exemple de fichier de configuration de cluster suivant montre comment spécifier l'option providerID
pour les nœuds de votre cluster:
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-cluster1
spec:
clusterName: cluster1
nodes:
- address: 172.18.0.2
+ providerID: some-prefix3://unique-string3
Créer votre cluster
Après avoir modifié le fichier de configuration, utilisez la commande suivante pour initialiser votre cluster :
bmctl create cluster -c cluster1
Pour en savoir plus sur la création de clusters, consultez la section Présentation de la création de clusters.
Configuration des nœuds
Lorsque vous créez un cluster configuré pour OpenStack, les nœuds du cluster apportent les modifications suivantes:
Tous les nœuds de
cluster1
s'exécutent avec l'argument requis:cloud-provider: "external"
.Le rejet suivant a également été ajouté à leurs fichiers de configuration pour tous les nœuds:
taints: - effect: NoSchedule key: node.cloudprovider.kubernetes.io/uninitialized value: "true"
Ces rejets sont supprimés une fois que vous avez initialisé votre fournisseur de services cloud sur ce cluster.
kubelet
s'exécute avec leproviderID
que vous avez spécifié dans le fichier de configuration du cluster.