Nuestro cluster se va a compener de 4 ordenadors/maquinas virtuales fisicos:
Preaparando el entorno
para configurar la ip manualmente usarmeos el comando:
nmtui
Luego configurar el archivo /etc/hosts con la ip de los demas nodos
vi /etc/hosts
192.168.1.88 k8s-master 192.168.1.41 node01 192.168.1.42 node02 192.168.1.43 node03
La siguiente instalacion se efetuara en las 4 maquinas.
Deshabilitar SELinux and Swap
setenforce 0 sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux swapoff -a vi /etc/fstab # /dev/mapper/centos-swap swap swap defaults 0 0
Habilitar el module br_netfilter
modprobe br_netfilter
vi /etc/sysctl.conf
Añadimos al final
net.bridge.bridge-nf-call-iptables = 1
Guardamos y ejecutamos.
sysctl -p
Deshabilitar el firewall
systemctl stop firewalld systemctl disable firewalld systemctl mask --now firewalld
Install Docker-ce
yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce-18.03.1.ce-1.el7.centos
habilitar el servicio docker
systemctl start docker systemctl enable docker
configurar el servicio de docker
vi /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] }
Install Kubernetes
Añadir el repo de kubernetes
vi /etc/yum.repos.d/kubernetes.repo
[kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
Instalar kubernetes
yum install -y kubelet-1.14.7-0 kubeadm-1.14.7-0 kubectl-1.14.7-0
Habilitar el servicio kubelet
systemctl enable kubelet systemctl start kubelet
reboot
Starting Cluster
Iniciar kubeadm init en el master
En caso de usar flannel
kubeadm init --apiserver-advertise-address=192.168.1.88 --pod-network-cidr=10.244.0.0/16
Exponer el archivo de configuracion a usuario regular
mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config
Desplegar el pod network
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Copiar el token y el hash generado sera necesario para unir nodos al cluster, tenemos que usar este comando en los nodos
kubeadm join 192.168.1.88:6443 --token exw87m.nipez9fst1keqehh --discovery-token-ca-cert-hash sha256:381735aa25e490539d420da8319b8a3dc73ef9caa1ce66405519999bcc3fc6cd
Verificar
kubectl get pods --all-namespaces kubectl get nodes
Para ver el log en detalle de un pod
kubectl --namespace=kube-system describe pod pod-name
Para ver de nuevo el kubeadm join
kubeadm token create --print-join-command
Videos
Configurando cada nodo
Creando el cluster
2 comentarios
joseph · 28 de enero de 2020 a las 15:05
Hola muy buen tutorial. Mi consulta es saber, si puedo implementar k8s, en servidores virtuales de mi lan, sin conectar a servicios de cloud. En modo sencillo, quiero instalar un cluster k8s en mi red interna de mi empresa. Se puede?
AdriAk · 3 de febrero de 2020 a las 21:34
Buenas.
Se puede sin ningun problema.
Solo especial atencion a la parte de las ips, el despliegue de flannel y el metallb si sigues los pasos no del tutorial es perfectamente posible solo que con maquinas de tu empresa.
Despues llega la parte de la persistencia, el cluster storage es lo mas recomendado pero si quieres al sencillo y rapido la opcion nfs es muy rapida.
Si el volumen de maquinas virtuales que vas a manejar es menos de 100 proxmox-ve es una opcion muy ligera que te deja adminsitrar los recursos del hierro de forma muy eficiente.
Si hablamos de grandes volumnes instala openstack y encima openshift para el kubernetes muchas menos versatilidad,pero te dan el trabajo hecho si vas trabajar con enormes volumnes de maquinas virtuales.