Google Distributed Cloud permet d'utiliser OpenStack en tant que plate-forme de cloud privé. Ce guide explique comment configurer un cluster Google Distributed Cloud pour qu'il fonctionne avec un fournisseur cloud externe. L'exécution de clusters Google Distributed Cloud sur OpenStack vous permet d'utiliser les services OpenStack suivants:
Infrastructure as a Service (IaaS)
Load balancing as a Service (LBaaS)
Espace de stockage
Pour configurer un cluster afin qu'il fonctionne avec OpenStack, vous devez:
Lorsque vous créez le cluster, vous ajoutez une annotation
baremetal.cluster.gke.io/external-cloud-provider
.Cette annotation force Google Distributed Cloud à ajouter un indicateur kubelet
cloud-provider=external
Le kubelet ajoute ensuite
node.cloudprovider.kubernetes.io/uninitialized:NoSchedule
rejets aux nœuds du cluster
Cette configuration vous permet, à vous et à OpenStack, de posséder les processus d'initialisation des nœuds. Par exemple, vous pouvez déployer Google Distributed Cloud 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 Google Distributed Cloud à 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:
La page Déployer un cluster Google Distributed Cloud sur OpenStack présente un exemple de déploiement d'un cluster hybride Google Distributed Cloud sur des machines virtuelles (VM) OpenStack. Le déploiement utilise un script pour simplifier l'installation. Il présente également une façon d'activer l'équilibrage de charge en tant que service (LBaaS).
Configurer le fournisseur cloud OpenStack pour Kubernetes : ce tutoriel explique comment installer le fournisseur cloud OpenStack sur un cluster Google Distributed Cloud déployé sur OpenStack. Le fournisseur cloud OpenStack n'est pas obligatoire pour utiliser Google Distributed Cloud avec OpenStack.
Avant de commencer
Déterminez quels clusters GKE doivent utiliser les ressources OpenStack LBaaS.
Une fois que vous avez créé un cluster configuré pour utiliser des ressources OpenStack LBaaS, vous ne pouvez plus modifier la configuration pour passer aux ressources MetalLB. Assurez-vous d'initialiser vos clusters avec la configuration appropriée du fournisseur cloud.
Assurez-vous d'avoir accès aux machines que vous essayez de configurer.
Découvrez comment exécuter cloud-controller-manager dans la documentation de Kubernetes.
Modifier le fichier de configuration du 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"
à votre fichier de configuration de 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 cloud sur d'autres plates-formes cloud exigent un format spécial pour providerID
. Google Distributed Cloud génère un fichier providerID
au format 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 providerID
pour vos nœuds de 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 page 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"
.Tous les nœuds ont également le rejet suivant ajouté à leurs fichiers de configuration:
taints: - effect: NoSchedule key: node.cloudprovider.kubernetes.io/uninitialized value: "true"
Ces rejets sont supprimés une fois que vous avez initialisé votre fournisseur cloud sur ce cluster.
kubelet
s'exécute avec leproviderID
que vous avez spécifié dans le fichier de configuration du cluster.