Wéi installéiere ech e Kubernetes Cluster op CentOS 7


Geschenkt vu Google un d'Opensource Gemeinschaft, Kubernetes ass elo de Container Management Tool vun der Wiel ginn. Et kann net nëmmen Docker Runtimes managen an orchestréieren, awer och Container a Rkt Runtimes.

En typesche Kubernetes Stärekoup hätt allgemeng e Master Node a verschidde Worker-Nodes oder Minions. D'Aarbechter-Node ginn dann vum Master Node geréiert, sou datt de Cluster vun engem zentrale Punkt geréiert gëtt.

Et ass och wichteg ze ernimmen datt Dir och en eenzegen Node Kubernetes Cluster kënnt ofsetzen, deen allgemeng recommandéiert ass fir ganz liicht, net-Produktiounsaarbechtslaascht. Fir dëst kënnt Dir Minikube benotzen, wat e Tool ass deen e Kubernetes Cluster mat engem eenzegen Node an enger virtueller Maschinn op Ärem Node leeft.

Recommandéiert Liesen: Wéi installéiere ech e Kubernetes Cluster op CentOS 8

Fir dësen Tutorial wäerte mir duerch eng Multi-Node Kubernetes Cluster Installatioun op CentOS 7 Linux goen. Dësen Tutorial ass Kommandozeil baséiert sou datt Dir Zougang zu Ärer Terminalfenster braucht.

  1. Méi Serveren déi Centos 7 lafen (1 Master Node, 2 Worker Nodes). Et ass recommandéiert datt Äre Master Node op d'mannst 2 CPUs huet, obwuel dëst net eng strikt Fuerderung ass.
  2. Internetverbindung op all Ären Noden. Mir sichen Kubernetes an Docker Packagen aus dem Repository. Gläichzäiteg musst Dir sécher sinn datt de yum Package Manager als Standard installéiert ass a Pakete vu wäitem erofhuelen kann.
  3. Dir braucht och Zougang zu engem Kont mat sudo oder root Privilegien. An dësem Tutorial wäert ech mäi Root Kont benotzen.

Eisen 3-Node-Cluster wäert esou ausgesinn:

Installatioun vum Kubernetes Cluster op Master-Node

Fir Kubernetes ze schaffen, braucht Dir e Containeriséierungsmotor. Fir dës Installatioun benotze mir Docker well et am beléifsten ass.

Déi folgend Schrëtt lafen op de Master-Node.

Op Ärem Master Node, set den Hostnumm a wann Dir keen DNS-Server hutt, da aktualiséieren och Är /etc/hosts Datei.

# 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

Dir kënnt Worker-Node-1 an Worker-Node-2 pingelen fir ze testen ob Är aktualiséiert Hostfile gutt ass mam Ping Kommando.

# ping 10.128.0.29
# ping 10.128.0.30

Als nächst deaktivéiert SElinux an aktualiséiert Är Firewall Regelen.

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

Setzt déi folgend Firewall Regelen op Ports. Vergewëssert Iech datt all Firewall-cmd Kommando e Succès gëtt.

# 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

Dir musst Kubernetes Repositories manuell addéieren well se net als Standard op CentOS 7 installéiert ginn.

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

Mam Package Repo elo prett, kënnt Dir virugoen an kubeadm an Docker Packagen installéieren.

# yum install kubeadm docker -y 

Wann d'Installatioun erfollegräich ofgeschloss ass, aktivéiert a start béid Servicer.

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

Elo si mir bereet fir de kubernetes Master z'initialiséieren, awer virdru musst Dir den Swap deaktivéieren fir de Kommando \kubeadm init\ auszeféieren.

# swapoff -a

Kubernetes Master initialiséieren ass e voll automatiséierte Prozess dee vum Kommando \kubeadm init\ geréiert gëtt, deen Dir leeft.

# kubeadm init

Dir wëllt vläicht déi lescht Zeil kopéieren an iergendwou späicheren, well Dir musst et op den Aarbechternoden lafen.

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

Tipp: Heiansdo kéint dëse Kommando iwwer d'Argumenter (args) beschwéieren, also ännert et fir Feeler ze vermeiden. Also, Dir läscht den ‘\’ Zeeche deen den --token begleet an Äre leschte Kommando wäert esou ausgesinn.

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

Nodeems Dir Kubernetes erfollegräich initialiséiert hutt, musst Dir Äre Benotzer erlaben de Cluster ze benotzen. An eisem Fall wëlle mir dës Installatioun als Root Benotzer ausféieren, dofir wäerte mir weidergoen an dës Kommandoen als Root lafen. Dir kënnt op e sudo aktivéierte Benotzer änneren, deen Dir léiwer hutt a lafen déi hei ënnen mat sudo.

Fir root ze benotzen, lafen:

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

Fir e sudo aktivéierte Benotzer ze benotzen, lafen:

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

Elo kontrolléiert fir ze kucken ob de kubectl Kommando aktivéiert ass.

# kubectl get nodes

Zu dësem Zäitpunkt mierkt Dir och datt de Status vum Master-Node 'NotReady' ass. Dëst ass well mir nach de Pod-Netzwierk an de Cluster ofsetzen.

De Pod Network ass den Iwwerlagernetz fir de Stärekoup, deen uewen um aktuellen Nodennetz ofgebaut gëtt. Et ass entwéckelt fir Konnektivitéit iwwer de Pod z'erméiglechen.

Den Netzwierkcluster z'installéieren ass en héich flexibele Prozess ofhängeg vun Äre Bedierfnesser an et gi vill Optiounen verfügbar. Well mir eis Installatioun esou einfach wéi méiglech halen wëllen, benotze mir de Weavenet Plugin deen keng Konfiguratioun oder Extra Code erfuerdert an et gëtt eng IP Adress pro Pod déi super fir eis ass. Wann Dir méi Optiounen wëllt gesinn, kuckt w.e.g. hei.

Dës Befehle wäerte wichteg sinn fir de Pod Netzwierk Setup ze kréien.

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

Elo wann Dir de Status vun Ärem Master-Node iwwerpréift, sollt et 'Ready' sinn.

# kubectl get nodes

Als nächst fügen mir d'Aarbechternoden un de Cluster.

Astellung vun Aarbechter Noden fir matzemaachen Kubernetes Cluster

Déi folgend Schrëtt lafen op den Aarbechternoden. Dës Schrëtt sollen op all Aarbechter Node lafen wann Dir de Kubernetes Cluster bäitrieden.

Op Ärem Worker-Node-1 an Worker-Node-2, set den Hostnumm an am Fall wou Dir keen DNS-Server hutt, da aktualiséieren och Är Master- an Aarbechtsknoten op /etc/hosts Datei.

# 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

Dir kënnt de Master-Node pingelen fir ze testen ob Är aktualiséiert Hostfile gutt ass.

Als nächst deaktivéiert SElinux an aktualiséiert Är Firewall Regelen.

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

Setzt déi folgend Firewall Regelen op Ports. Vergewëssert Iech datt all Firewall-cmd Kommandoen Erfolleg zréckginn.

# 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

Dir musst Kubernetes Repositories manuell addéieren well se net virinstalléiert op CentOS 7 kommen.

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

Mam Package Repo elo prett, kënnt Dir virugoen an kubeadm an Docker Packagen installéieren.

# yum install kubeadm docker -y 

Start an aktivéiert béid Servicer.

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

Mir erfuerderen elo den Token deen de Kubeadm init generéiert huet, fir an de Cluster matzemaachen. Dir kënnt et op Ären Node-1 an Node-2 kopéieren a pechen wann Dir et iergendwou kopéiert hutt.

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

Wéi op der leschter Zeil proposéiert, gitt zréck op Äre Master-Node a kontrolléiert ob den Aarbechter Node-1 an den Aarbechter Node-2 de Cluster mat dem folgenden Kommando ugeschloss hunn.

# kubectl get nodes

Wann all d'Schrëtt erfollegräich lafen, da sollt Dir Node-1 an Node-2 am Ready Status um Master-Node gesinn.

Recommandéiert Liesen: Wéi deploy Nginx op engem Kubernetes Cluster

Zu dësem Zäitpunkt hu mir eng Installatioun vun engem Kubernetes-Cluster op Centos 7 erfollegräich ofgeschloss a mir hunn zwee Aarbechter-Node erfollegräich u Bord. Dir kënnt elo ufänken Är Pods ze kreéieren an Är Servicer z'installéieren.