Kubernetes es una plataforma de código abierto para administrar aplicaciones en contenedores. Le permite administrar, escalar e implementar automáticamente sus aplicaciones en contenedores en el entorno agrupado. Kubernetes es desarrollado por Google.
Con Kubernetes, puede orquestar contenedores en múltiples hosts, escalar las aplicaciones en contenedores con todos los recursos sobre la marcha y tener un entorno de administración de contenedores centralizado.
En este tutorial, le mostraré paso a paso cómo instalar y configurar Kubernetes en Ubuntu 18.04. Usaremos 1 servidor 'k8s-master' como Kubernetes Host Master y 2 servidores como trabajadores de Kubernetes, 'worker01' y 'worker02'.
Requisitos
- 3 servidores Ubuntu
- 10.0.15.10 k8s-maestro
- 10.0.15.21 trabajador01
- 10.0.15.22 trabajador02
- Privilegios de raíz
Lo que haremos
- Instalación de Kubeadm
- Configurar hosts
- Instalar Docker
- Desactivar SWAP
- Instalar paquetes de Kubeadm
- Inicialización del clúster de Kubernetes
- Agregar nodos trabajadores al clúster de Kubernetes
- Pruebas
Paso 1:instalación de Kubeadm
En este primer paso, prepararemos esos 3 servidores para la instalación de Kubernetes, así que ejecute todos los comandos en los nodos maestro y trabajador.
Prepararemos todos los servidores para la instalación de Kubernetes cambiando la configuración existente en los servidores y también instalando algunos paquetes, incluidos docker y kubernetes.
Instalación de hosts
Edite el archivo de hosts en todos los servidores usando el editor vim.
sudo vim /etc/hosts
Pegue la configuración de hosts a continuación.
10.0.15.10 k8s-master 10.0.15.21 worker01 10.0.15.22 worker02
Guardar y salir.
Ahora prueba hacer ping a todos los nombres de host de los servidores.
ping -c 3 k8s-master
ping -c 3 worker01
ping -c 3 worker02
Asegúrese de que todas las direcciones IP se resuelvan como un nombre de host.
Instalar Docker
En este tutorial, instalaremos Docker desde el repositorio de Ubuntu.
Instale Docker con el siguiente comando apt.
sudo apt install docker.io -y
Una vez completada la instalación, inicie el servicio Docker y habilítelo para que se inicie cada vez que se inicie el sistema.
sudo systemctl start docker
sudo systemctl enable docker
La instalación de Docker se ha completado.
Desactivar SWAP
Para configurar los servidores Linux de Kubernetes, debemos deshabilitar el SWAP.
Compruebe la lista de intercambio y desactívela.
sudo swapon -s
sudo swapoff -a
Para deshabilitar el SWAP permanentemente, necesitamos editar el archivo '/etc/fstab'.
sudo vim /etc/fstab
Haga un comentario sobre el tipo de partición SWAP.
#/dev/mapper/hakase--labs--vg-swap_1 none swap sw 0 0
Guarde y salga, luego reinicie el sistema.
sudo reboot
Instalar paquetes de Kubeadm
En este tutorial, utilizaremos paquetes de Kubeadm para configurar el clúster de Kubernetes. Instalaremos los paquetes de Kubeadm desde el repositorio oficial de Kubernetes.
Instale apt-transport-https.
sudo apt install -y apt-transport-https
Agregue la clave de Kubernetes.
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Y agregue el Repositorio de Kubernetes creando un nuevo archivo repo.list en el directorio '/etc/apt/sources.list.d'.
cd /etc/apt/
sudo vim sources.list.d/kubernetes.list
pegue el repositorio de kubernetes a continuación.
deb http://apt.kubernetes.io/ kubernetes-xenial main
Nota:
Seguimos usando el repositorio de Xenial Ubuntu 16.04 para nuestra instalación de Kubeadm.
Ahora actualice el repositorio e instale los paquetes kubeadm usando los comandos apt a continuación.
sudo apt update
sudo apt install -y kubeadm kubelet kubectl
Espere a que se instalen los paquetes de kubeadm.
Paso 2:inicialización del clúster de Kubernetes
En este paso, inicializaremos Kubernetes en el nodo 'k8s-master'. Ejecute todos los comandos en esta etapa solo en el servidor 'k8s-master'.
Inicialice el clúster de Kubernetes con el siguiente comando kubeadm.
sudo kubeadm init --pod-network-cidr=10.244.10.0/16 --apiserver-advertise-address=10.0.15.10 --kubernetes-version "1.11.0"
- --apserver-advertise-address =determina en qué dirección IP Kubernetes debe anunciar su servidor API.
- --pod-red-cidr =especificar el rango de direcciones IP para la red de pod. Estamos usando la red virtual 'franela'. Si desea utilizar otra red de pod, como weave-net o calico, cambie la dirección IP del rango.
Cuando se complete la inicialización de Kubernetes, obtendrá el resultado como se muestra a continuación.
Copie el 'kubeadm join ... ... ... ' comando a su editor de texto. El comando se usará para registrar nuevos nodos trabajadores en el clúster de kubernetes.
Ahora, para usar Kubernetes, necesitamos ejecutar algunos comandos como se muestra en el resultado.
Cree un nuevo directorio de configuración '.kube' y copie la configuración 'admin.conf' del directorio '/etc/kubernetes'.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
A continuación, implemente la red de franela en el clúster de kubernetes mediante el comando kubectl.
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
La red de franela se implementó en el clúster de Kubernetes.
Espere un minuto y luego verifique el nodo y los pods de Kubernetes usando los comandos a continuación.
kubectl get nodes
kubectl get pods --all-namespaces
Y obtendrá que el nodo 'k8s-master' se está ejecutando como un clúster 'maestro' con el estado 'listo', y todos los pods 'kube-system' que se necesitan para el clúster están en funcionamiento.
Se ha completado la inicialización y configuración del maestro de clúster de Kubernetes.
Paso 3:agregar nodos trabajadores al clúster de Kubernetes
En este paso, agregaremos dos trabajadores de nodo 'worker01' y 'worker02' al clúster de Kubernetes.
Conéctese al servidor 'worker01' y ejecute el comando kubeadm join que obtiene de la inicialización del clúster.
kubeadm join 10.0.15.10:6443 --token daync8.5dcgj6c6xc7l8hay --discovery-token-ca-cert-hash sha256:65a3e69531d323c335613dea1e498656236bba22e6cf3d5c54b21d744ef97dcd
Conéctese al servidor 'worker02' y ejecute el comando kubeadm join que obtiene de la inicialización del clúster.
kubeadm join 10.0.15.10:6443 --token daync8.5dcgj6c6xc7l8hay --discovery-token-ca-cert-hash sha256:65a3e69531d323c335613dea1e498656236bba22e6cf3d5c54b21d744ef97dcd
Espere unos minutos y vuelva al maestro de nodo 'k8s-master' y verifique el estado del nodo.
kubectl get nodes
Verá que esos nodos trabajadores 'worker01' y 'worker02' son parte del clúster de Kubernetes.
Paso 4 - Prueba
En este paso, implementaremos el servidor web Nginx dentro del clúster. Implementaremos el servidor web Nginx utilizando la plantilla YAML.
Cree un nuevo directorio llamado 'nginx' y vaya a ese directorio.
mkdir -p nginx/
cd nginx/
Ahora cree el archivo YAML de Nginx Deployment 'nginx-deployment.yaml' usando el editor vim.
sudo vim nginx-deployment.yaml
Pegue las configuraciones a continuación.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.0 ports: - containerPort: 80
Guardar y salir.
Nota:
- Estamos creando una nueva 'Implementación' llamada 'nginx-deployment'.
- Configure la etiqueta de la aplicación como 'nginx' con '3' réplicas.
- La 'implementación de nginx' tendrá contenedores llamados 'nginx', basados en la imagen acoplable 'nginx:1.14.0', y expondrá el puerto HTTP predeterminado 80.
Ahora cree la implementación ejecutando el siguiente comando kubectl.
kubectl create -f nginx-deployment.yaml
Después de crear un nuevo 'nginx-deployment', verifique la lista de implementaciones dentro del clúster.
kubectl get deployments
kubectl describe deployment nginx-deployment
Ahora verifique los pods de Kubernetes y verá el pod 'nginx-deployment-xxx', verifique los detalles del pod.
kubectl get pods
kubectl describe pods nginx-deployment-6cb5f7bf4f-t5xfh
Obtendrá pods de implementación de nginx con 3 réplicas en los nodos trabajadores.
A continuación, debemos crear un nuevo servicio para nuestro 'despliegue de nginx'.
Cree un nuevo archivo YAML llamado 'nginx-service.yaml'.
vim nginx-service.yaml
Pegue la configuración a continuación.
apiVersion: v1 kind: Service metadata: name: nginx-service labels: run: nginx-service spec: type: NodePort ports: - port: 80 protocol: TCP selector: app: nginx
Guardar y salir.
Nota:
- Estamos creando un nuevo servicio de kubernetes llamado 'nginx-service'.
- El tipo de servicio es 'NodePort' con el puerto predeterminado HTTP TargetPort 80.
- El servicio pertenece a la aplicación denominada 'nginx' según nuestra implementación 'nginx-deployment'.
Cree el servicio de kubernetes con el siguiente comando kubectl.
kubectl create -f nginx-service.yaml
Ahora verifique todos los servicios disponibles en el clúster y obtendrá el 'servicio nginx' en la lista, luego verifique los detalles del servicio.
kubectl get service
kubectl describe service nginx-service
Y verá que el NodePort 'nginx-service' se está ejecutando en el puerto '32649'.
Verifique usando el comando curl para todos los nodos trabajadores.
En el trabajador01.
curl worker01:32649
Verá la página predeterminada de Nginx.
En el trabajador02.
curl worker02:32649
La instalación y configuración de Kubernetes Cluster en Ubuntu 18.04 se completó con éxito.