Dans Google Distributed Cloud, vos charges de travail s'exécutent sur un ou plusieurs clusters d'utilisateur. Cette page explique comment créer un cluster d'utilisateur à utiliser dans les domaines de topologie Google Distributed Cloud. Vous devez disposer de la version 1.31 ou ultérieure de Google Distributed Cloud pour utiliser les domaines de topologie.
Pour configurer un domaine de topologie, vous devez activer le cluster avancé. Notez les limites suivantes avec l'aperçu avancé du cluster:
- Vous ne pouvez activer le cluster avancé qu'au moment de la création du cluster pour les nouveaux clusters 1.31.
- Une fois le cluster avancé activé, vous ne pourrez plus le mettre à niveau vers la version 1.32. N'activez le cluster avancé que dans un environnement de test.
Cette page s'adresse aux administrateurs, aux architectes et aux opérateurs qui configurent, surveillent et gèrent l'infrastructure technologique. Pour en savoir plus sur les rôles courants et les exemples de tâches que nous citons dans le contenu Google Cloud , consultez la section Rôles utilisateur et tâches courantes de l'utilisateur dans GKE Enterprise.
Avant de commencer
Assurez-vous d'avoir configuré votre poste de travail administrateur et de pouvoir vous y connecter, comme décrit dans la section Créer un poste de travail administrateur. Le poste de travail administrateur dispose des outils dont vous avez besoin pour créer votre cluster d'utilisateur. Effectuez toutes les étapes de ce document sur votre poste de travail administrateur.
Si vous ne l'avez pas déjà fait, configurez vos ressources Google Cloud comme décrit dans ces documents:
Avant de créer un cluster d'utilisateur, vous devez disposer d'un cluster d'administrateur pour gérer le cluster d'utilisateur. Si vous ne l'avez pas déjà fait, créez un poste de travail administrateur et un cluster d'administrateur à utiliser avec les domaines de topologie.
Déterminez la version du cluster d'utilisateur que vous souhaitez installer. Lorsque vous créez un cluster d'utilisateur, vous installez généralement la version qui correspond à celle du cluster d'administrateur. Si vous souhaitez installer une autre version sur un cluster d'utilisateur, consultez la section Règles de version.
Consultez le document de planification des adresses IP et assurez-vous de disposer de suffisamment d'adresses IP disponibles.
Configurez votre équilibreur de charge pour l'équilibrage de charge manuel. Vous devez configurer votre équilibreur de charge avant de créer le cluster d'utilisateur.
Déterminez le nombre de pools de nœuds dont vous avez besoin et le système d'exploitation que vous souhaitez exécuter dans chacun de vos pools.
Rassemblez les informations dont vous avez besoin pour accéder à chaque instance de vCenter Server. Vous avez besoin de ces informations pour remplir les sections
Secret
etVSphereInfraConfig.credentials.vCenters
du fichier de configuration de l'infrastructure vSphere. Pour obtenir les informations requises, consultez les éléments suivants:
Présentation de la procédure
Voici les principales étapes à suivre pour créer un cluster d'utilisateur à l'aide de gkectl
:
- Remplir le fichier de configuration de votre cluster d'utilisateur
- Spécifiez les détails de votre nouveau cluster dans le fichier de configuration du cluster d'utilisateur.
- Remplir votre fichier de bloc d'adresses IP
- Spécifiez les adresses IP de la passerelle, du masque de réseau, des nœuds de plan de contrôle et, éventuellement, des nœuds de calcul dans un fichier de bloc d'adresses IP.
- Créer un cluster d'utilisateur
- Exécutez
gkectl create cluster
pour créer un cluster comme spécifié dans vos fichiers de configuration.
- Vérifier que votre cluster d'utilisateur est en cours d'exécution
- Utilisez
kubectl
pour afficher les nœuds de votre cluster.
À la fin de cette procédure, vous disposerez d'un cluster d'utilisateur en cours d'exécution dans lequel vous pourrez déployer vos charges de travail.
Remplir le fichier de configuration de votre cluster d'utilisateur
Si vous avez utilisé gkeadm
pour créer le poste de travail administrateur, gkeadm
a généré un modèle pour le fichier de configuration de votre cluster d'utilisateur nommé user-cluster.yaml
.
De plus, gkeadm
a rempli certains champs pour vous.
Si vous n'avez pas utilisé gkeadm
pour créer votre poste de travail administrateur, vous pouvez utiliser gkectl
pour générer un modèle pour le fichier de configuration de votre cluster d'utilisateur.
Pour générer un modèle pour le fichier de configuration de votre cluster d'utilisateur, exécutez la commande suivante :
gkectl create-config cluster --config=OUTPUT_FILENAME --gke-on-prem-version=VERSION
Remplacez les éléments suivants :
OUTPUT_FILENAME
: chemin d'accès de votre choix pour le modèle généré. Si vous omettez cette option, gkectl
nomme le fichier user-cluster.yaml
et le place dans le répertoire actuel.
VERSION
: numéro de version souhaité. Exemple : gkectl create-config cluster --gke-on-prem-version=1.31.0-gke.889
.
Familiarisez-vous avec le fichier de configuration en analysant le fichier de configuration du cluster d'utilisateur. Nous vous recommandons de conserver ce document ouvert dans un nouvel onglet ou dans une autre fenêtre, car vous en aurez besoin pour réaliser les étapes suivantes.
name
Saisissez le nom de votre choix pour le cluster d'utilisateur dans le champ name
.
gkeOnPremVersion
Ce champ est déjà renseigné. Il spécifie la version de Google Distributed Cloud. Par exemple, 1.31.0-gke.889
.
enableAdvancedCluster
Définissez enableAdvancedCluster
sur true
.
enableControlplaneV2
Controlplane V2 est obligatoire pour tous les clusters d'utilisateurs de la version 1.30 ou ultérieure. Définissez enableControlplaneV2
sur true
.
Lorsque Controlplane V2 est activé, le plan de contrôle du cluster d'utilisateur s'exécute sur les nœuds du cluster d'utilisateur lui-même.
enableDataplaneV2
Définissez enableDataplaneV2 sur true
.
vCenter
Supprimez l'intégralité de cette section. Vous devez plutôt configurer les informations vCenter dans le fichier de configuration de l'infrastructure vSphere par domaine de topologie.
network
Supprimez ce qui suit du fichier de configuration:
- L'intégralité de la section
network.hostConfig
. Ces informations sont configurées dans le fichier de configuration de l'infrastructure vSphere par domaine de topologie. - Le champ
network.vCenter.networkName
Ce champ est configuré dans le fichier de configuration de l'infrastructure vSphere par domaine de topologie. - L'intégralité de la section
network.controlPlaneIPBlock
. Les adresses IP de la passerelle, du masque de réseau et des nœuds du plan de contrôle sont configurées dans un fichier de bloc d'adresses IP.
- L'intégralité de la section
Définissez
network.ipMode.ipBlockFilePath
sur le chemin d'accès au fichier de bloc d'adresses IP.Décidez comment vous souhaitez que vos nœuds de calcul obtiennent leurs adresses IP. Vous disposez des options suivantes :
Depuis un serveur DHCP que vous avez configuré à l'avance. Définissez
network.ipMode.type
sur"dhcp"
.À partir d'une liste d'adresses IP statiques que vous fournissez dans le fichier de bloc d'adresses IP. Définissez
network.ipMode.type
sur"static"
.
Les nœuds du plan de contrôle pour votre cluster d'utilisateur doivent obtenir leurs adresses IP à partir d'une liste d'adresses statiques que vous fournissez dans le fichier de bloc d'adresses IP. C'est le cas même si vos nœuds de calcul obtiennent leurs adresses à partir d'un serveur DHCP.
Que vous utilisiez un serveur DHCP ou que vous spécifiiez une liste d'adresses IP statiques, vous devez disposer de suffisamment d'adresses IP disponibles pour votre cluster d'utilisateur. Pour connaître le nombre d'adresses IP dont vous avez besoin, consultez la section Planifier vos adresses IP.
Les champs network.podCIDR et network.serviceCIDR sont préremplis avec des valeurs que vous pouvez laisser inchangées, sauf si elles entrent en conflit avec des adresses déjà utilisées sur votre réseau. Kubernetes utilise ces plages pour attribuer des adresses IP aux pods et aux services de votre cluster.
loadBalancer
Définissez une adresse IP virtuelle pour le serveur d'API Kubernetes de votre cluster d'utilisateur. Indiquez votre adresse IP virtuelle comme valeur pour
loadBalancer.vips.controlPlaneVIP
.Définissez-en une autre pour le service d'entrée de votre cluster d'utilisateur. Indiquez votre adresse IP virtuelle comme valeur pour
loadBalancer.vips.ingressVIP
.Définissez
loadBalancer.kind
sur"ManualLB"
, puis remplissez la sectionmanualLB
. Pour en savoir plus, consultez la page sur l'équilibrage de charge manuel.
advancedNetworking
Si vous envisagez de créer une passerelle NAT de sortie, définissez advancedNetworking sur true
.
multipleNetworkInterfaces
Définissez multipleNetworkInterfaces sur false
. Les interfaces réseau multiples pour les pods ne sont pas compatibles avec les domaines de topologie.
storage
Définissez storage.vSphereCSIDisabled sur true
pour désactiver le déploiement des composants CSI vSphere.
masterNode
Si vous souhaitez spécifier le processeur et la mémoire pour les nœuds de plan de contrôle du cluster utilisateur, remplissez les champs
cpus
etmemoryMB
dans la sectionmasterNode
.Seuls les clusters haute disponibilité (HA) sont acceptés. Définissez le champ
replicas
sur3
pour spécifier que le cluster aura trois nœuds de plan de contrôle.Pour activer le redimensionnement automatique des nœuds du plan de contrôle, définissez
autoResize.enabled
surtrue
.Supprimez l'intégralité de la section
masterNode.vsphere
.Renseignez le champ
masterNode.topologyDomains
avec le nom du domaine de topologie dans lequel vous souhaitez que les nœuds du plan de contrôle se trouvent.
nodePools
Un pool de nœuds est un groupe de nœuds de calcul au sein d'un cluster qui possèdent tous la même configuration. Par exemple, vous pouvez configurer un domaine de topologie distinct pour chaque pool de nœuds. Vous devez spécifier au moins un pool de nœuds en remplissant la section nodePools
.
Pour chaque pool de nœuds que vous spécifiez:
Dans le champ
nodePools[i].topologyDomains
, indiquez le nom du domaine de topologie dans lequel vous souhaitez que le pool de nœuds se trouve.Supprimez tous les champs de la section
nodePools[i].vsphere
, à l'exception denodePools[i].vsphere.tags
. Vous spécifiez ces informations dans le fichier de configuration de l'infrastructure vSphere par domaine de topologie.
# advanced-cluster-change #
Définissez nodePools[i].osImageType
sur ubuntu_cgroupv2
ou ubuntu_containerd
.
Pour en savoir plus sur les pools de nœuds, consultez les pages Pools de nœuds et Créer et gérer des pools de nœuds.
antiAffinityGroups
Définissez antiAffinityGroups.enabled
sur false
.
Les règles d'anti-affinité Distributed Resource Scheduler (DRS) ne sont pas compatibles avec les domaines de topologie.
stackdriver
Renseignez la section stackdriver
pour activer Cloud Logging et Cloud Monitoring pour votre cluster.
Notez les exigences suivantes :
L'ID dans
stackdriver.projectID
doit être identique à celui dansgkeConnect.projectID
etcloudAuditLogging.projectID
.La région Google Cloud définie dans
stackdriver.clusterLocation
doit être la même que celle définie danscloudAuditLogging.clusterLocation
etgkeConnect.location
. En outre, sigkeOnPremAPI.enabled
est défini surtrue
, la même région doit être définie dansgkeOnPremAPI.location
.
Si les ID de projet et les régions ne sont pas identiques, la création du cluster échoue.
gkeConnect
Votre cluster d'utilisateur doit être enregistré dans un parc Google Cloud .
Renseignez la section gkeConnect
pour spécifier un projet hôte du parc et un compte de service associé. L'ID dans gkeConnect.projectID
doit être identique à celui défini dans stackdriver.projectID
et cloudAuditLogging.projectID
. Si les ID de projet ne sont pas identiques, la création du cluster échoue.
Vous pouvez éventuellement spécifier une région dans laquelle les services Fleet et Connect s'exécutent dans gkeConnect.location
. Si vous n'incluez pas ce champ, le cluster utilise les instances globales de ces services.
Si vous incluez gkeConnect.location
dans votre fichier de configuration, la région que vous spécifiez doit être identique à celle configurée dans cloudAuditLogging.clusterLocation
, stackdriver.clusterLocation
et gkeOnPremAPI.location
. Si les régions ne sont pas identiques, la création du cluster échoue.
gkeOnPremAPI
Cette section explique comment les clusters sont enregistrés dans l'API GKE On-Prem.
L'outil de ligne de commande gkectl
est le seul outil de gestion du cycle de vie des clusters disponible pour les clusters utilisant des domaines de topologie. Bien que la console Google Cloud , Google Cloud CLI et Terraform ne soient pas compatibles avec les clusters utilisant des domaines de topologie, vous pouvez enregistrer le cluster dans l'API GKE On-Prem lors de sa création.
Si l'API GKE On-Prem est activée dans votre projetGoogle Cloud , tous les clusters du projet sont automatiquement enregistrés dans l'API GKE On-Prem dans la région configurée dans stackdriver.clusterLocation
. La région gkeOnPremAPI.location
doit être identique à celle spécifiée dans cloudAuditLogging.clusterLocation
, gkeConnect.location
et stackdriver.clusterLocation
.
Si vous souhaitez enregistrer tous les clusters du projet dans l'API GKE On-Prem, veillez à suivre les étapes de la section Avant de commencer pour activer et utiliser l'API GKE On-Prem dans le projet.
Si vous ne souhaitez pas enregistrer le cluster dans l'API GKE On-Prem, incluez cette section et définissez
gkeOnPremAPI.enabled
surfalse
. Si vous ne souhaitez enregistrer aucun cluster dans le projet, désactivezgkeonprem.googleapis.com
(nom de service de l'API GKE On-Prem) dans le projet. Pour obtenir des instructions, consultez la section Désactiver des services.
cloudAuditLogging
Si vous souhaitez intégrer les journaux d'audit du serveur d'API Kubernetes de votre cluster avec Cloud Audit Logs, remplissez la section cloudAuditLogging
.
Notez les exigences suivantes :
# advanced-cluster-change #
Définissez cloudAuditLogging.serviceAccountKeyPath
sur le même chemin que stackdriver.serviceAccountKeyPath
.
L'ID dans
cloudAuditLogging.projectID
doit être identique à celui dansgkeConnect.projectID
etstackdriver.projectID
.La région dans
cloudAuditLogging.clusterLocation
doit être identique à celle définie dansgkeConnect.location
(si le champ est inclus dans votre fichier de configuration) etstackdriver.clusterLocation
. En outre, sigkeOnPremAPI.enabled
est défini surtrue
, la même région doit être définie dansgkeOnPremAPI.location
.
Si les ID de projet et les régions ne sont pas identiques, la création du cluster échoue.
preparedSecrets
Supprimez le champ preparedSecrets
.
Les identifiants préparés ne sont pas acceptés lorsque les domaines de topologie sont activés.
Exemple de fichiers de configuration préremplis
Voici un exemple de fichier de bloc d'adresses IP et de fichier de configuration de cluster d'utilisateur :
user-ipblock.yaml
blocks: - netmask: 255.255.255.0 gateway: 172.16.21.1 ips: - ip: 172.16.21.2 hostname: worker-vm-1 - ip: 172.16.21.3 hostname: worker-vm-2 - ip: 172.16.21.4 hostname: worker-vm-3 - ip: 172.16.21.5 hostname: worker-vm-4 - netmask: 255.255.255.0 gateway: 100.115.223.254 ips: - ip: 100.115.222.205 hostname: cp-1 isControlPlane: true - ip: 100.115.222.206 hostname: cp-2 isControlPlane: true - ip: 100.115.222.207 hostname: cp-3 isControlPlane: true
user-cluster.yaml
cat user-cluster.yaml apiVersion: v1 kind: UserCluster name: "my-user-cluster" gkeOnPremVersion: 1.31.0-gke.889 enableAdvancedCluster: true enableControlplaneV2: true enableDataplaneV2: true network: ipMode: type: "static" ipBlockFilePath: "user-ipblock.yaml" serviceCIDR: 10.96.0.0/20 podCIDR: 192.168.0.0/16 loadBalancer: vips: controlPlaneVIP: "100.115.222.200" ingressVIP: "172.16.21.30" kind: "ManualLB" manualLB: ingressHTTPNodePort: 32527 ingressHTTPSNodePort: 30139 controlPlaneNodePort: 30968 masterNode: cpus: 4 memoryMB: 8192 replicas: 3 nodePools: - name: "worker-node-pool1" cpus: 4 memoryMB: 8192 replicas: 3 topologyDomains: - "domain1" antiAffinityGroups: enabled: false gkeConnect: projectID: "my-project-123" location: "us-central1" registerServiceAccountKeyPath: "connect-register-sa-2203040617.json" stackdriver: projectID: "my-project-123" clusterLocation: "us-central1" enableVPC: false serviceAccountKeyPath: "log-mon-sa-2203040617.json" autoRepair: enabled: true
Voici les points importants à comprendre dans l'exemple précédent :
Le champ
nodePools.replicas
est défini sur3
, ce qui signifie qu'il y a trois nœuds de calcul dans"worker-node-pool"
. Tous les nœuds de calcul utilisent des adresses IP statiques, carnetwork.ipMode.type
est défini sur"static"
.Les adresses IP des nœuds de plan de contrôle et des nœuds de calcul sont spécifiées dans un fichier de bloc d'adresses IP. Le fichier de blocs d'adresses IP comporte quatre adresses pour les nœuds de calcul, même s'il n'y a que trois nœuds de calcul. L'adresse IP du nœud de calcul supplémentaire est nécessaire lors de la mise à niveau, de la mise à jour et de la réparation automatique du cluster. Les adresses IP des nœuds du plan de contrôle sont associées au flag
isControlPlane: true
.Les clusters avancés, Controlplane V2 et Dataplane V2 sont activés.
Le champ
masterNode.replicas
est défini sur3
. Le cluster dispose donc d'un plan de contrôle à haute disponibilité.L'adresse IP virtuelle du plan de contrôle se trouve dans le même VLAN que les nœuds du plan de contrôle, et l'adresse IP virtuelle d'entrée se trouve dans le même VLAN que les nœuds de calcul.
Remplir votre fichier de bloc d'adresses IP
Copiez le modèle du fichier de bloc d'adresses IP dans le fichier du répertoire que vous avez spécifié dans le champ network.ipMode.ipBlockFilePath
du fichier de configuration du cluster d'utilisateur. Créez des fichiers de bloc d'adresses IP distincts pour le cluster d'administrateur et pour chaque cluster d'utilisateur.
Ajoutez les adresses IP de la passerelle, du masque de réseau et des nœuds de plan de contrôle au fichier de blocage des adresses IP. Pour chaque adresse IP de nœud de plan de contrôle, ajoutez isControlPlane: true
, comme indiqué dans l'exemple précédent. Si vous souhaitez un cluster d'utilisateur à haute disponibilité, spécifiez trois adresses IP. Sinon, spécifiez une seule adresse IP. Le nombre d'adresses IP que vous spécifiez pour les nœuds de plan de contrôle doit correspondre au nombre indiqué dans le champ masterNode.replicas
du fichier de configuration du cluster d'utilisateur.
Si network.ipMode.type
est défini sur "static"
, ajoutez les adresses IP des nœuds de calcul au fichier de bloc d'adresses IP. Veillez à spécifier une adresse IP supplémentaire à utiliser lors de la mise à niveau, de la mise à jour et de la réparation automatique du cluster.
Chaque adresse de passerelle du fichier de bloc d'adresses IP doit correspondre à l'adresse spécifiée dans un champ topologyDomains[i].network.gateway
du fichier de configuration de l'infrastructure vSphere. Pour en savoir plus, consultez l'exemple de domaines de topologie.
Créer un cluster d'utilisateur
Exécutez la commande suivante pour créer un cluster d'utilisateur :
gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Localiser le fichier kubeconfig du cluster d'utilisateur
La commande gkectl create cluster
crée un fichier kubeconfig nommé USER_CLUSTER_NAME-kubeconfig
dans le répertoire actuel. Vous aurez besoin de ce fichier kubeconfig ultérieurement pour interagir avec votre cluster d'utilisateur.
Le fichier kubeconfig contient le nom de votre cluster d'utilisateur. Pour afficher le nom du cluster, vous pouvez exécuter la commande suivante :
kubectl config get-clusters --kubeconfig USER_CLUSTER_KUBECONFIG
Le résultat affiche le nom du cluster. Exemple :
NAME my-user-cluster
Si vous le souhaitez, vous pouvez modifier le nom et l'emplacement de votre fichier kubeconfig.
Vérifier que votre cluster d'utilisateur est en cours d'exécution
Vérifiez que votre cluster d'utilisateur est en cours d'exécution :
kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG
Remplacez USER_CLUSTER_KUBECONFIG par le chemin d'accès du fichier kubeconfig de votre cluster d'utilisateur.
Le résultat affiche les nœuds du cluster d'utilisateur. Exemple :
cp-vm-1 Ready control-plane,master 18m cp-vm-2 Ready control-plane,master 18m cp-vm-3 Ready control-plane,master 18m worker-vm-1 Ready 6m7s worker-vm-2 Ready 6m6s worker-vm-3 Ready 6m14s
Configurer votre PodTemplate
Le libellé de topologie est renseigné dans les libellés des nœuds du domaine de topologie.
À moins que la configuration de votre domaine de topologie n'ait utilisé la contrainte par défaut, "topology.kubernetes.io/zone"
, comme clé de topologie, vous devez configurer la clé de topologie dans le modèle de pod de votre déploiement, de votre StatefulSet ou de votre ReplicaSet, le cas échéant.
Par exemple, supposons que vous ayez défini la clé dans le libellé de la topologie comme "topology.examplepetstore.com/zone"
. Dans PodTemplate
, vous spécifiez la clé comme valeur du champ topologySpreadConstraints.topologyKey
. Cela permet au planificateur Kubernetes de distribuer les pods sur le domaine de topologie afin de garantir une haute disponibilité et d'éviter une surconcentration dans une zone donnée en cas de défaillance.
Dépannage
Consultez la section Dépanner la création et la mise à niveau du cluster.