A continuación, te presentamos un tutorial paso a paso para instalar Kubernetes en Ubuntu Server.
Paso 1: Actualizar el sistema
Antes de comenzar la instalación, actualiza el sistema operativo Ubuntu a la última versión disponible con el siguiente comando:
sudo apt-get update && sudo apt-get upgrade -y
Paso 2: Deshabilitar el intercambio de memoria
Kubernetes requiere que el intercambio de memoria esté deshabilitado en los nodos del clúster, para esto ejecuta el siguiente comando para deshabilitar el intercambio de memoria:
sudo swapoff -a
Para desactivar la swap de forma permanente, edita el archivo /etc/fstab
y comenta la línea que contiene el archivo de swap.
Paso 3: Instalar Docker
Kubernetes utiliza Docker como su contenedor de elección, por lo que debes instalar Docker en el servidor. Para hacerlo, ejecuta los siguientes comandos:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install docker-ce -y
Paso 4: Añadir el repositorio de Kubernetes
Ahora, añade el repositorio de Kubernetes a tu sistema con los siguientes comandos:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
Paso 5: Instalar kubelet, kubeadm y kubectl
Instala kubelet, kubeadm y kubectl con los siguientes comandos:
sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl
Paso 6: Inicializar Kubernetes
Ahora, inicializa Kubernetes en el servidor maestro con el siguiente comando:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Si les arroja un error como este:
[init] Using Kubernetes version: v1.26.2 [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR CRI]: container runtime is not running: output: time="2023-03-01T00:06:17Z" level=fatal msg="validate service connection: CRI v1 runtime API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService" , error: exit status 1 [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher
Realizamos lo siguiente:
rm /etc/containerd/config.toml systemctl restart containerd
y volvemos a ejecutar el paso 6
Paso 7: Configurar kubectl
Para usar kubectl, debes configurar tu usuario y contexto. Para hacerlo, ejecuta los siguientes comandos:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
Paso 8: Instalar una red de pods flannel
Ahora, instala una red de pods en Kubernetes con el siguiente comando:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Paso 9: Verificar el estado de Kubernetes
Verifica el estado de Kubernetes con el siguiente comando:
kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-flannel kube-flannel-ds-slgbd 0/1 Init:0/2 0 8s kube-system coredns-787d4945fb-4rz46 0/1 Pending 0 109s kube-system coredns-787d4945fb-xn672 0/1 Pending 0 109s kube-system etcd-kubernetes 1/1 Running 0 2m1s kube-system kube-apiserver-kubernetes 1/1 Running 0 2m1s kube-system kube-controller-manager-kubernetes 1/1 Running 0 2m1s kube-system kube-proxy-n4lkp 1/1 Running 0 109s kube-system kube-scheduler-kubernetes 1/1 Running 0 2m1s
Paso 10: Configurar un nodo de trabajo
Si quieres agregar un nodo de trabajo al clúster, ejecuta el siguiente comando en el nodo de trabajo con el token que se generó en el paso 6:
sudo kubeadm join <IP_DEL_SERVIDOR_MAESTRO>:6443 --token <TOKEN> --discovery-token-ca-cert-hash <CERT_HASH>
Algo como esto:
Then you can join any number of worker nodes by running the following on each as root: kubeadm join 192.168.0.240:6443 --token 1i1afv.4ienmhsst4jspssj \ --discovery-token-ca-cert-hash sha256:bc657745c741d6b327883ebe91a77746d2455d7963021d957f446acaf4e10060
Siguiendo estos pasos, se debe poder configurar correctamente Kubernetes en Ubuntu Server.
Ejemplos de uso de Kubernates
- Escalado automático: Uno de los principales beneficios de Kubernetes es su capacidad para escalar automáticamente tus aplicaciones en función de la demanda. Por ejemplo, si tu aplicación experimenta un aumento en el tráfico, Kubernetes puede crear automáticamente nuevos contenedores para manejar la carga adicional. De esta manera, tu aplicación puede manejar cualquier cantidad de tráfico sin caerse o ralentizarse.
- Despliegue de aplicaciones: Kubernetes también facilita el despliegue de tus aplicaciones. Puedes utilizar Kubernetes para crear un conjunto de réplicas de tu aplicación y luego desplegarla en tu clúster. Kubernetes se encargará de distribuir las réplicas a través de tus nodos de clúster para garantizar la disponibilidad y el rendimiento de la aplicación.
- Actualización de aplicaciones: Kubernetes también facilita la actualización de tus aplicaciones. Puedes utilizar Kubernetes para crear una nueva versión de tu aplicación y, a continuación, desplegarla en tu clúster. Kubernetes se encargará de actualizar las réplicas de la aplicación de manera gradual para garantizar la disponibilidad continua de la aplicación.
- Administración de contenedores: Kubernetes también te permite administrar tus contenedores de manera centralizada. Puedes utilizar Kubernetes para crear y eliminar contenedores, así como para monitorizar su estado y rendimiento. Kubernetes también te permite configurar el almacenamiento, la red y otros recursos para tus contenedores.
- Entrega continua: Kubernetes también puede utilizarse como parte de una estrategia de entrega continua. Puedes utilizar Kubernetes para automatizar el proceso de creación, pruebas y despliegue de tu aplicación. Esto te permite entregar nuevas características y correcciones de errores a tus usuarios de manera más rápida y frecuente.
Estos son solo algunos ejemplos de uso de Kubernetes. Hay muchas más maneras de utilizar Kubernetes para administrar tus aplicaciones y contenedores en la nube.
Para cualquier consulta o sugerencia no duden en contactarnos.