CentOS 8'e Kubernetes Kümesi Nasıl Kurulur


CentOS 8'e Kubernetes Kümesi yükleme işlemi neredeyse CentOS 7'ninkine benzer (bu işlemi buradan yapabilirsiniz), ancak buradaki süreçte birkaç değişiklik var. Bu değişiklikler çoğunlukla Docker'ın kurulumuyla ilgilidir.

CentOS 8'den başlayarak (ve RHEL 8 uzantısına göre) docker'ın yerini artık yerel olarak podman ve < aldı. Redhat'in araçları olan Strong>buildah. Aslına bakılırsa docker paketi artık varsayılan paket deposundan kaldırılmıştır.

Redhat ekibi bu hamleyle, özel izinlere ihtiyaç duymadan konteyner oluşturma ve kullanma sürecini basitleştirmeyi, aynı zamanda docker görüntüleri ile uyumluluğu korumayı ve bunları bir arka plan programına ihtiyaç duymadan çalıştırmayı hedefliyor. Podman, Kubernetes ortamlarında çalışırken daha fazla esneklik sunmayı vaat ediyor, ancak jüri hala orada.

Bu makalede, Docker-CE (Topluluk) üzerinde çalışan bir CentOS 8 platformuna Kubernetes'i yükleme sürecini ele alacağız. Sürüm). Daha sonraki bir makalede, konteynerlerimiz için podman'i kullanarak benzer bir kurulum gerçekleştireceğiz.

Önkoşullar

  1. CentOS 8 çalıştıran üç sunucu: 1 Ana Düğüm ve 2 Çalışan Düğüm.
  2. Düğümlerinizin makine başına 2 GB veya daha fazla RAM'e sahip en az 2 CPU'ya sahip olması önerilir. Bu katı bir gereklilik değildir ancak büyük ölçüde çalıştırmayı düşündüğünüz uygulamanın gereksinimlerine göre belirlenir.
  3. Tüm düğümlerinizde İnternet bağlantısı. Depodan Kubernetes ve docker paketlerini getireceğiz. Aynı şekilde, DNF paket yöneticisinin varsayılan olarak kurulu olduğundan ve paketleri uzaktan alabildiğinden emin olmanız gerekir.
  4. Tüm düğümleriniz, hangisi mevcutsa, özel veya genel bir ağ üzerinden birbirine bağlanabilmelidir.
  5. Ayrıca sudo veya root ayrıcalıklarına sahip bir hesaba erişmeniz gerekecektir. Bu derste root hesabımı kullanacağım.

Önlem

Çoğu düğüm genellikle benzersiz MAC adresleriyle gelir, ancak bazı benzersiz durumlarda bazı Sanal Makineler aynı MAC adreslerine sahip olabilir. Bu nedenle Product_UUID ve MAC adresinin hiçbir düğümde aynı olmadığını doğrulamanız önerilir.

Kubernetes, kümedeki düğümleri benzersiz şekilde tanımlamak için bu değerleri kullanır. Bu değerler her düğüm için benzersiz değilse yükleme işlemi başarısız olabilir.

Ağ arayüzünün MAC adresini kontrol etmek ve karşılaştırmak için.

ip link

product_uuid'yi kontrol etmek ve karşılaştırmak için aşağıdaki komutu çalıştırın.

cat /sys/class/dmi/id/product_uuid 

Mantıksal Mimari

Kurulumumuz, Ana Düğümün'ün Çalışan Düğümleri'ni kontrol edeceği şekilde tasarlanmıştır. Bu kurulumun sonunda mantıksal mimarimiz şöyle görünecek.

Ana Düğüm – Bu makine genellikle kontrol düzlemi görevi görür ve küme veritabanını ve API sunucusunu (kubectl CLI'nin iletişim kurduğu) çalıştırır.

3 düğümlü Kubernetes Kümemiz şuna benzer:

Kubernetes Cluster'ın Master-Node'a Kurulumu

Kubernetes'in çalışması için bir kapsayıcıya taşıma motoruna ihtiyacınız olacak. Belirtildiği gibi Docker-CE'yi kullanacağız.

Aşağıdaki kurumlar CentOS 8 Master-Node üzerinde gerçekleştirilecektir.

Adım 1: Ana Bilgisayar Adı, Güvenlik Duvarı ve SELinux'u hazırlayın

CentOS 8 Ana Düğümünüzde, sistem ana bilgisayar adını ayarlayın ve /etc/hosts dosyanızda DNS'yi güncelleyin.

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

Ardından, ping komutunu kullanarak güncellenen ana makine dosyanızın düzgün çalışıp çalışmadığını kontrol etmek için işçi-düğümü-1 ve işçi-düğümü-2'nize ping atın.

ping 192.168.0.48
ping 192.168.0.49

Daha sonra, Selinux'u devre dışı bırakın; çünkü bu, kapsayıcıların, pod ağları ve diğer hizmetler için gerekli olan ana bilgisayar dosya sistemine erişmesine izin vermek için gereklidir.

setenforce 0

setenforce'u 0 olarak ayarlamak, SELinux'u etkili bir şekilde izin verilene ayarlar; bu, bir sonraki yeniden başlatmaya kadar SELinux'u etkili bir şekilde devre dışı bırakır. Tamamen devre dışı bırakmak için aşağıdaki komutu kullanın ve yeniden başlatın.

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

Kubernetes, iletişim ve erişim için çeşitli bağlantı noktalarından yararlanır ve bu bağlantı noktalarının Kubernetes tarafından erişilebilir olması ve güvenlik duvarı tarafından sınırlandırılmaması gerekir.

Bağlantı noktalarındaki güvenlik duvarı kurallarını yapılandırın.

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

Adım 2: Docker-CE'yi CentOS 8'e yükleyin

Artık varsayılan paket listesinde olmadığından, aşağıdaki dnf config-manager komutunu kullanarak öncelikle Docker deposunu eklemeniz gerekecektir.

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

Ayrıca, görüntü aktarımı ve depolamadan konteyner yürütme ve denetimine, düşük seviyeli depolamaya, ağ eklerine ve ötesine kadar ana bilgisayar sisteminin konteyner yaşam döngüsünün tamamını yöneten bir arka plan programı olarak kullanılabilen containerd.io paketini de yükleyin. .

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

Şimdi docker-ce paketinin en son sürümünü yükleyin.

dnf install docker-ce

Artık docker hizmetini etkinleştirebilir ve başlatabilirsiniz.

systemctl enable docker
systemctl start docker

3. Adım: Kubernetes'i (Kubeadm) CentOS 8'e yükleyin

Daha sonra, CentOS 8'de varsayılan olarak yüklü olarak gelmedikleri için Kubernetes depolarını manuel olarak eklemeniz gerekecektir.

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

Kubeadm, en iyi uygulamalara uygun, minimum geçerli Kubernetes kümesini önyüklemenize yardımcı olur. kubeadm ile kümenizin Kubernetes Uyumluluk testlerini geçmesi gerekir.

Kubeadm ayrıca yükseltme, düşürme ve önyükleme belirteçlerini yönetme gibi diğer küme yaşam döngüsü işlevlerini de destekler. Kubeadm ayrıca Ansible ve Terraform gibi diğer düzenleme araçlarıyla entegrasyon dostudur.

Paket deposu artık hazır olduğundan kubeadm paketini yükleyebilirsiniz.

dnf install kubeadm -y 

Kurulum başarıyla tamamlandığında hizmeti etkinleştirin ve başlatın.

systemctl enable kubelet
systemctl start kubelet

Adım 4: kubeadm ile bir kontrol düzlemi Master'ı oluşturun

Küme için kontrol düzlemi görevi gören Kubernetes yöneticisi, küme için gerekli olan birkaç kritik hizmeti çalıştırır. Bu nedenle başlatma süreci, makinenin Kubernetes'i çalıştırmaya hazır olduğundan emin olmak için bir dizi ön kontrol gerçekleştirecektir. Bu ön kontroller uyarıları ortaya çıkarır ve hata durumunda çıkış yapar. kubeadm init daha sonra küme kontrol düzlemi bileşenlerini indirip yükler.

Artık Kubernetes master'ı başlatmanın zamanı geldi, ancak bundan önce "kubeadm init" komutunu çalıştırmak için takası devre dışı bırakmalısınız.

swapoff -a

Kubernetes ana programının başlatılması, gösterildiği gibi "kubeadm init" komutu tarafından kontrol edilen tamamen otomatik bir işlemdir.

kubeadm init

Daha sonra, bu komutu daha sonra çalışan düğümlerde çalıştırmamız gerektiğinden, aşağıdaki komutu kopyalayın ve bir yere saklayın.

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

İpucu: Bazen yukarıdaki komut iletilen bağımsız değişkenlerle ilgili hatalara neden olabilir; bu nedenle hataları önlemek için '\' karakterini kaldırmanız gerekir ve son komutunuz şöyle görünecek.

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

Kubernetes başarıyla başlatıldıktan sonra kullanıcınızın kümeyi kullanmaya başlamasını etkinleştirmeniz gerekir. Senaryomuzda root kullanıcısını kullanacağız. Kümeyi gösterildiği gibi sudo kullanıcısını kullanarak da başlatabilirsiniz.

Root'u kullanmak için şunu çalıştırın:

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

Sudo özellikli bir kullanıcı kullanmak için şunu çalıştırın:

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

Şimdi kubectl komutunun etkinleştirildiğini doğrulayın.

kubectl get nodes

Şu anda ana düğümün durumunun 'Hazır Değil' olduğunu göreceksiniz. Bunun nedeni henüz pod ağını kümeye dağıtmamamızdır.

Pod Ağı, mevcut düğüm ağının üstüne dağıtılan küme için yer paylaşımlı ağdır. Pod genelinde bağlantıya izin verecek şekilde tasarlanmıştır.

Adım 5: Pod Ağınızı Kurun

Ağ kümesini dağıtmak, ihtiyaçlarınıza bağlı olarak son derece esnek bir süreçtir ve birçok seçenek mevcuttur. Kurulumumuzu olabildiğince basit tutmak istediğimiz için herhangi bir konfigürasyon veya ekstra kod gerektirmeyen ve kapsül başına bir IP adresi sağlayan Weavenet eklentisini kullanacağız, bu da bizim için harika. Daha fazla seçenek görmek istiyorsanız lütfen burayı kontrol edin.

Bu komutlar pod ağ kurulumunu almak için önemli olacaktır.

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

Şimdi ana düğümünüzün durumunu kontrol ederseniz "Hazır" olmalıdır.

kubectl get nodes

Daha sonra çalışan düğümleri kümeye ekliyoruz.

Kubernetes Kümesine Çalışan Düğümler Ekleme

Kubernetes kümesine katılırken her çalışan düğümde aşağıdaki talimatlar uygulanacaktır.

Adım 1: Ana Bilgisayar Adı, Güvenlik Duvarı ve SELinux'u hazırlayın

Öncelikle worker-node-1 ve worker-node-2'de ana makine adını ayarlayın ve ardından ana makine girişlerini /etc/hosts dosyasına ekleyin. > dosya.

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

Ardından, güncellenen ana makine dosyanızın düzgün çalıştığını doğrulamak için ping komutunu kullanarak çalışan düğümlerinizden ana düğümünüze ping işlemi uygulayın.

192.168.0.47

Daha sonra SElinux'u devre dışı bırakın ve güvenlik duvarı kurallarınızı güncelleyin.

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

2. Adım: Docker-CE ve Kubernetes Repo'yu kurun

Önce DNF yapılandırma yöneticisini kullanarak Docker deposunu ekleyin.

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

Daha sonra containerd.io paketini ekleyin.

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

Bu iki paket kuruluyken docker-ce'nin en son sürümünü yükleyin.

dnf install docker-ce

Docker hizmetini etkinleştirin ve başlatın.

systemctl enable docker
systemctl start docker

CentOS 8'de önceden yüklenmiş olarak gelmedikleri için Kubernetes depolarını manuel olarak eklemeniz gerekecektir.

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

Adım 3: Kubeadm'i CentOS 8'e yükleyin

Paket deposu artık hazır olduğundan kubeadm'i yükleyebilirsiniz.

dnf install kubeadm -y 

Hizmeti başlatın ve etkinleştirin.

systemctl enable kubelet
systemctl start kubelet

4. Adım: Çalışan Düğümünü Kubernetes Kümesine Katılın

Artık kümeye katılmak için kubeadm init'in oluşturduğu jetona ihtiyacımız var. Bir yere kopyaladıysanız, düğüm-1 ve düğüm-2'nize kopyalayıp yapıştırabilirsiniz.

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

Son satırda önerildiği gibi, ana düğümünüze geri dönün ve çalışan düğüm-1 ve çalışan düğüm-2'nin sisteme katılıp katılmadığını doğrulayın. Aşağıdaki komutu kullanarak kümeyi oluşturun.

kubectl get nodes

Tüm adımlar başarıyla yürütülürse, ana düğüm'de düğüm-1 ve düğüm-2'nin hazır durumda olduğunu görmelisiniz. Bu noktada artık bir Kubernetes kümesini CentOS 8'e başarıyla dağıttınız.

Önerilen Okuma: Kubernetes Kümesine Nginx Nasıl Dağıtılır

Bazı Sınırlamalar

Burada oluşturduğumuz kümenin tek bir Ana düğümü vardır ve bu nedenle Ana düğüm başarısız olursa kümeniz veri kaybedebilir ve sıfırdan yeniden oluşturulması gerekebilir.

Bu nedenle Yüksek Kullanılabilirlik kurulumunu öneriyorum.