Jack Wallen le guía a través del proceso de despliegue de un contenedor NGINX en un cluster de Kubernetes.

    Kubernetes es uno de los métodos más poderosos de despliegue de clusters para la gestión y despliegue de contenedores. NGINX es uno de los servidores web más populares del planeta, y también una de las mejores maneras de ilustrar cómo desplegar un contenedor. Combine los dos y podrá disfrutar de un servidor web altamente escalable, listo para ayudar a que su negocio crezca.

    Pero, ¿cómo se despliega el contenedor NGINX en un clúster de Kubernetes? Te lo voy a mostrar. Una advertencia, estoy usando un servidor en nube de Antsle, lo que hace que el despliegue de la plataforma de Kubernetes sea increíblemente sencillo. El sistema operativo que alberga Kubernetes es Ubuntu Server 16.04. Asumiré que ya tienes a Kubernetes en marcha. Para aquellos que no tienen un Antsle, y necesitan instalar primero Kubernetes, vea cómo hacerlo aquí. Para esta demostración, me desplegaré en tres máquinas virtuales:

    • kubernetes en 192.168.1.190
    • kubernetes2 en 192.168.1.191
    • kubernetes3 en 192.168.1.192

    La máquina con el nombre de host kubernetes servirá como mi maestro, mientras que kubernetes2/3 servirá como nodos.

    Con eso fuera del camino, vamos a desplegarnos.

    Configuración de nombres de host

    Lo primero que tenemos que hacer es mapear los nombres de host en cada máquina. Así que para cada máquina, emitiremos el comando sudo nano /etc/hosts y asignaremos la dirección IP de la otra máquina al nombre del host. Así que en kubernetes, las adiciones de mis anfitriones serán:

    192.168.1.191 kubernetes2192.168.1.192 kubernetes3

    En kubernetes2, las adiciones serán:

    192.168.1.190 kubernetes192.168.1.192 kubernetes3

    En kubernetes3, las adiciones serán:

    192.168.1.190 kubernetes192.168.1.191 kubernetes2

    Una vez que haya hecho las adiciones, guarde y cierre el archivo. Asegúrese de que puede hacer ping a cada servidor, a través del nombre de host.

    Inicializar el nodo maestro

    Con todo en su sitio, es hora de inicializar el nodo maestro. Inicie sesión en kubernetes (mi nodo maestro) y emita el comando:

    sudo kubeadm init --pod-network-cidr=192.168.1.0/16 --apiserver-advertise-address=192.168.1.190

    Este comando puede tardar uno o dos minutos en completarse, ya que es posible que haya que extraer las imágenes necesarias. Una vez que se complete, debería ver una salida similar mostrada en la .

    Con la salida se incluye el token y el token de descubrimiento. Asegúrese de copiarlos (o simplemente copie todo el comando join), ya que necesitará esa información para unir los nodos al clúster.

    El siguiente paso se describe claramente en la salida del comando de inicialización. Efectivamente, debe emitir los siguientes comandos:

    mkdir -p ~/.kubesudo cp -i /etc/kubernetes/admin.conf ~/.kube/configsudo chown $(id -u):$(id -g) ~/.kube/config

    Una vez que haya emitido los comandos anteriores, compruebe el estado de los nodos (sólo habrá uno en este punto), con el comando:

    kubectl get nodos

    Debería ver el nodo maestro listado .

    La razón por la que nuestro Nodo Maestro está listado como no listo es porque aún no tiene una Interfaz de Red de Contenedores (CNI. Despleguemos un CNI de Calico para el maestro con el comando:

    sudo kubectl apply -f https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml

    Asegurémonos de que Calico fue desplegado correctamente con el comando kubectl get pods -all-namespaces.

    La salida del comando anterior ) debería mostrar Calico funcionando.

    Ejecute kubectl get nodes de nuevo, y debería ver que el Nodo Maestro está ahora listado como Listo.

    Adición de nodos al clúster

    A continuación nos dirigimos a nuestros nodos para añadirlos al cluster. ¿Recuerda el comando join en la salida del comando de inicialización del Nodo Maestro? Dirígete a kubernetes2 y emite ese comando, que tendrá un aspecto parecido a este:

    sudo kubeadm join --token 6779e1.164c5515cf412fdf 192.168.1.190:6443 --discovery-token-ca-cert-hash sha256:c3e413050e40675280bbf8e37a99c53a1481f82d714469b51b77ed17b38015de

    Una vez que el comando se complete, haga lo mismo con kubernetes3. Después de haber emitido el comando join en sus nodos, vuelva al Nodo Maestro y emita el comando kubectl get nodes y debería ver todos los nodos listos .

    Desplegar el contenedor NGINX en el cluster

    Ahora es el momento de desplegar el contenedor NGINX. Desde el nodo maestro, emita el comando:

    sudo kubectl crear despliegue nginx --image=nginx

    A continuación ponemos el contenedor NGINX a disposición de la red con el comando:

    sudo kubectl crear servicio nodeport nginx --tcp=80:80

    Emita el comando kubectl get svc para ver su listado de NGINX (así como el puerto asignado, dado por Kubernetes – )

    Probemos esto con el comando:

    curl kubernetes3:30655

    NOTA: El puerto 30655 fue asignado durante el comando create service. Será único para su despliegue.

    La salida del comando curl debería mostrar el HTML de la página index.html de NGINX. Si ve eso, felicitaciones, su contenedor NGINX ha sido desplegado en su grupo de Kubernetes. Si apunta un navegador web a http://IP_OF_NODE:ASSIGNED_PORT (donde IP_OF_NODE es una dirección IP de uno de sus nodos y ASSIGNED_PORT es el puerto asignado durante el comando crear servicio), debería ver la página de bienvenida de NGINX.

    Despliegue básico

    Lo que hemos hecho es un despliegue muy básico de NGINX en un cluster. Hay mucho más que aprender sobre el uso de Kubernetes. Esto, sin embargo, le dará un buen comienzo y le ayudará a desplegar NGINX en su clúster de Kubernetes.

    Boletín de noticias de Data Center Trends

    DevOps, virtualización, la nube híbrida, el almacenamiento y la eficiencia operativa son sólo algunos de los temas del centro de datos que destacaremos. Entregado Lunes y Miércoles

    mismo

    Vea también