Kubernetes - Metodos de instalación (On-Premise sobre VMs)
Hola mundo!!!!!
Hace tiempo que no escribo y ahora, con este estado de confinamiento que tenemos en España, y también a nivel mundial, he tenido tiempo de hacer algunos cursos y quiero plasmar en esta publicación los conocimiento que voy adquiriendo a modo de apuntes.Instalación de Kubernetes (sobre VMs)
Ha cambiado mucho la cosas desde el año 2016 en el que escribía cómo montar el Cluster Kubernetes On-Premise. Ahora hay herramientas que lo han automatizado mucho y vamos a usar una de ellas.He generado dos VMs (Ubuntu 18.04 LTS Minimal) con 30 GB de disco cada una. Las IPs de las vms son:
Nombre | IP |
---|---|
controller | 10.240.0.11 |
worker-0 | 10.240.0.20 |
worker-1 | 10.240.0.21 |
Instalación de las aplicaciones necesarias
Es necesario que los servidores donde vayamos a instalar los componentes del Cluster tenga el swap desactivado (swappoff -a).
apt update -y && apt upgrade -y && apt install vim iptuils-ping -y
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt update
apt install docker.io kubelet kubeadm kubectl -y
apt-mark hold docker.io kubelet kubeadm kubectl
swapoff -a
systemctl enable kubelet.service
systemctl enable docker.service
Lanzar la creación del Cluster (kubeadm)
Por medio de la herramienta Kubeadm vamos a generar nuestro el Control Plane de nuestro Cluster Kubernetes desde cero. La herramienta sigue el siguiente proceso por defecto:- Inicializa la herramienta. (init)
- Comprueba que la VMs tenga los recursos necesarios para continuar.
- Crea una autoridad certificadora. (Autofirmada, se puede configurar para que haga uso de de un PKI externo). Estos certificados aseguran la API, las comunicaciones, los usuarios, etc.
- Genera los ficheros de configuración (kubeconfig files). Estos ficheros son los que usaremos para conectarnos al Cluster.
- Los ficheros se generan en /etc/kubernetes
- admin.conf (Superuser del Cluster)
- kubelet.conf (Configuración del kubelet del nodo maestro)
- controller-manager.conf
- scheduler.conf
- Genera los pods estáticos (son los pods que forman el control plane). Más tarde, nuestro kubelet se encargará de poner en marcha estos pods. Esta manera de hacerlo, con el kubelet, permite la ejecución de los Pods cuando todavía no tenemos el Cluster Kubernetes montado.
- Los ficheros se generan en /etc/kubernetes/manifest
- etcd
- API Server
- Controller Manager
- Scheduler
- Arranca el control plane del nuevo Cluster. (API, etcd, etc)
- Configura las reglas de tipo taint para permitir que en el nodo Master solo se ejecuten ciertos Pods, sólo los pods del sistema y no del usuario.
- Se genera un bootstrap token para poder añadir nuevos nodos al cluster.
- Arranca los pods que forman parte de los addons del Cluster. (kube-proxy o DNS)
- En el controller
- kubeadm init --pod-network-cidr 192.168.0.0/16
- mkdir -p $HOME/.kube
- cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
- chown $(id -u):$(id -g) $HOME/.kube/config
- curl https://docs.projectcalico.org/manifests/calico.yaml -O
- kubectl apply -f calico.yaml
- En los nodos
- kubeadm join 10.240.0.11:6443 --token 6hoae5.qua4h3k0o5cjx4gh --discovery-token-ca-cert-hash sha256:4d2df9fb97482915769677s6sgs96136549a53495671
Comprobar todo:
kubectl get node
NAME STATUS ROLES AGE VERSION
controller Ready master 5m45s v1.18.0
worker-0 Ready <none> 2m13s v1.18.0
worker-1 Ready <none> 80s v1.18.0
Ficheros generados en el controller
Kubeadm admite parámetros adicionales que nos permiten crear el Cluster con parámetros/opciones que modifiquen nuestra implantación.
Puertos de los servicios trasversales al Cluster
Puertos en los nodos del Cluster
... si que ha cambiado la cosa!!!!
Comentarios
Publicar un comentario