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.
- 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.
- 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.
- 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.