Référence d'image: https://unsplash.com/photos/lCGfT4xYaEc

Comment créer un cluster Kubernetes sur AWS en quelques minutes

Installation de Kubernetes sur AWS

Amazon Web Services (AWS) a récemment introduit un service Kubernetes géré appelé EKS. Néanmoins, il est toujours en mode de prévisualisation. Par conséquent, Kubernetes peut actuellement être installé sur AWS, comme expliqué dans la documentation de Kubernetes, en utilisant conjure-up, Kubernetes Operations (kops), CoreOS Tectonic ou kube-aws. Parmi ces options, j’ai trouvé que kops était extrêmement facile à utiliser et qu’il était bien conçu pour personnaliser l’installation, exécuter les mises à niveau et gérer les clusters Kubernetes au fil du temps. Dans cet article, je vais expliquer comment utiliser l'outil Kubernetes Operations pour installer un cluster Kubernetes sur AWS en quelques minutes.

Étapes à suivre

  1. Nous avons d’abord besoin d’un compte AWS et de clés d’accès. Connectez-vous à votre console AWS et générez des clés d'accès pour votre utilisateur en accédant à la page Utilisateurs / Informations d'identification de sécurité.

2. Installez AWS CLI en suivant son guide d'installation officiel:

# OSX utilisant Homebrew
brasser installer awscli
# Linux
pip installer awscli --upgrade --user
Version de awscli: 1.6.5

3. Installez kops en suivant son guide d’installation officiel:

# OSX utilisant Homebrew
brasser installer kops
# Linux
curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4) / kops-linux-amd64
chmod + x kops-linux-amd64
sudo mv kops-linux-amd64 / usr / local / bin / kops
# kops version: 1.9.0

4. Créez un nouvel utilisateur IAM ou utilisez un utilisateur IAM existant et accordez les autorisations suivantes:

AmazonEC2FullAccess
AmazonRoute53FullAccess
AmazonS3FullAccess
AmazonVPCFullAccess

5. Configurez l'AWS CLI en fournissant la clé d'accès, la clé d'accès secrète et la région AWS sur laquelle vous souhaitez installer le cluster Kubernetes:

aws configurer
AWS Access Key ID [Aucun]: AccessKeyValue
Clé d'accès secrète AWS [Aucune]: SecretAccessKeyValue
Nom de région par défaut [Aucun]: us-east-1
Format de sortie par défaut [Aucun]:

6. Créez un compartiment AWS S3 pour que kops conserve son état:

bucket_name = imesh-kops-state-store
aws s3api create-bucket \
--bucket $ {bucket_name} \
--region us-east-1

7. Activez le contrôle de version pour le compartiment S3 ci-dessus:

aws s3api put-bucket-versioning --bucket $ {nom-bucket} --versioning-configuration Status = Activé

8. Attribuez un nom au cluster Kubernetes et définissez l'URL du compartiment S3 dans les variables d'environnement suivantes:

export KOPS_CLUSTER_NAME = imesh.k8s.local
exportation KOPS_STATE_STORE = s3: // $ {nom de compartiment}

Le bloc de code Ajouter ci-dessus peut être ajouté au fichier ~ / .bash_profile ou ~ / .profile en fonction du système d'exploitation pour les rendre disponibles sur tous les environnements de terminaux.

9. Créez une définition de cluster Kubernetes à l'aide de kops en fournissant le nombre de nœuds requis, la taille du nœud et les zones AWS. La taille du nœud ou plutôt le type d'instance EC2 doit être déterminé en fonction de la charge de travail que vous prévoyez d'exécuter sur le cluster Kubernetes:

kops créer un cluster \
--node-count = 2 \
--node-size = t2.medium \
--zones = us-east-1a \
--name = $ {KOPS_CLUSTER_NAME}

Si vous rencontrez des problèmes d'authentification, essayez de définir les variables d'environnement suivantes pour permettre à kops de lire directement les informations d'identification EC2 sans utiliser l'AWS CLI:

export AWS_ACCESS_KEY = AccessKeyValue
export AWS_SECRET_KEY = SecretAccessKeyValue

Si nécessaire, exécutez la commande d’aide de kops create cluster pour rechercher des paramètres supplémentaires:

kops crée un cluster --help

10. Vérifiez la définition du cluster Kubernetes en exécutant la commande ci-dessous:

kops edit cluster --nom $ {KOPS_CLUSTER_NAME}

11. Créons maintenant le cluster Kubernetes sur AWS en exécutant la commande kops update:

cluster de mise à jour kops --name $ {KOPS_CLUSTER_NAME} --yes

12. La commande ci-dessus peut prendre un certain temps pour créer les ressources d'infrastructure requises sur AWS. Exécutez la commande validate pour vérifier son statut et attendez que le cluster soit prêt:

kops valide le cluster
Utilisation du cluster à partir du contexte kubectl: imesh.k8s.local
Validation du cluster imesh.k8s.local
GROUPES D'INSTANCE
NOM RÔLE MACHINETYPE MIN MAX SUBNETS
master-us-east-1a Master m3.medium 1 1 us-east-1a
noeuds Noeud m4.xlarge 2 2 us-east-1a
NODE STATUS
NOM ROLE READY
ip-172-20-48-50.ec2.internal node True
ip-172-20-50-191.ec2.internal node True
ip-172-20-55-27.ec2.internal master True
Votre cluster imesh.k8s.local est prêt

Une fois le processus ci-dessus terminé, kops configure l'interface de ligne de commande Kubernetes (kubectl) avec le point de terminaison de l'API de cluster Kubernetes et les informations d'identification de l'utilisateur.

13. Maintenant, vous devrez peut-être déployer le tableau de bord Kubernetes pour accéder au cluster via son interface utilisateur Web:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

14. Exécutez la commande ci-dessous pour trouver le mot de passe de l’administrateur:

les kops ont des secrets kube --type secret -oplaintext

15. Exécutez la commande ci-dessous pour trouver le nom d’hôte principal de Kubernetes:

kubectl cluster-info
Le maître Kubernetes est exécuté à l'adresse https: // api-imesh-k8s-local-  .us-east-1.elb.amazonaws.com
KubeDNS est exécuté à l'adresse https: // api-imesh-k8s-local-  .us-east-1.elb.amazonaws.com / api / v1 / namespaces / kube-system / services / kube-dns: DNS / proxy

16. Accédez au tableau de bord Kubernetes en utilisant l’URL suivante:

https: //  / ui

Indiquez le nom d'utilisateur en tant qu'administrateur et le mot de passe obtenu ci-dessus à l'étape 14 de la page de connexion du navigateur:

Exécutez la commande ci-dessous pour trouver le jeton du compte de service admin. Notez que le nom secret utilisé ici est différent du précédent:

kops obtenir des secrets admin --type secret -oplaintext

Indiquez le jeton de compte de service ci-dessus sur la page de demande de jeton de service:

Références:

[1] Solutions cloud clés en main Kubernetes, documentation Kubernetes: https://kubernetes.io/docs/getting-started-guides/aws/

[2] Documentation de Kubernetes Operations: https://github.com/kubernetes/kops/tree/master/docs

[3] Service Kubernetes AWS géré: https://aws.amazon.com/eks/

[4] Types d'instance AWS: https://aws.amazon.com/ec2/instance-types/