Dans les clusters Anthos sur Bare Metal, les clusters hybrides effectuent le double rôle d'un cluster d'administrateur et d'un cluster d'utilisateur. Ils exécutent des charges de travail et gèrent en même temps d'autres clusters (en plus de se gérer eux-mêmes).
Les clusters hybrides éliminent la nécessité d'exécuter un cluster d'administrateur distinct dans les scénarios limités en ressources et peuvent garantir une haute disponibilité. Dans un cluster hybride à haute disponibilité, si un nœud échoue, d'autres nœuds le remplacent.
Les clusters hybrides sont différents des clusters autonomes, dans la mesure où ils peuvent également gérer d'autres clusters. Les clusters autonomes ne peuvent ni créer, ni gérer d'autres clusters.
Cependant, lorsque vous créez des clusters hybrides, il existe un compromis entre flexibilité et sécurité. Étant donné que les clusters hybrides se gèrent eux-mêmes, l'exécution de charges de travail sur le même cluster augmente le risque d'exposition en matière de sécurité des données d'administration sensibles, telles que les clés SSH.
Vous créez un cluster hybride avec un plan de contrôle à haute disponibilité (HA) à l'aide de la commande bmctl
. La commande bmctl
peut être exécutée sur un poste de travail distinct ou sur l'un des nœuds du cluster hybride.
Prerequisites
- La dernière version de
bmctl
est téléchargée (gs://anthos-baremetal-release/bmctl/1.10.8/linux-amd64/bmctl
) à partir de Cloud Storage. - Le poste de travail qui exécute
bmctl
dispose d'une connectivité réseau à tous les nœuds du cluster hybride cible. - Le poste de travail qui exécute
bmctl
dispose d'une connectivité réseau à l'adresse IP virtuelle du plan de contrôle du cluster hybride cible. - La clé SSH utilisée pour créer le cluster hybride est disponible depuis la racine ou l'utilisateur dispose d'un accès SUDO à tous les nœuds du cluster hybride cible.
- Le compte de service "connect-register" est configuré pour une utilisation avec Connect.
Consultez le guide de démarrage rapide des clusters Anthos sur Bare Metal pour obtenir des instructions détaillées sur la création d'un cluster hybride.
Activer SELinux
Si vous souhaitez activer SELinux pour sécuriser vos conteneurs, vous devez vous assurer que SELinux est activé en mode Enforced
sur toutes vos machines hôtes. À partir de la version 1.9.0 des clusters Anthos sur solution Bare Metal, vous pouvez activer ou désactiver SELinux avant ou après la création des clusters, ou leurs mises à niveau. SELinux est activé par défaut sur Red Hat Enterprise Linux (RHEL) et CentOS. Si SELinux est désactivé sur vos machines hôtes ou si vous n'êtes pas sûr, consultez la section Sécuriser vos conteneurs à l'aide de SELinux pour savoir comment l'activer.
Les clusters Anthos sur solution Bare Metal ne sont compatibles avec SELinux que dans les systèmes RHEL et CentOS.
Se connecter à gcloud et créer un fichier de configuration de cluster hybride
- Connectez-vous à gcloud en tant qu'utilisateur avec l'identifiant
gcloud auth application-default
: - Administrateur de compte de service
- Administrateur de clés de compte de service
- Administrateur de projet IAM
- Lecteur de Compute
- Administrateur Service Usage
- Obtenez l'ID du projet Cloud à utiliser avec la création de cluster :
gcloud auth application-default loginVous devez disposer d'un rôle de propriétaire/éditeur de projet pour utiliser les fonctionnalités d'activation automatique d'API et de création de compte de service, décrites ci-dessous. Vous pouvez également ajouter les rôles IAM suivants à l'utilisateur :
export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILEJSON_KEY_FILE spécifie le chemin d'accès au fichier de clé JSON de votre compte de service.
export CLOUD_PROJECT_ID=$(gcloud config get-value project)
Créer le cluster hybride avec bmctl
Une fois que vous vous êtes connecté à gcloud et que votre projet est configuré, vous pouvez créer le fichier de configuration de cluster à l'aide de la commande bmctl
. Notez que dans cet exemple, tous les comptes de service sont créés automatiquement par la commande bmctl create config
:
bmctl create config -c HYBRID_CLUSTER_NAME --enable-apis \ --create-service-accounts --project-id=CLOUD_PROJECT_ID
Voici un exemple de création d'un fichier de configuration pour un cluster hybride appelé hybrid1
associé à l'ID de projet my-gcp-project
:
bmctl create config -c hybrid1 --create-service-accounts --project-id=my-gcp-project
Le fichier est écrit dans bmctl-workspace/hybrid1/hybrid1.yaml.
Au lieu d'activer des API et de créer des comptes de service automatiquement, vous pouvez également fournir à vos comptes de service existants les autorisations IAM appropriées. Vous pouvez ainsi ignorer la création automatique de compte de service décrite à l'étape précédente dans la commande bmctl
:
bmctl create config -c hybrid1
Modifier le fichier de configuration de cluster
Maintenant que vous disposez d'un fichier de configuration de cluster, vous pouvez y apporter les modifications suivantes :
Fournissez la clé privée SSH pour accéder aux nœuds du cluster hybride :
# bmctl configuration variables. Because this section is valid YAML but not a valid Kubernetes # resource, this section can only be included when using bmctl to # create the initial admin/hybrid cluster. Afterwards, when creating user clusters by directly # applying the cluster and node pool resources to the existing cluster, you must remove this # section. gcrKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json sshPrivateKeyPath: /path/to/your/ssh_private_key gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-connect.json gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-register.json cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-cloud-ops.json
Vous devez enregistrer vos clusters avec Connect auprès du parc de votre projet.
- Si vous avez créé votre fichier de configuration à l'aide des fonctionnalités d'activation automatique des API et de création de compte de service, vous pouvez ignorer cette étape.
- Si vous avez créé le fichier de configuration sans utiliser les fonctionnalités d'activation automatique des API et de création de compte de service, faites référence aux clés JSON du compte de service téléchargées dans les champs
gkeConnectAgentServiceAccountKeyPath
etgkeConnectRegisterServiceAccountKeyPath
correspondants du fichier de configuration de cluster.
Modifiez la configuration pour spécifier le type de cluster
hybrid
au lieu deadmin
:spec: # Cluster type. This can be: # 1) admin: to create an admin cluster. This can later be used to create user clusters. # 2) user: to create a user cluster. Requires an existing admin cluster. # 3) hybrid: to create a hybrid cluster that runs admin cluster components and user workloads. # 4) standalone: to create a cluster that manages itself, runs user workloads, but does not manage other clusters. type: hybrid
Modifiez la configuration pour spécifier un plan de contrôle à disponibilité élevée contenant plusieurs nœuds. Spécifiez un nombre impair de nœuds pour disposer d'un quorum majoritaire pour la haute disponibilité :
# Control plane configuration controlPlane: nodePoolSpec: nodes: # Control plane node pools. Typically, this is either a single machine # or 3 machines if using a high availability deployment. - address: 10.200.0.4 - address: 10.200.0.5 - address: 10.200.0.6
Spécifiez la densité du pod des nœuds de cluster et l'environnement d'exécution du conteneur :
.... # NodeConfig specifies the configuration that applies to all nodes in the cluster. nodeConfig: # podDensity specifies the pod density configuration. podDensity: # maxPodsPerNode specifies at most how many pods can be run on a single node. maxPodsPerNode: 250 # containerRuntime specifies which container runtime to use for scheduling containers on nodes. # containerd and docker are supported. containerRuntime: containerd ....
Pour les clusters hybrides, les valeurs autorisées pour
maxPodsPerNode
sont32-250
pour les clusters haute disponibilité et64-250
pour les clusters non haute disponibilité. Si aucune valeur n'est spécifiée, la valeur par défaut demaxPodsPerNode
est110
. Une fois le cluster créé, cette valeur ne peut pas être mise à jour.L'environnement d'exécution du conteneur par défaut est containerd. Vous pouvez également utiliser Docker. Pour en savoir plus sur la modification de votre environnement d'exécution, consultez notre guide de modification de l'environnement d'exécution des conteneurs.
La densité des pods est également limitée par les ressources IP disponibles de votre cluster. Pour plus de détails, consultez la section Mise en réseau de pods.
Créer le cluster hybride avec la configuration du cluster
Utilisez la commande bmctl
pour déployer le cluster :
bmctl create cluster -c CLUSTER_NAME
CLUSTER_NAME spécifie le nom du cluster que vous avez créé dans la section précédente.
Vous trouverez ci-dessous un exemple de la commande permettant de créer un fichier de configuration pour un cluster appelé hybrid1
:
bmctl create cluster -c hybrid1
Exemples de configurations de cluster hybride
Pour obtenir des exemples de configurations de cluster hybride, consultez la section Clusters hybrides dans les exemples de configurations de cluster.