Com instal·lar un clúster Kubernetes a CentOS 7


Donat per Google a la comunitat Opensource, Kubernetes s'ha convertit ara en l'eina de gestió de contenidors preferida. Pot gestionar i orquestrar no només els temps d'execució de Docker, sinó també els temps d'execució de Contenidors i Rkt.

Un clúster de Kubernetes típic tindria generalment un node mestre i diversos nodes de treball o Minions. Aleshores, els nodes de treball es gestionen des del node mestre, garantint així que el clúster es gestiona des d'un punt central.

També és important esmentar que també podeu implementar un clúster Kubernetes d'un sol node, que generalment es recomana per a càrregues de treball molt lleugeres i no de producció. Per a això, podeu utilitzar Minikube, que és una eina que executa un clúster Kubernetes d'un sol node en una màquina virtual del vostre node.

Lectura recomanada: Com instal·lar un clúster Kubernetes a CentOS 8

Per a aquest tutorial, farem un recorregut per una instal·lació de clúster de Kubernetes multinode a CentOS 7 Linux. Aquest tutorial es basa en la línia d'ordres, de manera que necessitareu accedir a la finestra del vostre terminal.

  1. Diversos servidors que executen Centos 7 (1 node mestre, 2 nodes de treball). Es recomana que el vostre node mestre tingui almenys 2 CPU, tot i que això no és un requisit estricte.
  2. Connectivitat a Internet a tots els vostres nodes. Recollirem els paquets Kubernetes i Docker del repositori. De la mateixa manera, haureu d'assegurar-vos que el gestor de paquets yum està instal·lat de manera predeterminada i pot recuperar paquets de manera remota.
  3. També necessitareu accedir a un compte amb privilegis sudo o root. En aquest tutorial, faré servir el meu compte root.

El nostre clúster de 3 nodes tindrà un aspecte semblant a això:

Instal·lació de Kubernetes Cluster en Master-Node

Perquè Kubernetes funcioni, necessitareu un motor de contenidorització. Per a aquesta instal·lació, utilitzarem docker ja que és el més popular.

Els passos següents s'executaran al node mestre.

Al vostre node mestre, configureu el nom d'amfitrió i, si no teniu un servidor DNS, actualitzeu també el vostre fitxer /etc/hosts.

# hostnamectl set-hostname master-node
# cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Podeu fer ping a worker-node-1 i worker-node-2 per provar si el vostre fitxer d'amfitrió actualitzat està bé mitjançant l'ordre ping.

# ping 10.128.0.29
# ping 10.128.0.30

A continuació, desactiveu SElinux i actualitzeu les regles del tallafoc.

# setenforce 0
# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
# reboot

Establiu les regles de tallafoc següents als ports. Assegureu-vos que cada ordre del tallafoc-cmd retorna un èxit.

# firewall-cmd --permanent --add-port=6443/tcp
# firewall-cmd --permanent --add-port=2379-2380/tcp
# firewall-cmd --permanent --add-port=10250/tcp
# firewall-cmd --permanent --add-port=10251/tcp
# firewall-cmd --permanent --add-port=10252/tcp
# firewall-cmd --permanent --add-port=10255/tcp
# firewall-cmd –reload
# modprobe br_netfilter
# echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Haureu d'afegir els repositoris de Kubernetes manualment, ja que no s'instal·len de manera predeterminada a CentOS 7.

cat <<EOF > /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
EOF

Amb el repositori de paquets a punt, podeu continuar i instal·lar els paquets kubeadm i docker.

# yum install kubeadm docker -y 

Quan la instal·lació finalitzi correctament, activeu i inicieu tots dos serveis.

# systemctl enable kubelet
# systemctl start kubelet
# systemctl enable docker
# systemctl start docker

Ara estem preparats per inicialitzar el kubernetes master, però abans heu de desactivar l'intercanvi per executar l'ordre \kubeadm init\.

# swapoff -a

La inicialització del mestre Kubernetes és un procés totalment automatitzat que es gestiona mitjançant l'ordre \kubeadm init\ que executareu.

# kubeadm init

És possible que vulgueu copiar l'última línia i desar-la en algun lloc perquè haureu d'executar-la als nodes de treball.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Consell: de vegades aquesta ordre pot queixar-se dels arguments (args) passats, així que editeu-lo per evitar errors. Per tant, suprimiu el caràcter ‘\’ que acompanya el --token i la vostra ordre final tindrà aquest aspecte.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41

Després d'haver inicialitzat Kubernetes correctament, haureu de permetre que l'usuari comenci a utilitzar el clúster. En el nostre cas, volem executar aquesta instal·lació com a usuari root, per tant, seguirem endavant i executarem aquestes ordres com a root. Podeu canviar a un usuari habilitat per sudo que preferiu i executar el següent amb sudo.

Per utilitzar root, executeu:

# mkdir -p $HOME/.kube
# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# chown $(id -u):$(id -g) $HOME/.kube/config

Per utilitzar un usuari habilitat per a sudo, executeu:

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

Ara comproveu si l'ordre kubectl està activada.

# kubectl get nodes

En aquest punt, també notareu que l'estat del node mestre és NotReady. Això es deu al fet que encara hem de desplegar la xarxa de pods al clúster.

La pod Network és la xarxa de superposició per al clúster, que es desplega a la part superior de la xarxa de nodes actual. Està dissenyat per permetre la connectivitat a través del pod.

La implementació del clúster de xarxa és un procés molt flexible en funció de les vostres necessitats i hi ha moltes opcions disponibles. Com que volem que la nostra instal·lació sigui el més senzilla possible, utilitzarem el connector de Weavenet que no requereix cap configuració ni codi addicional i proporciona una adreça IP per pod, la qual cosa és ideal per a nosaltres. Si voleu veure més opcions, consulteu aquí.

Aquestes ordres seran importants per configurar la xarxa de pods.

# export kubever=$(kubectl version | base64 | tr -d '\n')
# kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

Ara, si comproveu l'estat del vostre node mestre, hauria d'estar Listo.

# kubectl get nodes

A continuació, afegim els nodes de treball al clúster.

Configuració de nodes de treball per unir-se al clúster de Kubernetes

Els passos següents s'executaran als nodes de treball. Aquests passos s'han d'executar a tots els nodes de treball quan s'uneix al clúster de Kubernetes.

Al vostre worker-node-1 i worker-node-2, configureu el nom d'amfitrió i, en cas que no tingueu un servidor DNS, actualitzeu també els vostres nodes mestre i treballador al fitxer /etc/hosts.

# hostnamectl set-hostname 'node-1'
# cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Podeu fer ping al node mestre per provar si el vostre fitxer host actualitzat està bé.

A continuació, desactiveu SElinux i actualitzeu les regles del tallafoc.

# setenforce 0
# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Establiu les regles de tallafoc següents als ports. Assegureu-vos que totes les ordres del tallafoc-cmd retornin correctament.

# firewall-cmd --permanent --add-port=6783/tcp
# firewall-cmd --permanent --add-port=10250/tcp
# firewall-cmd --permanent --add-port=10255/tcp
# firewall-cmd --permanent --add-port=30000-32767/tcp
# firewall-cmd  --reload
# echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Haureu d'afegir els repositoris de Kubernetes manualment, ja que no vénen preinstal·lats a CentOS 7.

cat <<EOF > /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
EOF

Amb el repositori de paquets a punt, podeu continuar i instal·lar els paquets kubeadm i docker.

# yum install kubeadm docker -y 

Inicieu i activeu els dos serveis.

# systemctl enable docker
# systemctl start docker
# systemctl enable kubelet
# systemctl start kubelet

Ara necessitem el testimoni que kubeadm init va generar per unir-se al clúster. Podeu copiar-lo i enganxar-lo al vostre node-1 i node-2 si l'heu copiat en algun lloc.

# kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Tal com es suggereix a l'última línia, torneu al vostre node mestre i comproveu si el node treballador-1 i el node treballador-2 s'han unit al clúster mitjançant l'ordre següent.

# kubectl get nodes

Si tots els passos s'executen correctament, hauríeu de veure el node-1 i el node-2 en estat llest al node mestre.

Lectura recomanada: Com implementar Nginx en un clúster de Kubernetes

En aquest punt, hem completat amb èxit la instal·lació d'un clúster de Kubernetes a Centos 7 i hem incorporat amb èxit dos nodes de treball. Ara podeu començar a crear els vostres pods i desplegar els vostres serveis.