Referencia de imagen: https://unsplash.com/photos/lCGfT4xYaEc

Cómo crear un clúster de Kubernetes en AWS en pocos minutos

Instalación de Kubernetes en AWS

Amazon Web Services (AWS) introdujo recientemente un servicio administrado de Kubernetes llamado EKS. Sin embargo, todavía está en modo de vista previa. Por lo tanto, en este momento Kubernetes se puede instalar en AWS como se explica en la documentación de Kubernetes, ya sea usando conjure-up, Kubernetes Operations (kops), CoreOS Tectonic o kube-aws. De esas opciones, encontré que Kops era extremadamente más fácil de usar y está muy bien diseñado para personalizar la instalación, ejecutar actualizaciones y administrar los clústeres de Kubernetes con el tiempo. En este artículo explicaré cómo usar la herramienta de operaciones de Kubernetes para instalar un clúster de Kubernetes en AWS en pocos minutos.

Pasos a seguir

  1. Primero necesitamos una cuenta de AWS y claves de acceso para comenzar. Inicie sesión en su consola de AWS y genere claves de acceso para su usuario navegando a la página Credenciales de usuarios / seguridad.

2. Instale AWS CLI siguiendo su guía de instalación oficial:

# OSX usando Homebrew
instalar brew awscli
# Linux
pip install awscli --upgrade --user
# awscli versión: 1.6.5

3. Instale kops siguiendo su guía de instalación oficial:

# OSX usando Homebrew
instalar cerveza 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
# versión kops: 1.9.0

4. Cree un nuevo usuario de IAM o use un usuario de IAM existente y otorgue los siguientes permisos:

AmazonEC2FullAccess
AmazonRoute53FullAccess
AmazonS3FullAccess
AmazonVPCFullAccess

5. Configure la AWS CLI proporcionando la clave de acceso, la clave de acceso secreta y la región de AWS en la que desea que se instale el clúster de Kubernetes:

aws configure
ID de clave de acceso de AWS [Ninguno]: AccessKeyValue
Clave de acceso secreta de AWS [Ninguna]: SecretAccessKeyValue
Nombre de región predeterminado [Ninguno]: us-east-1
Formato de salida predeterminado [Ninguno]:

6. Cree un depósito de AWS S3 para que kops conserve su estado:

nombre_de_bote = imesh-kops-state-store
aws s3api crear-cubo \
--bucket $ {bucket_name} \
--región us-east-1

7. Habilite el control de versiones para el bucket S3 anterior:

aws s3api put-bucket-versioning --bucket $ {bucket_name} --versioning-configuration Status = Enabled

8. Proporcione un nombre para el clúster de Kubernetes y configure la URL del bucket S3 en las siguientes variables de entorno:

exportar KOPS_CLUSTER_NAME = imesh.k8s.local
exportar KOPS_STATE_STORE = s3: // $ {bucket_name}

Agregar el bloque de código anterior se puede agregar al archivo ~ / .bash_profile o ~ / .profile dependiendo del sistema operativo para que estén disponibles en todos los entornos de terminal.

9. Cree una definición de clúster de Kubernetes utilizando kops proporcionando el recuento de nodos, el tamaño de nodo y las zonas de AWS requeridos. El tamaño del nodo o más bien el tipo de instancia EC2 necesitaría decidirse de acuerdo con la carga de trabajo que planea ejecutar en el clúster de Kubernetes:

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

Si observa algún problema de autenticación, intente configurar las siguientes variables de entorno para permitir que Kops lea directamente las credenciales de EC2 sin usar la CLI de AWS:

export AWS_ACCESS_KEY = AccessKeyValue
export AWS_SECRET_KEY = SecretAccessKeyValue

Si es necesario, ejecute el comando de ayuda kops create cluster para encontrar parámetros adicionales:

kops crea clúster --help

10. Revise la definición del clúster de Kubernetes ejecutando el siguiente comando:

kops edit cluster --name $ {KOPS_CLUSTER_NAME}

11. Ahora, creemos el clúster de Kubernetes en AWS ejecutando el comando kops update:

kops actualiza el clúster --name $ {KOPS_CLUSTER_NAME} --si

12. El comando anterior puede tardar un tiempo en crear los recursos de infraestructura necesarios en AWS. Ejecute el comando validar para verificar su estado y espere hasta que el clúster esté listo:

kops valida el clúster
Uso del clúster desde el contexto de kubectl: imesh.k8s.local
Validación del clúster imesh.k8s.local
GRUPOS DE INSTANCIA
NOMBRE PAPEL MÁQUINAS TIPO MIN MAX SUBRES
master-us-east-1a Master m3.medium 1 1 us-east-1a
nodos Nodo m4.xlarge 2 2 us-east-1a
ESTADO DEL NODO
NOMBRE PAPEL LISTO
ip-172-20-48-50.ec2.nodo interno Verdadero
ip-172-20-50-191.ec2.internal node True
ip-172-20-55-27.ec2. maestro interno Verdadero
Su clúster imesh.k8s.local está listo

Una vez que se complete el proceso anterior, kops configurará la CLI de Kubernetes (kubectl) con el punto final de la API del clúster de Kubernetes y las credenciales de usuario.

13. Ahora, es posible que deba implementar el panel de Kubernetes para acceder al clúster a través de su interfaz de usuario basada en la web:

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

14. Ejecute el siguiente comando para encontrar la contraseña del usuario administrador:

kops obtiene secretos kube --type secret -oplaintext

15. Ejecute el siguiente comando para encontrar el nombre de host maestro de Kubernetes:

kubectl cluster-info
El maestro de Kubernetes se ejecuta en https: // api-imesh-k8s-local-  .us-east-1.elb.amazonaws.com
KubeDNS se ejecuta en https: // api-imesh-k8s-local-  .us-east-1.elb.amazonaws.com / api / v1 / namespaces / kube-system / services / kube-dns: dns / proxy

16. Acceda al panel de Kubernetes utilizando la siguiente URL:

https: //  / ui

Proporcione el nombre de usuario como administrador y la contraseña obtenida anteriormente en el paso 14 en la página de inicio de sesión del navegador:

Ejecute el siguiente comando para encontrar el token de la cuenta del servicio de administración. Tenga en cuenta que el nombre secreto utilizado aquí es diferente del anterior:

kops obtiene secretos admin --type secret -oplaintext

Proporcione el token de cuenta de servicio anterior en la página de solicitud de token de servicio:

Referencias

[1] Soluciones en la nube llave en mano de Kubernetes, documentación de Kubernetes: https://kubernetes.io/docs/getting-started-guides/aws/

[2] Documentación de operaciones de Kubernetes: https://github.com/kubernetes/kops/tree/master/docs

[3] Servicio de Kubernetes administrado por AWS: https://aws.amazon.com/eks/

[4] Tipos de instancia de AWS: https://aws.amazon.com/ec2/instance-types/