Cómo crear un clúster de Kubernetes con Kops
En este artículo usaremos kops para instalar el clúster de Kubernetes de grado de producción en Amazon Web Services. Para esta guía, asumimos que tiene una cuenta de AWS. También necesita kubectl instalado, probablemente ya lo tenga si siguió cualquiera de nuestros artículos anteriores de Kubernetes. De lo contrario, proporcionaremos el paso de instalación aquí junto con otras dependencias como awscli.
Instalación de binarios kubectl, kops y awscli
Comencemos el juego obteniendo el kubectl
curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl sudo mv kubectl /usr/local/bin/
A continuación obtendremos kops binary
wget https://github.com/kubernetes/kops/releases/download/1.7.0/kops-linux-amd64 chmod +x kops-linux-amd64 sudo mv kops-linux-amd64 /usr/local/bin/kops
A continuación, necesitamos usar pip, el administrador de paquetes de Python para instalar awscli. Obviamente, necesitas tener instalado Python.
sudo pip install awscli
Configuración de awscli
Debe tener las claves de acceso de su cuenta de AWS para poder utilizar awscli. Puede consultar cómo crear claves de acceso raíz de AWS documentación.
Una vez que lo hagas, podemos pasar a la parte de configuración.
aws configure
Luego trabaje el mensaje de la siguiente manera
AWS Access Key ID [None]: youraccesskeyID AWS Secret Access Key [None]: yourSecretAccessKey Default region name [None]: us-west-2 Default output format [None]:
Más adelante, también necesitaremos esas claves, por lo que debe enviarlas a las variables env.
export AWS_ACCESS_KEY_ID=youraccesskeyID export AWS_SECRET_ACCESS_KEY=yourSecretAccessKey
También puede agregar esas líneas a ~ / .bashrc y ejecutar el comando source ~ / .bashrc para que permanezca en los reinicios. Pero tenga en cuenta que todos los que usen su computadora pueden obtener esas claves.
A continuación, creemos kops de grupo y usuario y otorguemos los permisos necesarios para que los kops puedan funcionar sin contratiempos.
aws iam create-group --group-name kops aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess --group-name kops aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonRoute53FullAccess --group-name kops aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess --group-name kops aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/IAMFullAccess --group-name kops aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonVPCFullAccess --group-name kops aws iam create-user --user-name kops aws iam add-user-to-group --user-name kops --group-name kops
Y por fin creamos clave de acceso para el usuario de kops
aws iam create-access-key --user-name kops
Siempre puede verificar los usuarios de IAM con el siguiente comando
aws iam list-users
Creando el clúster
Para la creación de clústeres, necesitamos agregar más variables env. NAME será el nombre del clúster, ya que no haremos configuraciones de DNS, usaremos DNS basado en chismes y para ese clúster el nombre debe terminar con k8s.local y antes de eso puede poner casi cualquier cosa.
export NAME=cluster.k8s.local
A continuación, debemos crear un depósito de AWS para el clúster y crear una variable que utilizará kops para la tienda estatal.
aws s3api create-bucket --bucket ${NAME}-state export KOPS_STATE_STORE=s3://cluster.k8s.local-state
A continuación, crearemos un clúster. Usaremos instancias t2.micro porque son elegibles para el nivel gratuito, y si se registró en el nivel gratuito (como yo), puede aprobar sin costo. De lo contrario, AWS le costará algo de dinero.
kops create cluster --name=${NAME} --zones=us-west-2a --master-size="t2.micro" --node-size="t2.micro" --node-count="3" --ssh-public-key="~/.ssh/id_rsa.pub"
Después de esto, obtendrá los archivos de configuración para el nuevo clúster.
Puede editarlo con este comando. Utilizará su editor predeterminado, que puede cambiar cambiando la variable $ EDITOR.
kops edit cluster ${NAME}
Después de revisar el archivo yaml, puede comprometerse a crear el clúster con este comando:
kops update cluster ${NAME} --yes
Después de esto, te espera un poco
El siguiente comando puede mostrarle cuándo el clúster está listo.
kops validate cluster
Probablemente tendrá que hacerlo varias veces hasta que se inicialicen los nodos. Así es como se ve mi clúster cuando está listo.
Implementar algunas aplicaciones
Para empezar, podemos instalar el tablero.
kubectl create -f https://git.io/kube-dashboard
Podemos usar el tablero con el siguiente comando:
kubectl proxy
A continuación, instalaremos la demostración de microservicios de la vieja tienda de calcetines.
kubectl apply -n sock-shop -f "https://github.com/microservices-demo/microservices-demo/blob/master/deploy/kubernetes/complete-demo.yaml?raw=true" kubectl -n sock-shop get svc front-end
Obtendrás algo similar a esto
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE front-end 100.66.88.111 <nodes> 80:30001/TCP 35m
Lo que buscamos es el puerto 30001 en este caso. Necesitamos hacer coincidir este puerto con la IP del servidor maestro. Es necesario para permitir el tráfico entrante a este puerto en los grupos de seguridad de AWS.
A continuación, cuando formamos la URL de ip y port, deberíamos obtener el sitio de sock-shop.
Cuando haya terminado de usar el clúster, puede obtener una vista previa de su eliminación con este comando:
kops delete cluster --name ${NAME}
Y de hecho elimínelo con este:
kops delete cluster --name ${NAME} --yes
No voy a eliminarlo todavía porque usaremos kube-prompt en este clúster en el próximo artículo. Con esto, terminamos este artículo después de la creación exitosa de un clúster de kubernetes de grado de producción con Kops. Kops son las siglas de Kubernetes Operations y seguro que facilita las operaciones, siempre que esté implementando en AWS. Si necesita Google Cloud Engine, Bare Metal o OpenStack Cloud privado, entonces Kubespray basado en Ansible es algo para usted y lo presentaremos en algunos de los próximos artículos.
Leer también: