Kaip įdiegti „Kubernetes“ klasterį „CentOS 7“.


Google padovanojo atvirojo kodo bendruomenei, Kubernetes dabar tapo pasirinktu sudėtinio rodinio valdymo įrankiu. Jis gali valdyti ir organizuoti ne tik docker vykdymo laiką, bet ir konteinerių bei Rkt vykdymo laikus.

Įprastas Kubernetes klasteris paprastai turėtų pagrindinį mazgą ir kelis darbuotojo mazgus arba minionus. Tada darbuotojo mazgai valdomi iš pagrindinio mazgo, taip užtikrinant, kad klasteris būtų valdomas iš centrinio taško.

Taip pat svarbu paminėti, kad taip pat galite įdiegti vieno mazgo „Kubernetes“ klasterį, kuris paprastai rekomenduojamas esant labai nedideliems, ne gamybiniams darbo krūviams. Tam galite naudoti Minikube – įrankį, paleidžiantį vieno mazgo Kubernetes klasterį jūsų mazgo virtualioje mašinoje.

Rekomenduojama skaityti: kaip įdiegti „Kubernetes“ grupę „CentOS 8“

Šioje mokymo programoje apžvelgsime kelių mazgų Kubernetes klasterio diegimą sistemoje CentOS 7 Linux. Ši pamoka yra pagrįsta komandų eilute, todėl jums reikės prieigos prie terminalo lango.

Būtinos sąlygos

  1. Keli serveriai, kuriuose veikia Centos 7 (1 pagrindinis mazgas, 2 darbo mazgai). Rekomenduojama, kad jūsų Pagrindinis mazgas turėtų bent 2 CPU, nors tai nėra griežtas reikalavimas.
  2. Interneto ryšys visuose mazguose. Iš saugyklos paimsime Kubernetes ir docker paketus. Taip pat turėsite įsitikinti, kad yum paketų tvarkyklė yra įdiegta pagal numatytuosius nustatymus ir gali gauti paketus nuotoliniu būdu.
  3. Jums taip pat reikės prieigos prie paskyros su sudo arba root teisėmis. Šioje pamokoje naudosiu savo root paskyrą.

Mūsų 3 mazgų klasteris atrodys maždaug taip:

„Kubernetes“ klasterio diegimas pagrindiniame mazge

Kad Kubernetes veiktų, jums reikės konteinerių surinkimo variklio. Šiam diegimui naudosime dokerį, nes jis yra populiariausias.

Šie veiksmai bus vykdomi pagrindiniame mazge.

1 veiksmas: Paruoškite pagrindinio kompiuterio pavadinimą, ugniasienę ir SELinux

Pagrindiniame mazge nustatykite pagrindinio kompiuterio pavadinimą ir, jei neturite DNS serverio, taip pat atnaujinkite failą /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

Galite patikrinti darbuotojo mazgas-1 ir darbuotojo mazgas-2, kad patikrintumėte, ar jūsų atnaujintas prieglobos failas tinkamas naudojant ping komandą.

ping 10.128.0.29
ping 10.128.0.30

Tada išjunkite SElinux ir atnaujinkite ugniasienės taisykles.

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

Prievaduose nustatykite šias ugniasienės taisykles. Įsitikinkite, kad kiekviena ugniasienės cmd komanda grąžina sėkmę.

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

2 veiksmas: nustatykite „Kubernetes Repo“.

Turėsite neautomatiškai pridėti Kubernetes saugyklas, nes jos nėra įdiegtos pagal numatytuosius nustatymus 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

3 veiksmas: įdiekite „Kubeadm“ ir „Docker“.

Kai paketo atpirkimas yra paruoštas, galite įdiegti kubeadm ir docker paketus.

yum install kubeadm docker -y 

Kai diegimas bus sėkmingai baigtas, įgalinkite ir paleiskite abi paslaugas.

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

4 veiksmas: inicijuokite „Kubernetes Master“ ir „Setup Default User“.

Dabar esame pasirengę inicijuoti kubernetes master, bet prieš tai turite išjungti apsikeitimą, kad paleistumėte komandą „kubeadm init“.

swapoff -a

„Kubernetes Master“ inicijavimas yra visiškai automatizuotas procesas, kurį valdo komanda „kubeadm init“, kurią vykdysite.

kubeadm init

Galbūt norėsite nukopijuoti paskutinę eilutę ir kažkur išsaugoti, nes ją reikės paleisti darbuotojo mazguose.

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

Patarimas: kartais ši komanda gali skųstis dėl perduodamų argumentų (argumentų), todėl redaguokite ją, kad išvengtumėte klaidų. Taigi, ištrinsite simbolį '\', esantį kartu su --token, ir jūsų paskutinė komanda atrodys taip.

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

Sėkmingai inicijavę Kubernetes, turėsite leisti vartotojui pradėti naudoti grupę. Mūsų atveju šį diegimą norime paleisti kaip root vartotoją, todėl toliau vykdysime šias komandas kaip root. Galite pakeisti į norimą sudo įgalintą vartotoją ir paleisti toliau pateiktus veiksmus naudodami sudo.

Norėdami naudoti root, paleiskite:

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

Jei norite naudoti vartotoją, įgalintą sudo, paleiskite:

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

Dabar patikrinkite, ar suaktyvinta komanda kubectl.

kubectl get nodes

Šiuo metu taip pat pastebėsite, kad pagrindinio mazgo būsena yra Neparuošta. Taip yra todėl, kad dar neįdiegėme pod tinklo klasteryje.

Pod tinklas yra klasterio perdangos tinklas, kuris yra įdiegtas dabartinio mazgų tinklo viršuje. Jis sukurtas taip, kad būtų galima prijungti prie lizdo.

5 veiksmas: nustatykite „Pod“ tinklą

Tinklo klasterio diegimas yra labai lankstus procesas, priklausantis nuo jūsų poreikių ir yra daug galimybių. Kadangi norime, kad diegimas būtų kuo paprastesnis, naudosime Weavenet papildinį, kuriam nereikia jokios konfigūracijos ar papildomo kodo ir kuris suteikia vieną IP adresą, kuris mums puikiai tinka. Jei norite pamatyti daugiau parinkčių, patikrinkite čia.

Šios komandos bus svarbios norint nustatyti pod tinklo sąranką.

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

Dabar, jei patikrinsite pagrindinio mazgo būseną, ji turėtų būti Parengta.

kubectl get nodes

Tada prie klasterio pridedame darbuotojo mazgus.

Darbuotojų mazgų, skirtų prisijungti prie Kubernetes klasterio, nustatymas

Šie veiksmai bus vykdomi darbuotojo mazguose. Šiuos veiksmus reikia atlikti kiekviename darbuotojo mazge prisijungiant prie Kubernetes klasterio.

1 veiksmas: Paruoškite pagrindinio kompiuterio pavadinimą, ugniasienę ir SELinux

Savo darbuotojo mazgas-1 ir darbuotojo mazgas-2 nustatykite pagrindinio kompiuterio pavadinimą ir, jei neturite DNS serverio, taip pat atnaujinkite pagrindinį ir darbuotoją mazgai faile /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

Galite išsiųsti ping pagrindinį mazgą, kad patikrintumėte, ar atnaujintas prieglobos failas tinkamas.

Tada išjunkite SElinux ir atnaujinkite ugniasienės taisykles.

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

Prievaduose nustatykite šias ugniasienės taisykles. Įsitikinkite, kad visos ugniasienės-cmd komandos grąžina sėkmę.

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

2 veiksmas: nustatykite „Kubernetes Repo“.

Turėsite neautomatiškai pridėti Kubernetes saugyklas, nes jos nėra iš anksto įdiegtos 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

3 veiksmas: įdiekite „Kubeadm“ ir „Docker“.

Kai paketo atpirkimas yra paruoštas, galite įdiegti kubeadm ir docker paketus.

yum install kubeadm docker -y 

Paleiskite ir įjunkite abi paslaugas.

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

4 veiksmas: prijunkite darbuotojo mazgą prie Kubernetes klasterio

Dabar mums reikia prieigos rakto, kurį kubeadm sugeneravo, kad galėtume prisijungti prie grupės. Galite nukopijuoti ir įklijuoti jį į savo 1 mazgą ir mazgą-2, jei jį kur nors nukopijavote.

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

Kaip siūloma paskutinėje eilutėje, grįžkite į pagrindinį mazgą ir patikrinkite, ar darbo mazgas-1 ir darbuotojo mazgas-2 prisijungė prie klasterį naudodami šią komandą.

kubectl get nodes

Jei visi veiksmai atliekami sėkmingai, pagrindiniame mazge turėtumėte matyti mazgas-1 ir mazgas-2 parengties būsenos.

Rekomenduojama skaityti: kaip įdiegti „Nginx“ „Kubernetes“ klasteryje

Šiuo metu sėkmingai užbaigėme Kubernetes klasterio diegimą Centos 7 ir sėkmingai įdiegėme du darbuotojo mazgus. Dabar galite pradėti kurti savo podelius ir diegti paslaugas.