Aidez à améliorer cette page
Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.
Déployer un cluster Amazon EKS sur AWS Outposts
Cette rubrique fournit une vue d'ensemble des éléments à prendre en compte lors de l'exécution d'un cluster local sur un Outpost. Elle donne également des instructions pour déployer un cluster local sur un Outpost.
Important
-
Ces considérations ne figurent pas dans la documentation Amazon EKS associée. Si d'autres rubriques de la documentation Amazon EKS entrent en conflit avec les considérations présentées ici, suivez ces dernières.
-
Ces considérations sont sujettes à modification et peuvent changer fréquemment. Nous vous recommandons donc de consulter régulièrement cette rubrique.
-
La plupart des considérations sont différentes de celles relatives à la création d’un cluster sur AWS Cloud.
-
Les clusters locaux prennent uniquement en charge les racks Outpost. Un seul cluster local peut s'exécuter sur plusieurs racks Outpost physiques qui constituent un seul Outpost logique. Un seul cluster local ne peut pas s’exécuter sur plusieurs Outposts logiques. Chaque Outpost logique possède un seul ARN d'Outpost.
-
Les clusters locaux exécutent et gèrent le plan de contrôle Kubernetes sur votre compte sur l’Outpost. Vous ne pouvez pas exécuter de charges de travail sur les instances du plan de contrôle Kubernetes ni modifier les composants du plan de contrôle Kubernetes. Ces nœuds sont gérés par le service Amazon EKS. Les modifications apportées au plan de contrôle Kubernetes ne sont pas conservées lors des actions de gestion automatique d’Amazon EKS, telles que l’application de correctifs.
-
Les clusters locaux prennent en charge les modules complémentaires autogérés et les groupes de nœuds Amazon Linux autogérés. Le plug-in Amazon VPC CNI pour Kubernetes, kube-proxy et les modules complémentaires CoreDNS sont automatiquement installés sur les clusters locaux.
-
Les clusters locaux nécessitent l'utilisation d'Amazon EBS sur les Outposts. Amazon EBS doit être disponible dans votre Outpost pour le stockage du plan de contrôle Kubernetes. Les Outposts prennent en charge les volumes
gp2Amazon EBS uniquement. -
Les Kubernetes
PersistentVolumesbasés sur Amazon EBS sont pris en charge à l’aide du pilote CSI Amazon EBS. -
Les instances du plan de contrôle des clusters locaux sont configurées selon une topologie empilée à haute disponibilité
. Deux des trois instances du plan de contrôle doivent être saines à tout moment pour maintenir le quorum. Si le quorum est perdu, contactez le support AWS, car certaines actions côté service seront nécessaires pour activer les nouvelles instances gérées.
Prérequis
-
Connaissance des options de déploiement Outposts, Sélection des types d’instances et des groupes de placement pour les clusters Amazon EKS sur AWS Outposts en fonction des considérations de capacité, ainsi que des exigences et considérations relatives au VPC.
-
Un Outpost existant. Pour plus d’informations, consultez la section Qu’est-ce qu’AWS Outposts.
-
L’outil de ligne de commande
kubectlest installé sur votre ordinateur ou AWS CloudShell. La version peut correspondre à celle utilisée par votre cluster Kubernetes, ou différer d’au plus une version mineure, qu’elle soit antérieure ou plus récente. Par exemple, si la version de votre cluster est1.29, vous pouvez utiliser la versionkubectl1.28,1.29ou1.30. Pour installer ou mettre à niveaukubectl, veuillez consulter Configuration de kubectl et eksctl. -
Version
2.12.3ou ultérieure ou version1.27.160ou ultérieure de l’interface de la ligne de commande AWS (AWS CLI) installée et configurée sur votre appareil ou dans AWS CloudShell. Pour vérifier votre version actuelle, utilisezaws --version | cut -d / -f2 | cut -d ' ' -f1. Les gestionnaires de package tels queyum,apt-getou Homebrew pour macOS ont souvent plusieurs versions de retard par rapport à la dernière version de l’AWS CLI. Pour installer la dernière version, consultez les sections Installation et Configuration rapide avec aws configure du Guide de l’utilisateur de l’interface de la ligne de commande AWS. La version de l’AWS CLI installée dans AWS CloudShell peut également être plusieurs versions derrière la dernière version. Pour la mettre à jour, consultez la section Installation de l’AWS CLI dans votre répertoire personnel dans le Guide de l’utilisateur AWS CloudShell. -
Un principal IAM avec des autorisations pour
createetdescribeun cluster Amazon EKS. Pour plus d’informations, consultez Créer un cluster Kubernetes local sur un Outpost et Affichage de la liste ou description de tous les clusters.
Lorsqu'un cluster Amazon EKS local est créé, le principal IAM qui crée le cluster est ajouté de manière permanente. Le principal est spécifiquement ajouté à la table d’autorisation RBAC Kubernetes en tant qu’administrateur. Cette entité possède des autorisations system:masters. L’identité de cette entité n’est pas visible dans la configuration de votre cluster. Il est donc important de noter l’entité qui a créé le cluster et de veiller à ne jamais la supprimer. Initialement, seul le principal qui a créé le serveur peut effectuer des appels vers le serveur d’API Kubernetes à l’aide de kubectl. Si vous utilisez la console pour créer le cluster, assurez-vous que les mêmes informations d'identification IAM figurent dans la chaîne d'informations d'identification du SDK AWS lorsque vous exécutez des commandes kubectl sur votre cluster. Une fois votre cluster créé, vous pouvez accorder à d'autres principaux IAM l'accès à votre cluster.
Créer un cluster local Amazon EKS
Vous pouvez créer un cluster local à l’aide des outils suivants décrits dans cette page :
Vous pouvez également utiliser l’interface CLI AWS, l’API Amazon EKS, les SDK AWS
eksctl
Pour créer un cluster avec eksctl
-
Installez la version
0.214.0ou une version ultérieure de l’outil de ligne de commandeeksctlsur votre appareil ou AWS CloudShell. Pour installer ou mettre à joureksctl, veuillez consulter Installationdans la documentation de eksctl. -
Copiez les contenus suivants sur votre appareil. Remplacez les valeurs suivantes, puis exécutez la commande modifiée pour créer le fichier
outpost-control-plane.yaml:-
Remplacez le
region-codepar la région AWS prise en charge dans laquelle vous souhaitez créer votre cluster. -
Remplacez
my-clusterpar le nom de votre cluster. Un nom ne peut contenir que des caractères alphanumériques (sensibles à la casse) et des traits d'union. Il doit commencer par un caractère alphanumérique et ne peut pas dépasser 100 caractères. Le nom doit être unique dans la région AWS et le compte AWS dans lesquels vous créez le cluster. Le nom doit être unique dans la région AWS et le compte AWS dans lesquels vous créez le cluster. -
Remplacez
vpc-ExampleID1etsubnet-ExampleID1par les ID de votre VPC et de votre sous-réseau existants. Le VPC et le sous-réseau doivent répondre aux exigences décrites dans Créer un VPC et des sous-réseaux pour les clusters Amazon EKS sur AWS Outposts. -
Remplacez
uniqueidpar l'ID de votre Outpost. -
Remplacez
m5.largepar un type d'instance disponible sur votre Outpost. Avant de choisir un type d'instance, consultez Sélection des types d’instances et des groupes de placement pour les clusters Amazon EKS sur AWS Outposts en fonction de considérations de capacité. Trois instances du plan de contrôle sont déployées. Vous ne pouvez pas modifier ce nombre.cat >outpost-control-plane.yaml <<EOF apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: "1.33" vpc: clusterEndpoints: privateAccess: true id: "vpc-vpc-ExampleID1" subnets: private: outpost-subnet-1: id: "subnet-subnet-ExampleID1" outpost: controlPlaneOutpostARN: arn:aws:outposts:region-code:111122223333:outpost/op-uniqueid controlPlaneInstanceType: m5.large EOFPour voir la liste complète de toutes les options disponibles et des valeurs par défaut, consultez AWS Outposts Support
et Config file schema (langue française non garantie) dans la documentation eksctl.
-
-
Créez le cluster à l'aide du fichier de configuration créé à l'étape précédente.
eksctlcrée un VPC et un sous-réseau sur votre Outpost pour y déployer le cluster.eksctl create cluster -f outpost-control-plane.yamlL'approvisionnement de cluster dure plusieurs minutes. Pendant la création du cluster, plusieurs lignes de sortie apparaissent. La dernière ligne de sortie est similaire à celle de l'exemple suivant.
[✓] EKS cluster "my-cluster" in "region-code" region is readyAstuce
Pour afficher la plupart des options qui peuvent être spécifiées lors de la création d'un cluster avec
eksctl, utilisez la commandeeksctl create cluster --help. Pour consulter toutes les options disponibles, vous pouvez utiliser un fichierconfig. Pour plus d'informations, consultez Utilisation des fichiers de configurationet du schéma du fichier de configuration dans la documentation eksctl. Vous pouvez trouver des exemples de fichiers de configurationsur GitHub. La commande
eksctla automatiquement créé une entrée d’accès pour le principal IAM (utilisateur ou rôle) qui a créé le cluster et a accordé au principal IAM des autorisations d’administrateur sur les objets Kubernetes du cluster. Si vous ne souhaitez pas que le créateur du cluster dispose d’un accès administrateur aux objets Kubernetes sur le cluster, ajoutez le texte suivant au fichier de configuration précédent :bootstrapClusterCreatorAdminPermissions: false(au même niveau quemetadata,vpc, etoutpost). Si vous avez ajouté cette option, après la création du cluster, vous devez créer une entrée d’accès pour au moins un principal IAM, sinon aucun principal IAM n’aura accès aux objets Kubernetes du cluster.
AWS Management Console
Pour créer votre cluster à l’aide de AWS Management Console
-
Vous devez disposer d’un VPC et d’un sous-réseau existants qui répondent aux exigences d’Amazon EKS. Pour de plus amples informations, consultez Créer un VPC et des sous-réseaux pour les clusters Amazon EKS sur AWS Outposts.
-
Si vous avez déjà un rôle IAM de cluster local, ou si vous allez créer votre cluster avec
eksctl, vous pouvez ignorer cette étape. Par défaut,eksctlcrée un rôle pour vous.-
Exécutez la commande suivante pour créer un fichier JSON de politique d'approbation IAM.
cat >eks-local-cluster-role-trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF -
Créez le rôle IAM de cluster Amazon EKS. Pour créer un rôle IAM, le principal IAM qui crée le rôle doit se voir attribuer l'action (autorisation) IAM
iam:CreateRole.aws iam create-role --role-name myAmazonEKSLocalClusterRole --assume-role-policy-document file://"eks-local-cluster-role-trust-policy.json" -
Attachez la politique gérée Amazon EKS nommée AmazonEKSLocalOutpostClusterPolicy au rôle. Pour attacher une politique IAM à un principal IAM, le principal qui attache la politique doit se voir attribuer l'une des actions (autorisations) IAM
iam:AttachUserPolicyouiam:AttachRolePolicy.aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSLocalOutpostClusterPolicy --role-name myAmazonEKSLocalClusterRole
-
-
Ouvrez la console Amazon EKS
. -
En haut de l’écran de la console, assurez-vous d’avoir sélectionné une région AWS prise en charge.
-
Choisissez Add cluster (Ajouter un cluster), puis choisissez Create (Créer).
-
Sur la page Configurer le cluster, saisissez ou sélectionnez les valeurs des champs suivants :
-
Emplacement du plan de contrôle Kubernetes : choisissez AWS Outposts.
-
ID Outpost (ID d'Outpost) – Choisissez l'ID de l'Outpost sur lequel vous souhaitez créer votre plan de contrôle.
-
Instance type (Type d'instance) – Sélectionnez un type d'instance. Seuls les types d'instances disponibles dans votre Outpost sont affichés. Dans la liste déroulante, chaque type d'instance indique le nombre de nœuds pour lesquels le type d'instance est recommandé. Avant de choisir un type d'instance, consultez Sélection des types d’instances et des groupes de placement pour les clusters Amazon EKS sur AWS Outposts en fonction de considérations de capacité. Tous les réplicas sont déployés à l'aide du même type d'instance. Vous ne pouvez pas modifier le type d’instance une fois le cluster créé. Trois instances du plan de contrôle sont déployées. Vous ne pouvez pas modifier ce nombre.
-
Nom : nom de votre cluster. Doit être unique au sein de votre compte AWS. Un nom ne peut contenir que des caractères alphanumériques (sensibles à la casse) et des traits d'union. Il doit commencer par un caractère alphanumérique et ne peut pas dépasser 100 caractères. Le nom doit être unique dans la région AWS et le compte AWS dans lesquels vous créez le cluster. Le nom doit être unique dans la région AWS et le compte AWS dans lesquels vous créez le cluster.
-
Version Kubernetes : choisissez la version Kubernetes que vous souhaitez utiliser pour votre cluster. Nous vous recommandons de sélectionner la dernière version, sauf si vous devez utiliser une version antérieure.
-
Rôle de service du cluster : choisissez le rôle IAM du cluster Amazon EKS que vous avez créé à une étape précédente pour autoriser le plan de contrôle Kubernetes à gérer des ressources AWS.
-
Accès administrateur du cluster Kubernetes : si vous souhaitez que le principal IAM (rôle ou utilisateur) qui crée le cluster dispose d’un accès administrateur aux objets Kubernetes du cluster, acceptez la valeur par défaut (autoriser). Amazon EKS crée une entrée d'accès pour le principal IAM et accorde des autorisations d'administrateur du cluster à cette entrée d'accès. Pour plus d'informations sur les entrées d'accès, consultez Attribution de l’accès Kubernetes aux utilisateurs IAM avec les entrées d’accès EKS.
Si vous souhaitez qu’un principal IAM différent du principal qui crée le cluster dispose d’un accès administrateur aux objets du cluster Kubernetes, choisissez l’option Interdire. Après la création du cluster, tout principal IAM disposant des autorisations IAM pour créer des entrées d’accès peut ajouter des entrées d’accès pour tous les principaux IAM ayant besoin d’accéder aux objets du cluster Kubernetes. Pour plus d'informations sur les autorisations IAM requises, consultez la rubrique Actions définies par Amazon Elastic Kubernetes Service dans la Référence des autorisations de service. Si vous choisissez l’option d’interdiction et que vous ne créez aucune entrée d’accès, aucun principal IAM n’aura accès aux objets Kubernetes du cluster.
-
Identifications∘: (facultatif) ajoutez des identifications à votre cluster. Pour de plus amples informations, consultez Organiser les ressources Amazon EKS à l’aide de balises. Lorsque vous avez terminé d'utiliser cette page, choisissez Suivant.
-
-
Sur la page Spécifier les réseaux sélectionnez des valeurs pour les champs suivants :
-
VPC – Choisissez un VPC existant. Le VPC doit disposer d'un nombre suffisant d'adresses IP disponibles pour le cluster, pour tous les nœuds et pour les autres ressources Kubernetes que vous souhaitez créer. Votre VPC doit répondre aux exigences indiquées dans Exigences relatives aux VPC.
-
Sous-réseaux : par défaut, tous les sous-réseaux disponibles dans le VPC spécifié dans le champ précédent sont présélectionnés. Les sous-réseaux que vous choisissez doivent répondre aux exigences énoncées dans la section Exigences et considérations relatives aux sous-réseaux.
-
Groupes de sécurité : (facultatif) spécifiez un ou plusieurs groupes de sécurité créant des interfaces réseau auxquelles vous souhaitez associer Amazon EKS. Amazon EKS crée automatiquement un groupe de sécurité qui permet la communication entre votre cluster et votre VPC. Amazon EKS associe ce groupe de sécurité, et tout ce que vous choisissez, aux interfaces réseau qu'il crée. Pour plus d'informations sur le groupe de sécurité de cluster créé par Amazon EKS, consultez Voir les exigences relatives aux groupes de sécurité Amazon EKS pour les clusters. Vous pouvez modifier les règles dans le groupe de sécurité de cluster créé par Amazon EKS. Si vous choisissez d’ajouter vos propres groupes de sécurité, vous ne pouvez pas modifier ceux que vous choisissez après la création du cluster. Pour que les hôtes sur site puissent communiquer avec le point de terminaison du cluster, vous devez autoriser le trafic entrant provenant du groupe de sécurité du cluster. Pour les clusters qui n’ont pas de connexion Internet entrante et sortante (également connus sous le nom de clusters privés), vous devez effectuer l’une des opérations suivantes :
-
Ajoutez le groupe de sécurité associé aux points de terminaison d'un VPC requis. Pour plus d’informations sur les points de terminaison requis, consultez Utilisation des points de terminaison de VPC d'interface dans Accès aux services AWS dans le sous-réseau.
-
Modifiez le groupe de sécurité qu'Amazon EKS a créé pour autoriser le trafic provenant du groupe de sécurité associé aux points de terminaison d'un VPC. Lorsque vous avez terminé d'utiliser cette page, choisissez Suivant.
-
-
-
Sur la page Configurer l'observabilité, vous pouvez éventuellement choisir les options de Métriques et de Journalisation du plan de contrôle que vous voulez activer. Par défaut, chaque type de journal est désactivé.
-
Pour plus d’informations sur l’option de métriques Prometheus, consultez Étape 1 : activer les métriques Prometheus.
-
Pour plus d'informations sur les options de Journalisation du plan de contrôle, consultez Envoyer les journaux du plan de contrôle à CloudWatch Logs. Lorsque vous avez terminé d'utiliser cette page, choisissez Suivant.
-
-
Sur la page Vérifier et créer, passez en revue les informations que vous avez saisies ou sélectionnées sur les pages précédentes. Si vous devez apporter des modifications, choisissez Modifier. Quand vous êtes satisfait, choisissez Créer. Le champ État affiche EN COURS DE CRÉATION pendant que le cluster est provisionné.
L'approvisionnement de cluster dure plusieurs minutes.
Afficher votre cluster local Amazon EKS
-
Une fois votre cluster créé, vous pouvez afficher les instances du plan de contrôle Amazon EC2 qui ont été créées.
aws ec2 describe-instances --query 'Reservations[*].Instances[*].{Name:Tags[?Key==`Name`]|[0].Value}' | grep my-cluster-control-planeL'exemple qui suit illustre un résultat.
"Name": "my-cluster-control-plane-id1" "Name": "my-cluster-control-plane-id2" "Name": "my-cluster-control-plane-id3"Chaque instance est rejetée avec
node-role.eks-local.amazonaws.com/control-planepour qu'aucune charge de travail ne soit planifiée sur les instances du plan de contrôle. Pour plus d’informations sur les rejets, consultez la section Rejets et tolérancesdans la documentation Kubernetes. Amazon EKS surveille en permanence l'état des clusters locaux. Nous effectuons des actions de gestion automatiques, telles que des correctifs de sécurité et la réparation des instances défectueuses. Lorsque des clusters locaux sont déconnectés du cloud, nous prenons des mesures pour nous assurer que le cluster retrouve un état sain lors de la reconnexion. -
Si vous avez créé votre cluster à l'aide de
eksctl, vous pouvez sauter cette étape.eksctlcomplète cette étape pour vous. Activezkubectlpour communiquer avec votre cluster en ajoutant un nouveau contexte au fichierkubectlconfig. Pour savoir comment créer et mettre à jour le fichier, consultez Connexion de kubectl à un cluster EKS en créant un fichier kubeconfig.aws eks update-kubeconfig --region region-code --name my-clusterL'exemple qui suit illustre un résultat.
Added new context arn:aws:eks:region-code:111122223333:cluster/my-cluster to /home/username/.kube/config -
Pour vous connecter au serveur d’API Kubernetes de votre cluster local, vous devez avoir accès à la passerelle locale pour le sous-réseau ou vous connecter depuis le VPC. Pour de plus amples informations sur la connexion d’un rack Outpost à votre réseau sur site, consultez Fonctionnement des passerelles locales des racks (langue française non garantie) dans le Guide de l’utilisateur AWS Outposts. Si vous utilisez le routage VPC direct et que le sous-réseau Outpost possède un acheminement vers votre passerelle locale, les adresses IP privées des instances du plan de contrôle Kubernetes sont automatiquement diffusées sur votre réseau local. Le point de terminaison du serveur d’API Kubernetes du cluster local est hébergé dans Amazon Route 53 (Route 53). Le point de terminaison du service d'API peut être résolu par des serveurs DNS publics vers les adresses IP privées des serveurs d'API Kubernetes.
Les instances du plan de contrôle Kubernetes des clusters locaux sont configurées avec des interfaces réseau Elastic statiques et des adresses IP privées fixes qui ne changent pas tout au long du cycle de vie du cluster. Les appareils qui interagissent avec le serveur d’API Kubernetes peuvent ne pas avoir de connectivité à Route 53 pendant les déconnexions du réseau. Si tel est le cas, nous recommandons de configurer
/etc/hostsavec les adresses IP privées statiques pour la poursuite des opérations. Nous vous recommandons également de configurer des serveurs DNS locaux et de les connecter à votre Outpost. Pour plus d’informations, consultez la documentationAWS Outposts. Exécutez la commande suivante pour confirmer que la communication est établie avec votre cluster.kubectl get svcL'exemple qui suit illustre un résultat.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 28h -
(Facultatif) Testez l’authentification auprès de votre cluster local lorsqu’il est dans un état déconnecté de AWS Cloud. Pour obtenir des instructions, veuillez consulter Préparer des clusters Amazon EKS locaux sur AWS Outposts pour les déconnexions du réseau.
Ressources internes
Amazon EKS crée les ressources suivantes sur votre cluster. Les ressources sont destinées à un usage interne d'Amazon EKS. Pour le bon fonctionnement de votre cluster, ne modifiez pas ces ressources.
-
Les mirror pods
suivants : -
aws-iam-authenticator-node-hostname -
eks-certificates-controller-node-hostname -
etcd-node-hostname -
kube-apiserver-node-hostname -
kube-controller-manager-node-hostname -
kube-scheduler-node-hostname
-
-
Les modules complémentaires autogérés suivants :
-
kube-system/coredns -
kube-system/kube-proxy(non créé tant que vous n’avez pas ajouté votre premier nœud) -
kube-system/aws-node(non créé tant que vous n'avez pas ajouté votre premier nœud). Les clusters locaux utilisent le plug-in CNI Amazon VPC pour Kubernetes pour la mise en réseau des clusters. Ne modifiez pas la configuration des instances du plan de contrôle (pods nommésaws-node-controlplane-*). Il existe des variables de configuration que vous pouvez utiliser pour modifier la valeur par défaut lorsque le plugin crée de nouvelles interfaces réseau. Pour plus d'informations, consultez la documentationsur GitHub.
-
-
Les services suivants :
-
default/kubernetes -
kube-system/kube-dns
-
-
Une politique
PodSecurityPolicynomméeeks.system -
Un rôle
ClusterRolenomméeks:system:podsecuritypolicy -
Un rôle
ClusterRoleBindingnomméeks:system -
En plus du groupe de sécurité du cluster, Amazon EKS crée un groupe de sécurité dans votre compte AWS nommé
eks-local-internal-do-not-use-or-edit-. Ce groupe de sécurité permet au trafic de circuler librement entre les composants Kubernetes exécutés sur les instances du plan de contrôle.cluster-name-uniqueid
Étapes suivantes recommandées :
-
Accordez aux entités IAM l'accès à votre cluster. Si vous souhaitez que les entités puissent afficher les ressources Kubernetes dans la console Amazon EKS, accordez-leur les autorisations requises.
-
Familiarisez-vous avec ce qui se passe en cas de déconnexion du réseau.
-
Envisagez de mettre en place un plan de sauvegarde pour votre
etcd. Amazon EKS ne prend pas en charge la sauvegarde et la restauration automatisées d’etcdpour les clusters locaux. Pour plus d’informations, consultez la section Sauvegarde d’un cluster etcddans la documentation Kubernetes. Les deux options principales utilisent etcdctlpour automatiser la prise d'instantanés ou l'utilisation de la sauvegarde des volumes de stockage Amazon EBS.