Kubernetes es un marco de orquestación de contenedores de código abierto que fue desarrollado originalmente por Google.
Entonces, ahora surge la pregunta, «¿qué es la orquestación de contenedores?».
La orquestación de contenedores es automatización. Puede facilitarle la implementación de la misma aplicación en diferentes entornos, como máquinas físicas, máquinas virtuales o entornos de nube, o quizás entornos de implementación híbridos, y facilita la administración, el escalado y la creación de redes de contenedores.
El nombre original de Kubernetes (proviene del griego) dentro de Google era Proyecto 7. En el año 2014, Kubernetes se lanzó por primera vez y también se hizo de código abierto después de usarlo para ejecutar cargas de trabajo de producción a escala durante una década. Además, Kubernetes puro de código abierto es gratuito y se puede descargar desde su repositorio en GitHub.
Se pronuncia como «koo-burr-NET-eez». También se conoce como k8s (k – ocho caracteres – s), derivado al reemplazar las ocho letras con el dígito 8.
Características de Kubernetes
Las siguientes son las diversas funciones o características de Kubernetes:
- Programación de contenedores de múltiples hosts: realizada por Kube-scheduler, asigna contenedores, también conocidos como pods en Kubernetes, a los Nodes en tiempo de ejecución. Da cuenta de los recursos, la calidad del servicio y las políticas antes de la programación.
- Escalabilidad y disponibilidad: el maestro de Kubernetes a menudo se implementa durante una configuración de alta disponibilidad. Las implementaciones en varias regiones también están disponibles.
- Flexibilidad y modularización: Kubernetes incluye una arquitectura plug-and-play que te permite ampliarla cuando lo necesites. Hay complementos específicos de controladores de red, descubrimiento de servicios, tiempo de ejecución de contenedores, visualización y comando. Si hay tareas que debe realizar específicamente para su entorno, podrá crear un complemento que se adapte a sus necesidades.
- Registro: los nuevos Nodes trabajadores pueden registrarse con el Node principal de Kubernetes.
- Descubrimiento de servicios: el descubrimiento de servicios permite la detección automática de nuevos servicios y puntos finales a través de DNS o variables de entorno.
- Almacenamiento persistente: Es una característica muy solicitada cuando se trabaja con contenedores. Los pods pueden usar volúmenes persistentes para almacenar datos y, por lo tanto, los datos se retienen entre reinicios y bloqueos del pod.
- Mantenimiento: cuando se trata de actualizaciones y mantenimiento de Kubernetes, las funciones de Kubernetes siempre son compatibles con versiones anteriores. Todas las API están versionadas y al actualizar o ejecutar el mantenimiento en el host, cancelará la programación del host para que no se realicen implementaciones en él. Una vez que haya terminado, simplemente volverá a encender el host y programará implementaciones o trabajos.
- Registro y supervisión: en términos de registro y supervisión, la supervisión de aplicaciones o las comprobaciones de estado también están integradas, TCP, HTTP o las comprobaciones de estado exactas del contenedor están disponibles de forma inmediata. También hay verificaciones de estado para brindarle el estado de los Nodes y las fallas monitoreadas por el controlador de Nodes. El estado de Kubernetes también se puede monitorear a través de complementos como Metrics Server, cAdvisor y Prometheus. Y, por último, puede usar los marcos de registro integrados o, si lo desea, puede traer los suyos propios.
- Gestión de secretos: los datos confidenciales son un ciudadano de primera clase en Kubernetes. Secretos montados en volúmenes de datos o variables de entorno. También son específicos de un solo espacio de nombres, por lo que no se comparten entre todas las aplicaciones.
Arquitectura de Kubernetes
La arquitectura de Kubernetes incluye un Node maestro y uno o más Nodes trabajadores.
Comprender el Node maestro:
- Kube-apiserver: una interfaz del clúster que le permite interactuar con la API de Kubernetes y se conecta a la base de datos etcd.
- Kube-scheduler: programa pods en Nodes específicos compatibles con etiquetas, contaminaciones y tolerancias establecidas para pods
- etcd: una base de datos, almacena todos los datos del clúster que incluyen información de programación de trabajos, detalles de pod, información de etapa, etc.
- Kube – controlador – administrador: gestiona el estado actual del clúster
- nube – controlador – administrador: interactúa con el administrador de la nube externo
Diferentes complementos opcionales: DNS, Tablero, monitoreo de recursos a nivel de clúster, registro a nivel de clúster
Comprender el Node trabajador:
Sin embargo, no llegaríamos a ninguna parte sin Worker Nodes. Estos Worker Nodes son los Nodes donde operan sus aplicaciones. Los Worker Nodes se comunican con el Master Node. La comunicación con un Node de trabajo está a cargo del proceso de Kubelet.
- kubelet: pasa las requests al motor del contenedor para garantizar que los pods estén disponibles
- Kube-proxy: se ejecuta en todos los Nodes y usa iptables para proporcionar una interfaz para conectarse a los componentes de Kubernetes
- contenedor – tiempo de ejecución: cuidar el contenedor en ejecución
- agente de red: implementa una solución de red definida por software
Los contenedores de una aplicación están estrechamente acoplados en un Pod. Por definición, un Pod es la unidad más pequeña que se puede programar como implementación en Kubernetes. Una vez que los pods se han implementado y se están ejecutando, el proceso de Kubelet se comunica con los pods para verificar el estado y la salud y, por lo tanto, el proxy de Kube enruta cualquier paquete a los pods desde otros recursos que puedan querer comunicarse con ellos.
Instalación de Kubernetes:
En esta sección, aprenderemos cómo instalar Kubernetes en la plataforma Linux. Entonces, siga los pasos dados para instalar Kubernetes:
Paso 1: Primero que nada, tenemos que actualizar nuestro repositorio apt-get.
sudo apt-get update
Paso 2: Instale apt transport HTTPS. Esto se usa básicamente para hacer repositorios mientras HTTPS.
sudo apt-get install -y apt-transport-https
Paso 3: Instale la dependencia de la ventana acoplable
sudo apt install docker.io
Paso 4: después de instalar la ventana acoplable, debemos iniciar y habilitar la ventana acoplable.
sudo systemctl start docker sudo systemctl enable docker
Paso 5: Tenemos que instalar los componentes necesarios para Kubernetes. Antes de eso, tenemos que instalar el comando curl porque el comando curl se usa para enviar los datos usando la sintaxis de URL. Instalemos el comando curl por:
sudo apt-get install curl
Paso 6: Descargue una clave adicional para la instalación de Kubernetes desde una URL.
sudo curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
Paso 7: Tenemos que agregar un repositorio en una ubicación determinada.
echo “deb https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
Paso 8: Ahora verifique si hay actualizaciones disponibles.
sudo apt-get update
Paso 9: Ahora vamos a instalar los componentes de Kubernetes.
sudo apt-get install -y kubectl kubeadm kubelet kubernetes-cni docker.io
Paso 10: Tenemos que inicializar el Node maestro y para hacer esto primero tenemos que usar un comando de intercambio para deshabilitar el intercambio en otros dispositivos.
sudo swapoff -a
Paso 11: Adelante con la inicialización.
sudo kubeadm init
Paso 12: para comenzar a usar su clúster, debe ejecutar lo siguiente como usuario normal:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
Paso 13: para implementar rutas, use el siguiente comando:
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml
Paso 14: Para ver todos los pods que tienes, usa el comando:
sudo kubectl get pods --all-namespaces
Ventajas:
- El uso de Kubernetes y su enorme ecosistema puede mejorar su productividad.
- Es una solución a prueba de futuro.
- Ayuda a que su aplicación se ejecute de manera más estable.
Contras
- Puede ser excesivo para aplicaciones simples.
- Es muy complejo y puede reducir la productividad.
- Puede ser más caro que sus alternativas.
Publicación traducida automáticamente
Artículo escrito por mehabhalodiya y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA