Después de probar Minikube toca echar un vistazo a un clúster de Kubernetes con más de un nodo y que se asemeje más a un entorno real de producción. Tenemos un playbook de Ansible llamado Kubespray que nos facilita la puesta en marcha nuestro entorno.
Para instalar el clúster tengo 4 nodos CentOS 7 virtualizados con KVM:
El primer paso es clonar el repo de GitHub en mi host:
git clone https://github.com/kubernetes-sigs/kubespray
Instalamos dependencias de Python necesarias:
pip install -r requirements.txt
Creamos nuestro directorio de inventario:
cp -rfp inventory/sample inventory/jota-k8s-cluster
En mi caso no he utilizado el inventory builder de Python y he modificado el fichero de hosts.ini a mano en inventory/jota-k8s-cluster/hosts.ini
:
[all] node1 ansible_host=192.168.1.135 ip=192.168.1.135 etcd_member_name=etcd1 node2 ansible_host=192.168.1.136 ip=192.168.1.136 etcd_member_name=etcd2 node3 ansible_host=192.168.1.137 ip=192.168.1.137 etcd_member_name=etcd3 node4 ansible_host=192.168.1.138 ip=192.168.1.138 etcd_member_name=etcd4 [kube-master] node1 node2 [etcd] node1 node2 node3 node4 [kube-node] node1 node2 node3 node4 [k8s-cluster:children] kube-master kube-node
En el fichero inventory/jota-k8s-cluster/group_vars/k8s-cluster/k8s-cluster.yml
podemos ajustar configuración de diversos aspectos del clúster como la red (plugin, subred, etc…), versión de Kubernetes, nombre del clúster… También en el fichero inventory/jota-k8s-cluster/group_vars/all/all.yml
podemos ajustar el puerto del API Server, configuración DNS, etc…
Una vez lo tengamos todo listo lanzamos el playbook:
ansible-playbook -i inventory/jota-k8s-cluster/hosts.ini --become --become-user=root cluster.yml --flush-cache
Si todo va bien veremos al final del proceso:
Hacemos login en node1 que es master y lanzamos un kubectl get nodes para comprobar que los nodos están levantados:
Si el playbook ha fallado en algún nodo, podemos relanzarlo sólo para ese nodo con la opción --limit NODE_NAME
. Por ejemplo si falla node4:
ansible-playbook -i inventory/jota-k8s-cluster/hosts.ini --become --become-user=root cluster.yml --flush-cache --limit node4
Ahora queda configurar el acceso al dashboard, algunos servicios, resetear el clúster y seguir probando K8S…