Giunsa ang Pag-instalar sa Kubernetes Cluster sa CentOS 8


Ang proseso sa pag-install sa usa ka Kubernetes Cluster sa CentOS 8 hapit parehas sa CentOS 7 (nga mahimo nimong maagian dinhi), apan ang proseso dinhi adunay pipila nga mga pagbag-o. Kini nga mga pagbag-o, kasagaran naglibot sa pag-instalar sa Docker.

Sugod gikan sa CentOS 8 (ug pinaagi sa extension RHEL 8), ang docker karon gipulihan sa podman ug buildah nga mga himan gikan sa Redhat. Sa tinuud, ang docker package gikuha na karon gikan sa default nga repository sa package.

Uban niini nga lakang, ang Redhat team nagtumong sa pagpayano sa proseso sa paghimo ug paggamit sa mga sudlanan, nga wala magkinahanglan og espesyal nga mga permiso, samtang sa samang higayon, pagmintinar sa pagkaangay sa mga docker nga mga imahe ug pag-operate niini nga wala magkinahanglan og usa ka daemon. Nagsaad si Podman nga maghatag labi pa nga pagka-flexible kung nagdagan sa mga palibot sa Kubernetes, apan ang hurado nagpabilin didto.

Alang sa kini nga artikulo, modagan kami sa proseso sa pag-install sa Kubernetes sa usa ka platform sa CentOS 8, nga nagdagan sa Docker-CE (Community Edition). Sa usa ka ulahi nga artikulo, modagan usab kami sa usa ka parehas nga pag-install, gamit ang podman alang sa among mga sudlanan.

  1. Tulo ka server nga nagpadagan sa CentOS 8 – 1 Master Node ug 2 Worker Nodes.
  2. Girekomenda nga ang imong mga node kinahanglan adunay labing menos 2 ka CPU nga adunay 2GB RAM o labaw pa matag makina. Dili kini usa ka estrikto nga kinahanglanon apan kadaghanan gipalihok sa mga panginahanglanon sa aplikasyon nga gusto nimong ipadagan.
  3. Pagdugtong sa internet sa tanan nimong node. Magkuha kami mga Kubernetes ug docker packages gikan sa repository. Sa parehas nga paagi, kinahanglan nimo nga sigurohon nga ang tagdumala sa pakete sa DNF na-install sa default ug mahimo’g makuha ang mga pakete sa layo.
  4. Ang tanan nimong mga node kinahanglan usab nga makakonektar sa usag usa, sa pribado o publikong network, bisan asa ang anaa.
  5. Magkinahanglan ka usab og access sa usa ka account nga adunay sudo o root nga mga pribilehiyo. Niini nga tutorial, akong gamiton ang akong root account.

Kadaghanan sa mga node sa kasagaran adunay mga talagsaon nga MAC adres, bisan pa, sa pipila ka talagsaon nga mga kaso, ang pipila nga mga Virtual Machine mahimong adunay parehas nga mga ad sa MAC. Busa girekomenda nga imong kumpirmahon nga ang Product_UUID ug ang MAC address dili parehas sa bisan unsang mga node.

Gigamit sa mga Kubernetes kini nga mga kantidad aron mailhan ang mga node sa cluster. Kung kini nga mga kantidad dili talagsaon sa matag node, ang proseso sa pag-install mahimong mapakyas.

Aron masusi ang MAC address sa network interface ug itandi kini.

# ip link

Aron masusi ang product_uuid ug itandi, padagana ang mosunod nga sugo.

# cat /sys/class/dmi/id/product_uuid 

Ang among instalasyon gidesinyo aron ang Master-Node nagkontrol sa Worker Nodes. Sa pagtapos sa kini nga pag-install, ang among lohikal nga arkitektura mahimong ingon niini.

Master Node - Kini nga makina sa kasagaran naglihok isip control plane ug nagpadagan sa cluster database ug sa API server (nga nakigkomunikar sa kubectl CLI).

Ang among 3-node nga Kubernetes Cluster mahimong ingon niini:

Pag-instalar sa Kubernetes Cluster sa Master-Node

Para mugana ang Kubernetes, magkinahanglan ka ug containerization engine. Sama sa nahisgutan, gamiton namon ang Docker-CE.

Ang mosunod nga mga institusyon ipahigayon sa CentOS 8 Master-Node.

Sa imong CentOS 8 Master-Node, ibutang ang hostname sa sistema ug i-update ang DNS sa imong /etc/hosts file.

# hostnamectl set-hostname master-node
# cat <<EOF>> /etc/hosts
192.168.0.47 master-node
192.168.0.48 node-1 worker-node-1
192.168.0.49 node-2 worker-node-2
EOF

Sunod, i-ping ang imong worker-node-1 ug worker-node-2 aron masusi kung ang imong updated nga host file nagtrabaho sa husto gamit ang ping command.

# ping 192.168.0.48
# ping 192.168.0.49

Sunod, pag-disable ang Selinux, tungod kay gikinahanglan kini aron tugutan ang mga sudlanan nga maka-access sa host filesystem, nga gikinahanglan sa mga pod network ug uban pang mga serbisyo.

# setenforce 0

Ang pagtakda sa setenforce ngadto sa 0 epektibong nagtakda sa SELinux ngadto sa permissive, nga epektibong nagpugong sa SELinux hangtud sa sunod nga reboot. Aron hingpit nga ma-disable kini, gamita ang sugo sa ubos ug i-reboot.

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

Gigamit sa Kubernetes ang lainlaing mga pantalan alang sa komunikasyon ug pag-access ug kini nga mga pantalan kinahanglan nga magamit sa Kubernetes ug dili limitado sa firewall.

I-configure ang mga lagda sa firewall sa mga pantalan.

# 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

Kinahanglan nimo nga idugang una ang Docker repository tungod kay wala na kini sa default package list gamit ang mosunod nga dnf config-manager command.

# dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

I-install usab ang containerd.io nga pakete nga magamit isip usa ka daemon nga nagdumala sa kompleto nga container lifecycle sa host system niini, gikan sa pagbalhin sa imahe ug pagtipig hangtod sa pagpatuman sa container ug pagdumala hangtod sa ubos nga lebel nga pagtipig hangtod sa mga attachment sa network ug sa unahan.

# dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

Karon i-install ang pinakabag-o nga bersyon sa usa ka docker-ce package.

# dnf install docker-ce

Mahimo nimong mapalihok ug masugdan ang serbisyo sa docker.

# systemctl enable docker
# systemctl start docker

Sunod, kinahanglan nimo nga idugang ang mga repositoryo sa Kubernetes nga mano-mano tungod kay dili kini ma-install nga default sa CentOS 8.

# 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

Gitabangan ka sa Kubeadm nga mag-bootstrap sa usa ka minimum nga mahimo nga Kubernetes cluster nga nahiuyon sa labing kaayo nga mga gawi. Uban sa kubeadm, ang imong cluster kinahanglang mopasar sa Kubernetes Conformance tests.

Gisuportahan usab sa Kubeadm ang ubang mga gimbuhaton sa siklo sa kinabuhi sa cluster, sama sa pag-upgrade, pag-downgrade, ug pagdumala sa mga token sa bootstrap. Ang Kubeadm usab mahigalaon sa panagsama sa ubang mga himan sa orkestra sama sa Ansible ug Terraform.

Sa andam na ang package repo, mahimo ka nga magpadayon ug mag-install sa kubeadm package.

# dnf install kubeadm -y 

Kung malampuson nga makompleto ang pag-install, i-enable ug sugdi ang serbisyo.

# systemctl enable kubelet
# systemctl start kubelet

Ang Kubernetes master nga naglihok isip control plane para sa cluster nagpadagan sa pipila ka kritikal nga serbisyo nga gikinahanglan para sa cluster. Ingon niana, ang proseso sa pagsugod maghimo usa ka serye sa mga precheck aron masiguro nga ang makina andam na sa pagpadagan sa Kubernetes. Kini nga mga precheck nagpadayag sa mga pasidaan ug paggawas sa mga sayup. Ang kubeadm init dayon mag-download ug mag-install sa mga sangkap sa cluster control plane.

Karon na ang panahon sa pagsugod sa Kubernetes master, apan sa wala pa kana, kinahanglan nimong i-disable ang swap aron makadagan ang \kubeadm init\ nga mando.

# swapoff -a

Ang pagsugod sa Kubernetes master usa ka hingpit nga automated nga proseso nga kontrolado sa \kubeadm init\ nga sugo sama sa gipakita.

# kubeadm init

Sunod, kopyaha ang mosunod nga sugo ug tipigi kini sa usa ka dapit, ingon nga gikinahanglan namo nga ipadagan kini nga sugo sa mga worker node sa ulahi.

kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash ha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf7

Sugyot: Usahay ang sugo sa ibabaw mahimong maghulog ug mga sayop mahitungod sa mga argumento nga gipasa, mao nga aron malikayan ang mga sayop, kinahanglan nimong tangtangon ang ‘\’ nga karakter ug ang imong kataposang sugo mahimong ingon niini.

# kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 –discovery token-ca-cert-hash sha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf7

Kung malampuson nga nasugdan ang Kubernetes, kinahanglan nimo nga hatagan ang imong tiggamit sa pagsugod sa paggamit sa cluster. Sa among senaryo, among gamiton ang root user. Mahimo usab nimo sugdan ang cluster gamit ang sudo user sama sa gipakita.

Aron magamit ang gamut, pagdagan:

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

Aron magamit ang usa ka sudo enabled user, pagdagan:

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

Karon kumpirmahi nga ang kubectl command gi-activate.

# kubectl get nodes

Niining higayona, imong makita ang kahimtang sa master-node kay 'Dili Ready'. Kini tungod kay wala pa namo ma-deploy ang pod network sa cluster.

Ang pod Network mao ang overlay network alang sa cluster, nga gibutang sa ibabaw sa karon nga node network. Gidisenyo kini aron tugutan ang pagkonekta sa tibuuk nga pod.

Ang pag-deploy sa kumpol sa network usa ka labi ka dali nga proseso depende sa imong mga panginahanglanon ug adunay daghang mga kapilian nga magamit. Tungod kay gusto namon nga ipadayon ang among pag-install nga yano kutob sa mahimo, gamiton namon ang Weavenet plugin nga wala magkinahanglan bisan unsang pag-configure o dugang nga code ug naghatag kini usa ka IP address matag pod nga maayo alang kanamo. Kung gusto nimo makakita og dugang nga mga kapilian, palihug susiha dinhi.

Kini nga mga sugo mahimong importante aron makuha ang pod network setup.

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

Karon kung imong susihon ang kahimtang sa imong master-node, kini kinahanglan nga 'Andam'.

# kubectl get nodes

Sunod, among idugang ang mga worker node sa cluster.

Pagdugang sa Worker Nodes sa Kubernetes Cluster

Ang mosunod nga mga instruksyon himoon sa matag worker node kon moapil sa Kubernetes cluster.

Una ibutang ang hostname sa imong worker-node-1 ug worker-node-2, ug dayon idugang ang host entries sa /etc/hosts file.

# hostnamectl set-hostname 'node-1'
# cat <<EOF>> /etc/hosts
192.168.0.47 master-node
192.168.0.48 node-1 worker-node-1
192.168.0.49 node-2 worker-node-2
EOF

Sunod, i-ping ang imong master node gikan sa imong mga worker node aron makumpirma nga ang imong na-update nga host file nagtrabaho nga maayo gamit ang ping command.

# 192.168.0.47

Sunod, i-disable ang SElinux ug i-update ang imong mga lagda sa firewall.

# setenforce 0
# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
# 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

Idugang una ang Docker repository gamit ang DNF config-manager.

# dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Sunod, idugang ang containerd.io package.

# dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

Uban niining duha ka mga pakete nga na-install, i-install ang pinakabag-o nga bersyon sa docker-ce.

# dnf install docker-ce

Pag-enable ug pagsugod sa serbisyo sa docker.

# systemctl enable docker
# systemctl start docker

Kinahanglan nimo nga idugang ang mga repositoryo sa Kubernetes nga mano-mano tungod kay wala kini na-pre-install sa CentOS 8.

# 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

Uban ang package repo nga andam na, mahimo nimong ipadayon ug i-install ang kubeadm.

# dnf install kubeadm -y 

Pagsugod ug pagpagana sa serbisyo.

# systemctl enable kubelet
# systemctl start kubelet

Nanginahanglan na kami sa timaan nga namugna sa kubeadm init, aron makaapil sa cluster. Mahimo nimong kopyahon ug idikit kini sa imong node-1 ug node-2 kung gikopya nimo kini bisan asa.

# kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf78

Sama sa gisugyot sa katapusang linya, balik sa imong master-node ug susiha kung ang worker node-1 ug worker node-2 miapil sa cluster gamit ang mosunod nga command.

# kubectl get nodes

Kung ang tanan nga mga lakang malampuson nga modagan, nan, kinahanglan nimo nga makita ang node-1 ug node-2 sa andam nga kahimtang sa master-node. Niini nga punto, malampuson ka nga nag-deploy sa usa ka Kubernetes cluster sa CentOS 8.

Girekomenda nga Basaha: Giunsa ang Pag-deploy sa Nginx sa usa ka Kubernetes Cluster

Ang cluster nga among gibuhat dinhi adunay usa ka Master node, ug sa ingon, kung ang Master node mapakyas, ang imong cluster mahimong mawad-an og data ug mahimong kinahanglan nga mugnaon pag-usab gikan sa wala.

Tungod niini nga hinungdan, girekomenda ko ang usa ka Highly Available nga setup.