¿Qué es Kubernetes??
Kubernetes o K8S es una plataforma gratuita de código abierto para administrar entornos y servicios de aplicaciones contenedores. Kubernetes le permite crear aplicaciones contenedores portátiles y altamente extensibles que son fáciles de implementar y administrar. Se usa comúnmente junto con Docker para desarrollar un mejor control de aplicaciones y servicios en contenedores.
Características de Kubernetes
Las siguientes son las características esenciales ofrecidas por Kubernetes:
Arquitectura de Kubernetes
Comprender la arquitectura de Kubernetes lo ayudará a obtener un conocimiento más profundo de cómo trabajar con Kubernetes.
Los siguientes son componentes de hardware de la arquitectura de Kubernetes:
Un nodo es una representación de una sola máquina en un clúster de Kubernetes. El nodo representa una máquina de trabajadores individuales, ya sea en una máquina virtual o hardware físico.
Cada nodo en Kubernetes comprende varios componentes de software de Kubernetes, como PODS, Kubulet, Kube-Proxy y el tiempo de ejecución del contenedor, como Docker.
Una cápsula se refiere a una o más aplicaciones contenedores agrupadas. Kubernetes administra las cápsulas respectivas en lugar de los contenedores y crea réplicas si una de ellas falla. Los POD proporcionan recursos compartidos como interfaces de red y dispositivos de almacenamiento.
Contenedor/contenedor-runtime
Un contenedor es un paquete de software aislado y autónomo. Un contenedor contiene todo lo requerido para ejecutar una aplicación, que incluye el código, las bibliotecas del sistema y otras dependencias. Una vez que se implementa un contenedor, no puede cambiar el código ya que son inmutables. Por defecto, Docker proporciona tiempo de ejecución del contenedor de Kubernetes.
Kubelet
El kubelet es una aplicación simple que permite la comunicación entre el nodo y el nodo maestro. Es responsable de administrar las vainas y los contenedores. El nodo maestro utiliza el kubectl para realizar las acciones necesarias al nodo específico.
Kube-proxy
El Kube-Proxy es un proxy de red que está disponible en todos los nodos de Kubernetes. Administra las comunicaciones de red dentro y fuera del clúster.
Grupo
Un clúster es una colección de nodos Kubernetes que agregan sus recursos para crear una máquina poderosa. Los recursos compartidos por los nodos de Kubernetes incluyen memoria, CPU y discos.
Un clúster de Kubernetes está formado por un nodo maestro y otros nodos esclavos. El nodo maestro controla el clúster de Kubernetes, incluidas las aplicaciones de programación y escala, empuje y aplicando actualizaciones, y administrar los estados del clúster.
Volúmenes persistentes
Los volúmenes persistentes se utilizan para almacenar datos en un clúster de Kubernetes. Los volúmenes persistentes están hechos de varios volúmenes de los nodos del clúster. Una vez que se elimina o se agrega un nodo en el clúster, el nodo maestro distribuye el trabajo de manera eficiente.
Ingreso
La entrada de Kubernetes es un objeto API que permite el acceso al servicio Kubernetes fuera del clúster. Ingress generalmente utiliza el protocolo HTTP/HTTPS para exponer los servicios. Se implementa una entrada en un clúster utilizando un controlador de ingreso o un equilibrador de carga.
Maestro
El maestro, también conocido como plano de control, se refiere al componente de control central para la arquitectura de Kubernetes. Es responsable de gestionar la carga de trabajo e interfactar la comunicación entre el clúster y sus miembros.
El maestro se compone de varios componentes. Éstas incluyen:
Gerente de control
El administrador de control o el manager de Kube-Control es responsable de ejecutar y administrar el clúster. El Daemon de control recopila información sobre el clúster y los informa al servidor API.
Planificador
El Kube-Scheduler o simplemente el planificador es responsable de la distribución de la carga de trabajo. Realiza funciones como determinar si el clúster es saludable, la creación de contenedores y más.
Realiza un seguimiento de los recursos como la memoria y la CPU y las cápsulas de horarios a los nodos de cómputo apropiados.
Servidor API
El Kube-Apiserver es una interfaz front-end para el maestro de Kubernetes. Te permite hablar con el clúster Kubernetes. Una vez que el servidor API recibe una solicitud, determina si la solicitud es válida y la procesa si es verdadero.
Para interactuar con el servidor API, debe usar llamadas REST a través de las herramientas de control de la línea de comandos como Kubectl o Kubeadm.
Etcd
El ETCD es una base de datos de valor clave responsable de almacenar datos de configuración e información sobre el estado del clúster Kubernetes. Recibe comandos de otros componentes del clúster y realiza las acciones necesarias.
Ejecutando Kubernetes
Esta sección cubre cómo comenzar con Kubernetes. Esta ilustración se prueba en un sistema Debian.
Inicie el terminal y actualice su sistema.
actualización de sudo apt-get
actualización de sudo apt-get
A continuación, instale varios requisitos como se muestra en el comando a continuación:
sudo apt-get instalación curl gnupg ca certificados apt-transport-https
Instalar Docker
A continuación, necesitamos instalar Docker, ya que Kubernetes lo usará como tiempo de ejecución del contenedor. Las instrucciones a continuación son para el sistema operativo Debian. Aprenda a instalar Docker en su sistema.
Agregue la tecla GPG oficial de Docker:
curl -fssl https: // descargar.estibador.com/Linux/Debian/GPG | sudo
GPG--Dearmor -o/usr/share/keyrings/docker-archive-keyring.gpg
A continuación, configure los repositorios de Docker en las fuentes como se muestra en el comando:
eco \
"Deb [Arch = amd64 firmado-by =/usr/share/keyrings/docker-archive-keyring.gpg] https: // descargar.estibador.com/Linux/Debian \
$ (lsb_release -cs) estable "| sudo tee/etc/apt/fuentes.lista.D/Docker.Lista> /dev /null
A continuación, actualice e instale Docker:
sudo apt-get actualización && sudo apt-get install docker-centerd.IO Docker-CE-Cli
Finalmente, comience y habilite el servicio Docker
sudo systemctl habilitar Docker.servicio
sudo systemctl start docker.servicio
Instalar kubernetes
A continuación, necesitamos instalar Kubernetes en el sistema. Del mismo modo, las instrucciones en esta guía se prueban en un sistema Debian.
Aprenda a instalar Kubernetes en su sistema
Comience descargando la clave de firma de Google Cloud:
sudo curl -fsslo/usr/share/keyrings/kubernetes-archive-keyring.gpg https: // paquetes.nube.Google.com/apt/doc/apt-key.gpg
A continuación, agregue el repositorio de Kubernetes:
echo "Deb [firmado-by =/usr/share/keyrings/kubernetes-archive-keyring.gpg] https: // apt.Kubernetes.IO/Kubernetes-Xenial Main "| Sudo Tee/etc/apt/fuentes.lista.D/Kubernetes.lista
Finalmente, actualice e instale los componentes de Kubernetes
actualización de sudo apt-get
sudo apt-get install kubectl kubelet kubeadm kubernetes kubernetes-cni
Inicialiaze Kubernetes nodo maestro
El siguiente paso es iniciar el nodo maestro de Kubernetes. Antes de hacer esto, se recomienda apagar el intercambio.
Para hacer esto, use el comando:
sudo swapoff -a
Una vez que apague el intercambio, inicialice el nodo maestro con los comandos:
sudo kubeadm init
Una vez que el comando se ejecuta correctamente, debe obtener tres comandos.
Copiar y ejecutar los comandos como:
mkdir -p $ home/.Kube \
sudo cp -i/etc/kubernetes/admin.conf $ casa/.Kube/config \
sudo chown $ (id -u): $ (id -g) $ home/.Kube/config
Implementar la red de pod
El siguiente paso es implementar una red POD. En esta guía, utilizaremos el AWS VPC CNI para Kubernetes.
Use el comando como:
sudo kubectl aplicar -f https: // raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.8.0/config/v1.8/AWS-K8S-CNI.yaml
Al finalizar, asegúrese de que el clúster esté en funcionamiento ejecutando el comando:
sudo kubectl cluster-info
Sería mejor si obtuviera la salida como se muestra:
El plano de control de Kubernetes se ejecuta en https: // 192.168.43.29: 6443
Coredns se ejecuta en https: // 192.168.43.29: 6443/API/V1/Spaces/Kube-System/Services/Kube-DNS: DNS/Proxy
Para mostrar todos los nodos en ejecución, use el comando:
sudo kubectl obtiene nodos
Implementar una aplicación
Implementemos una aplicación MySQL y expongamos el servicio en el puerto 3306. Use el comando como se muestra:
sudo kubectl aplicar -f https: // k8s.IO/Ejemplos/Application/MySQL/MySQL-Deployment.yaml
sudo kubectl expone la implementación mysql --port = 3306 --name = mysql-server
Para mostrar la lista de implementaciones, use el comando:
Kubectl obtiene implementaciones
Para obtener información sobre las cápsulas, use el comando:
sudo kubectl describe vainas
Para resumir
Kubernetes es una herramienta robusta de implementación y gestión de contenedores. Este tutorial solo rasca la superficie de Kubernetes y sus capacidades.