Kako namestiti grozd Kubernetes na CentOS 7


Kubernetes, ki ga je Google podaril skupnosti Opensource, je zdaj postal izbrano orodje za upravljanje vsebnikov. Lahko upravlja in orkestrira ne samo izvajalne pogone dockerjev, temveč tudi izvajalnike Containers in Rkt.

Tipična skupina Kubernetes bi običajno imela glavno vozlišče in več vozlišč delavcev ali Minions. Nato se vozlišča delavcev upravljajo iz glavnega vozlišča, s čimer se zagotovi, da se grozd upravlja z osrednje točke.

Pomembno je omeniti tudi, da lahko namestite tudi gručo Kubernetes z enim vozliščem, ki je na splošno priporočljiva za zelo majhne, neprodukcijske delovne obremenitve. Za to lahko uporabite Minikube, ki je orodje, ki poganja gručo Kubernetes z enim vozliščem v navideznem računalniku na vašem vozlišču.

Priporočeno branje: Kako namestiti grozd Kubernetes na CentOS 8

V tej vadnici si bomo ogledali namestitev gruče Kubernetes z več vozlišči na CentOS 7 Linux. Ta vadnica temelji na ukazni vrstici, zato boste potrebovali dostop do okna terminala.

  1. Več strežnikov s Centos 7 (1 glavno vozlišče, 2 delovni vozlišči). Priporočljivo je, da ima vaše glavno vozlišče vsaj 2 CPU, čeprav to ni stroga zahteva.
  2. Internetna povezava na vseh vozliščih. Iz skladišča bomo prevzeli pakete Kubernetes in docker. Prav tako boste morali zagotoviti, da je upravitelj paketov yum privzeto nameščen in lahko pakete pridobiva na daljavo.
  3. Potrebovali boste tudi dostop do računa s pravicami sudo ali root. V tej vadnici bom uporabljal svoj korenski račun.

Naša gruča s 3 vozlišči bo videti nekako takole:

Namestitev grozda Kubernetes na glavnem vozlišču

Da bo Kubernetes deloval, boste potrebovali mehanizem za kontejneriranje. Za to namestitev bomo uporabili docker, saj je najbolj priljubljen.

Naslednji koraki se bodo izvajali na glavnem vozlišču.

Na glavnem vozlišču nastavite ime gostitelja in če nimate strežnika DNS, posodobite tudi datoteko/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

Lahko pingate worker-node-1 in worker-node-2, da z ukazom ping preizkusite, ali je posodobljena datoteka gostitelja v redu.

# ping 10.128.0.29
# ping 10.128.0.30

Nato onemogočite SElinux in posodobite pravila požarnega zidu.

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

Na vratih nastavite naslednja pravila požarnega zidu. Prepričajte se, da vsak ukaz požarnega zidu-cmd vrne uspeh.

# 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

Skladišča Kubernetes boste morali dodati ročno, saj v CentOS 7 niso privzeto nameščeni.

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

Ko je repo paketov zdaj pripravljen, lahko nadaljujete in namestite pakete kubeadm in docker.

# yum install kubeadm docker -y 

Ko se namestitev uspešno zaključi, omogočite in zaženite obe storitvi.

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

Zdaj smo pripravljeni inicializirati master kubernetes, vendar pred tem morate onemogočiti swap, da zaženete ukaz\"kubeadm init \".

# swapoff -a

Inicializacija glavnega računalnika Kubernetes je popolnoma avtomatiziran postopek, ki ga upravlja ukaz\"kubeadm init \", ki ga boste zagnali.

# kubeadm init

Morda boste želeli kopirati zadnjo vrstico in jo nekje shraniti, ker jo boste morali zagnati na delovnih vozliščih.

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

Nasvet: Včasih se lahko ta ukaz pritoži nad posredovanimi argumenti, zato ga uredite, da se izognete napakam. Torej boste izbrisali znak ‘\’ , ki spremlja --token , in vaš zadnji ukaz bo videti tako.

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

Po uspešno inicializirani Kubernetes boste morali uporabniku dovoliti, da začne uporabljati gručo. V našem primeru želimo to namestitev zagnati kot korenski uporabnik, zato bomo te ukaze izvajali kot root. Lahko se odločite za uporabnika, ki ima omogočen sudo, in z uporabo sudo zaženete spodnji postopek.

Če želite uporabiti root, zaženite:

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

Če želite uporabiti uporabnika s sudo, zaženite:

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

Zdaj preverite, ali je ukaz kubectl aktiviran.

# kubectl get nodes

Na tej točki boste opazili tudi, da je stanje glavnega vozlišča "NotReady". To je zato, ker še nismo uvedli omrežja pods v gručo.

Pod Network je prekrivno omrežje za gručo, ki je razporejeno na vrhu trenutnega omrežja vozlišč. Zasnovan je tako, da omogoča povezljivost med strokom.

Uvajanje omrežne gruče je zelo prilagodljiv postopek, odvisno od vaših potreb, na voljo pa je veliko možnosti. Ker želimo našo namestitev čim bolj poenostaviti, bomo uporabili vtičnik Weavenet, ki ne zahteva nobene konfiguracije ali dodatne kode in vsebuje en naslov IP na pod, kar je za nas super. Če želite videti več možnosti, preverite tukaj.

Ti ukazi bodo pomembni za nastavitev omrežja pod.

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

Zdaj, če preverite stanje glavnega vozlišča, bi moralo biti »Pripravljeno«.

# kubectl get nodes

Nato v gručo dodamo delovna vozlišča.

Nastavitev delovnih vozlišč za pridružitev grozdu Kubernetes

Naslednji koraki se bodo izvajali na delovnih vozliščih. Te korake je treba zagnati na vsakem delovnem vozlišču, ko se pridružijo gruči Kubernetes.

Na vašem vozlišču worker-node-1 in worker-node-2 nastavite ime gostitelja in v primeru, da nimate strežnika DNS, nato posodobite tudi glavno in delovno vozlišče v datoteki/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

Glavno vozlišče lahko pingate, da preizkusite, ali je posodobljena datoteka gostitelja v redu.

Nato onemogočite SElinux in posodobite pravila požarnega zidu.

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

Na vratih nastavite naslednja pravila požarnega zidu. Prepričajte se, da vsi ukazi požarnega zidu-cmd vrnejo uspeh.

# 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

Skladišča Kubernetes boste morali dodati ročno, saj v CentOS 7 niso vnaprej nameščena.

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

Ko je repo paketov zdaj pripravljen, lahko nadaljujete in namestite pakete kubeadm in docker.

# yum install kubeadm docker -y 

Zaženite in omogočite obe storitvi.

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

Zdaj zahtevamo žeton, ki ga je ustvaril kubeadm, da se pridruži gruči. Lahko ga kopirate in prilepite na svoje vozlišče-1 in vozlišče-2, če ste ga nekje kopirali.

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

Kot je predlagano v zadnji vrstici, se vrnite na glavno vozlišče in z naslednjim ukazom preverite, ali sta se delovno vozlišče-1 in delovno vozlišče-2 pridružili gruči.

# kubectl get nodes

Če se vsi koraki uspešno izvajajo, bi morali na glavnem vozlišču videti vozlišče-1 in vozlišče-2 v stanju pripravljenosti.

Priporočeno branje: Kako razmestiti Nginx v grozdu Kubernetes

Na tej točki smo uspešno zaključili namestitev grozda Kubernetes na Centos 7 in uspešno vkrcali dve delovni vozlišči. Zdaj lahko začnete ustvarjati svoje pods in uvajati svoje storitve.