Clúster de Kubernetes en AWS
¿Qué es un clúster de Kubernetes?
Un clúster de Kubernetes es un conjunto de nodos que ejecutan aplicaciones en contenedores. Las aplicaciones de contenedorización empaquetan una aplicación con sus dependencias y algunos servicios necesarios. Los clústeres de Kubernetes permiten que los contenedores se ejecuten en varias máquinas y entornos: virtuales, físicos, basados en la nube y locales.
Es de arquitectura maestro-trabajador.
—
¡Una nota valiosa al final!
Nodo maestro
Los componentes maestros administran el estado del clúster. Esto incluye aceptar solicitudes de clientes (describir el estado deseado), programar contenedores y ejecutar bucles de control para impulsar el estado actual del clúster hacia el estado deseado.
Nodo esclavo
Un nodo trabajador es un servidor virtual o físico que ejecuta las aplicaciones y está controlado por el nodo maestro. Los pods se programan en los nodos trabajadores, que cuentan con las herramientas necesarias para ejecutarlos y conectarlos. Las vainas no son más que una colección de contenedores.
¿Cómo podemos configurar un clúster en AWS?
Primero, lance 2 instancias EC2 en la consola de AWS.
Consulte este blog (en inglés) para saber cómo lanzar una instancia:
Configuración del nodo maestro:
yum install docker -y
#only for Linux ami2systemctl enable docker — now
- kubeadm configuration only for Linux ami2
vi /etc/yum.repos.d/kubernetes.repo
[kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kubelet kubeadm kubectl
4. Ahora puedes instalar Kublet
yum install -y kubelet kubeadm kubectl — disableexcludes=kubernetes
5. systemctl enable kubelet — now
6. kubeadm config images pull
7. vi /etc/docker/daemon.json
Enter this in the above file
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
8. systemctl restart docker
9. yum install iproute-tc
10. Ejecute este comando para configurar ridge-nf-call-iptables = 1
echo “1” > /proc/sys/net/bridge/bridge-nf-call-iptables
11. systemctl restart kubelet
12. systemctl enable kubelet
13. Iniciando el Master
kubeadm init — pod-network-cidr=10.244.0.0/16 — ignore-preflight-errors=NumCPU — ignore-preflight-errors=Mem
Guardaremos el token de unión del maestro y usaremos ese token en el esclavo para unirnos con el maestro.
14. mkdir -p $HOME/.kube
15. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
16. sudo chown $(id -u):$(id -g) $HOME/.kube/config
17. Ejecutar comando de Flannel
kubectl apply -f
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
18. Para comprobar si nuestro maestro está listo o no.
kubectl get nodes
¡Felicidades! Puede iniciar correctamente el nodo principal de Kubernetes.
Configuración del nodo trabajador:
yum install docker -y
#only for Linux ami2systemctl enable docker — now
- kubeadm configuration only for Linux ami2
vi /etc/yum.repos.d/kubernetes.repo
Escriba esto en el archivo de arriba:
[kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kubelet kubeadm kubectl
4. Ahora puedes instalar kublet
yum install -y kubelet kubeadm kubectl — disableexcludes=kubernetes
5. systemctl enable kubelet — now
6. kubeadm config images pull
7. vi /etc/docker/daemon.json
Ingrese esto en el archivo de arriba
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
8. systemctl restart docker
9. yum install iproute-tc
10. Ejecute este comando para configurar ridge-nf-call-iptables = 1
echo “1” > /proc/sys/net/bridge/bridge-nf-call-iptables
11. Ahora ejecute el token que copiamos del nodo maestro.
¡Viva! Ahora nuestro nodo trabajador también está conectado al nodo maestro.
Puede verificarlo ejecutando kubectl get nodos en el nodo maestro para ver si ambos nodos están listos.
Nota valiosa:
No ejecute este clúster en t2.micro ya que habrá un problema con Ram. Sugiero usar t2.medium para la instancia EC2.