LINUX

Eksctl: una herramienta CLI para crear clústeres de Kubernetes en Amazon EKS

Eksctl Crear clúster de Kubernetes

En esta publicación de blog, veremos cómo usar eksctl para crear clústeres de Kubernetes en EKS. eksctl es una herramienta de línea de comandos escrita en Go by tejidos y basado en las plantillas oficiales de CloudFormation de Amazon.

Para los nuevos en EKS, es un servicio administrado por AWS que facilita la implementación, escala y administración de aplicaciones en contenedores que se ejecutan en Kubernetes. Todos los clústeres se implementan en EC2.

Cómo instalar eksctl en Linux

Dado que eksctl está escrito en Go, se distribuye como un paquete binario sin dependencia. Puede descargar manualmente el paquete desde la página Versiones o extraer la última versión con wget o curl mando.

En nuestro ejemplo, usaremos wget, así que asegúrese de que esté instalado antes de continuar.

curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp

Esto descargará eksctl tar y extraerlo a / tmp directorio.

Antes de poder usar el binario, debe mover el archivo a un directorio en su $PATH Variable ambiental.

$ sudo mv /tmp/eksctl /usr/local/bin

Para los usuarios de macOS, también puede instalar la herramienta eksctl desde Homebrew:

$ brew install weaveworks/tap/eksctl

Verifique la versión usando:

$ eksctl version
2018-07-25T11:52:18+03:00 [ℹ] versionInfo = map[string]string{"builtAt":"2018-07-23T07:21:37Z", "gitCommit":"c332060348833792c9a69f1ef71d1c8d76c3ffd7", "gitTag":"0.1.0-beta.3"}

Configurar las credenciales de la API de AWS

Una vez que haya instalado eksctl, necesitará las credenciales de la API de AWS para conectarse al servicio EKS. La forma más sencilla de configurar estas credenciales es mediante.awsclique se instala usando pip.

Instalar pip:

$ sudo apt-get install python-pip # For Ubuntu/Debian
$ sudo yum install python-pip # For CentOS
$ sudo pacman -S python-pip # For Arch Linux / Manjaro

Ahora puede instalar un awscli paquete usando pip:

$ sudo pip install awscli

Una vez instalado, inicie la configuración ejecutando:

$ aws configure
AWS Access Key ID [****************JO6B]: 
AWS Secret Access Key [****************78cd]: 
Default region name [us-west-2]: 
Default output format [json]:

Debes proveer AWS Access Key ID y AWS Secret Access Key para que la cuenta de usuario de AWS IAM se utilice al implementar el clúster de Kubernetes en EKS. Las credenciales estarán ubicadas en ~/.aws/credentials expediente.

Cree un clúster en Amazon EKS con eksctl

Cuando se hayan guardado todas las configuraciones, ahora puede crear un nuevo clúster en EKS:

$ eksctl create cluster

Las opciones que se pueden utilizar incluyen:

-n, --name string : To specify EKS cluster name
-N, --nodes int: Total number of nodes, default is 2
-r, --region string:  AWS region (default "us-west-2")
-M, --nodes-max int:  Maximum nodes in ASG
-t, --node-type string: node instance type (default "m5.large")
-m, --nodes-min int:  Minimum nodes in ASG
--kubeconfig: String path to write kubeconfig. Default is ~.kube/config --ssh-public-key string: SSH public key to use for nodes: (default "~/.ssh/id_rsa.pub")

Para obtener una lista de más opciones, ejecute:

$ eksctl --help

Para poner esto en perspectiva, usemos algunas de las opciones para crear nuestro clúster:

$ eksctl create cluster -n test-cluster -N 2 
2018-07-25T17:16:36+03:00 [ℹ] setting availability zones to [us-west-2b us-west-2a us-west-2c]
2018-07-25T17:16:36+03:00 [ℹ] importing SSH public key "/home/jmutai/.ssh/id_rsa.pub" as "eksctl-test-cluster-9d:54:75:7b:4e:e0:d0:b5:76:f2:77:69:f8:aa:0c:c6"
2018-07-25T17:16:38+03:00 [ℹ] creating EKS cluster "test-cluster" in "us-west-2" region
2018-07-25T17:16:38+03:00 [ℹ] creating VPC stack "EKS-test-cluster-VPC"
2018-07-25T17:16:38+03:00 [ℹ] creating ServiceRole stack "EKS-test-cluster-ServiceRole"
2018-07-25T17:17:06+03:00 [✔] created ServiceRole stack "EKS-test-cluster-ServiceRole"
2018-07-25T17:18:13+03:00 [✔] created VPC stack "EKS-test-cluster-VPC"
2018-07-25T17:18:13+03:00 [ℹ] creating control plane "test-cluster"
2018-07-25T17:28:48+03:00 [✔] created control plane "test-cluster"
2018-07-25T17:28:48+03:00 [ℹ] creating DefaultNodeGroup stack "EKS-test-cluster-DefaultNodeGroup"
2018-07-25T17:49:26+03:00 [✔] created DefaultNodeGroup stack "EKS-test-cluster-DefaultNodeGroup"
2018-07-25T17:49:26+03:00 [✔] all EKS cluster "test-cluster" resources has been created
2018-07-25T17:49:26+03:00 [✔] saved kubeconfig as "/home/jmutai/.kube/config"
2018-07-25T17:49:35+03:00 [ℹ] the cluster has 1 nodes
2018-07-25T17:49:35+03:00 [ℹ] node "ip-192-168-113-37.us-west-2.compute.internal" is not ready
2018-07-25T17:49:35+03:00 [ℹ] waiting for at least 2 nodes to become ready
2018-07-25T17:49:58+03:00 [ℹ] the cluster has 2 nodes
2018-07-25T17:49:58+03:00 [ℹ] node "ip-192-168-113-37.us-west-2.compute.internal" is ready
2018-07-25T17:49:58+03:00 [ℹ] node "ip-192-168-145-33.us-west-2.compute.internal" is ready
2018-07-25T17:49:58+03:00 [✖] heptio-authenticator-aws not installed
2018-07-25T17:49:58+03:00 [ℹ] cluster should be functional despite missing (or misconfigured) client binaries
2018-07-25T17:49:58+03:00 [✔] EKS cluster "test-cluster" in "us-west-2" region is ready

Una vez que haya creado un clúster, las credenciales del clúster se agregarán en ~/.kube/config

Para usar un xy nodo Auto Scaling Group, use las opciones:

--nodes-min=x --nodes-max=y
e.g
--nodes-min=2 --nodes-max=5 # Autoscaling btw 2-5

Para obtener detalles sobre el clúster implementado, use:

$ eksctl get cluster -n test-cluster
2018-07-25T22:16:02+03:00 [ℹ] cluster = {
Arn: "arn:aws:eks:us-west-2:721943413499:cluster/test-cluster",
CertificateAuthority: {
...
},
CreatedAt: 2018-07-25 14:18:15 +0000 UTC,
Endpoint: "https://ID.yl4.us-west-2.eks.amazonaws.com",
Name: "test-cluster",
ResourcesVpcConfig: {
SecurityGroupIds: ["sg-48287686"],
SubnetIds: ["subnet-4077678b","subnet-55eda03a","subnet-38704e6d"],
VpcId: "vpc-0e6a8c66"
},
RoleArn: "arn:aws:iam::721945983479:role/EKS-test-cluster-ServiceR-AWSServiceRoleForAmazonE-10L09YV7UZQN9",
Status: "ACTIVE",
Version: "1.10"
}

To delete a cluster, run:
$ eksctl delete cluster --name=<name> [--region=<region>]

Ejemplo:

$ eksctl delete cluster -n test-cluster
2018-07-25T22:44:59+03:00 [ℹ] deleting EKS cluster "test-cluster"
2018-07-25T22:45:06+03:00 [!] as you are not using the auto-generated kubeconfig file you will need to remove the details of cluster test-cluster manually
2018-07-25T22:45:06+03:00 [✔] all EKS cluster "test-cluster" resource will be deleted (if in doubt, check CloudFormation console)

Lea también:

La implementación de Kubernetes en el servicio AWS EKS con eksctl es un proceso fácil de seguir que no necesita que tenga problemas con una interfaz de usuario y es fácil de rehacer. Todas las configuraciones del clúster se guardan en la máquina de implementación, puede realizar cambios rápidamente y actualizar su clúster.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar