Kubernetes: Çok Birimli Kubernetes Kümesi Nasıl Kurulur

 

Kubernetes (genellikle K8s olarak kısaltılır), konteynerleştirilmiş uygulamaların dağıtımını, yönetimini ve ölçeklenmesini otomatikleştirmek için tasarlanmış açık kaynaklı bir platformdur. Daha basit bir ifadeyle, Linux konteyner ana bilgisayarlarını kümelere gruplamanıza ve bunları yönetme zahmetini ortadan kaldırmanıza olanak tanır.

Ön koşullar

Bu kurulum için, AWS hesabında üç EC2 örneği başlattım, hepsi Ubuntu çalıştırıyor ve t3.medium örnek türünü kullanıyor. Plan şu şekilde:

  • Bir örnek Kubernetes kontrol düzlemi olarak hizmet verecek.
  • Diğer ikisi ise container’larımızın çalışacağı işçi düğümleri olarak görev yapacak.

AWS anahtar çiftinizin (örneğin, your-key.pem) SSH erişimine hazır olduğundan emin olun.

Adım 1: Sunucu Adlarını ve Ağ Yapılandırmasını Ayarlayın

Öncelikle, örnekleri düzgün bir şekilde iletişim kurabilecekleri şekilde yapılandırmamız gerekiyor. Ana bilgisayar adlarını ayarlayarak ve ağ ayarlarını güncelleyerek başlayalım.

1.1 Her Sunucuya SSH Erişimi

Her EC2 örneğine SSH kullanarak bağlanın. <instance-ip>’yi her örneğin genel IP’siyle değiştirin:

ssh -i your-key.pem ubuntu@<instance-ip>

Bunu üç düğüm için de tekrarlayın.

1.2 Sunucu Adlarını Ayarlayın

Her düğüme kolayca tanımlanabilmeleri için benzersiz bir ana bilgisayar adı atayın.

  • Kontrol Düzlemi:
    sudo hostnamectl set-hostname k8s-control-plane
  • İşçi Düğümü 1:
    sudo hostnamectl set-hostname k8s-worker-1
  • İşçi Düğümü 2:
    sudo hostnamectl set-hostname k8s-worker-2

Bu komutları ilgili düğümlerde çalıştırın.

1.3 Hosts Dosyasını Güncelleyin

Düğümlerin ana bilgisayar adlarını kullanarak iletişim kurabilmelerini sağlamak için, /etc/hosts dosyasını üç örnekte de güncelleyin. Dosyayı şu şekilde açın:

sudo nano /etc/hosts

Aşağıdaki satırları ekleyin ve IP adreslerini EC2 örneklerinizin özel IP adresleriyle değiştirin:


192.168.1.100  k8s-control-plane
192.168.1.101  k8s-worker-1
192.168.1.102  k8s-worker-2

Kaydedin ve çıkın (Ctrl+O, Enter, Ctrl+X). Bunu her düğümde yapın.

Adım 2: Docker ve Kubernetes Bileşenlerini Tüm Düğümlere Yükleyin

Şimdi, gerekli yazılımları üç node’a da yükleyelim. Konteyner çalışma zamanı için Docker’a ve kubeadm, kubelet ve kubectl gibi Kubernetes araçlarına ihtiyacımız olacak.

2.1 Paketleri Güncelleyin

Öncelikle paket listesini yenileyip mevcut paketleri güncelleyin:

sudo apt update && sudo apt upgrade -y

2.2 Bağımlılıkları Yükleyin

Güvenli indirmeler için gerekli bazı paketleri yükleyin:

sudo apt install -y apt-transport-https ca-certificates curl

2.3 Docker’ı Yükleyin

Ardından Docker’ı kurun ve otomatik olarak başladığından emin olun:

sudo apt install -y docker.io sudo systemctl enable docker sudo systemctl start docker

2.4 Kubernetes Bileşenlerini Kurun

Kubernetes deposunu ekleyin ve temel araçları yükleyin:

curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo systemctl enable kubelet

2.5 Swap’ı Devre Dışı Bırak

Kubernetes, takas etkinleştirildiğinde iyi çalışmaz, bu yüzden devre dışı bırakın:

sudo swapoff -a sudo sed -i '/ swap / s/^/#/' /etc/fstab

2.6 Ağ için Çekirdek Modüllerini Etkinleştirin

Çekirdeği Kubernetes ağını destekleyecek şekilde yapılandırın:

sudo modprobe br_netfilter echo 'br_netfilter' | sudo tee /etc/modules-load.d/br_netfilter.conf

Sysctl ayarlarını yapın:

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF

Değişiklikleri uygulayın:

sudo sysctl --system

2. Adımın tamamını her düğümde tekrarlayın.

Adım 3: Kontrol Düzlemini Başlatın

Şimdi kontrol düzlemini ayarlayalım. Bunu yalnızca k8s-control-plane düğümünde çalıştırın:

sudo kubeadm init --pod-network-cidr=192.168.0.0/16

Bu komut kontrol düzlemini başlatır ve pod ağını kurar. Tamamlandığında, çıktıda bir kubeadm join komutu göreceksiniz. Bunu güvenli bir yere kopyalayın; daha sonra işçi düğümlerini bağlamak için buna ihtiyacınız olacak.

3.1 Kontrol Düzleminde kubectl’i yapılandırın

Kümeyi yönetebilmek için kubectl’i ayarlayın:

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

Adım 4: Calico Network Eklentisini Yükleyin

Pod ağını etkinleştirmek için kontrol düzlemine Calico CNI eklentisini yükleyin:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

Tüm pod’ların çalıştığını kontrol edin:

kubectl get pods -n kube-system

Tüm pod’lar Çalışıyor durumunu gösterene kadar bekleyin.

Adım 5: İşçi Düğümlerini Dahil Edin

Çalışan düğümlerinize gidin (k8s-worker-1 ve k8s-worker-2). Adım 3’teki kubeadm join komutunu kullanın. Şuna benzer bir şey olacak:

sudo kubeadm join <control-plane-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

Eğer komutu kaybettiyseniz, kontrol düzleminde yeniden oluşturun:

kubeadm token create --print-join-command

Her iki çalışan düğümünde de birleştirme komutunu çalıştırın. Ardından, kontrol düzlemine geri dönün ve tüm düğümlerin bağlı olduğunu doğrulayın:

kubectl get nodes

Üç düğümün de Hazır durumunda olduğunu görmelisiniz.

Kubernetes List Available Nodes
Kubernetes Düğümleri Durumu

Adım 6: Bir Uygulamayı Dağıtın ve Ölçeklendirin

Küme üzerinde bir Nginx sunucusu dağıtarak kümeyi test edelim:

6.1 Nginx’i Yükleyin

Bir dağıtım oluşturun:

kubectl create deployment nginx --image=nginx

6.2 Nginx’i NodePort Hizmeti Olarak Oluşturma

Nginx’i erişilebilir hale getirin:

kubectl expose deployment nginx --type=NodePort --port=80

6.3 Servis Ayrıntılarını Kontrol Edin

Nginx’in çalıştığı portu bulun:

kubectl get svc nginx

6.4 Nginx’i 5 Pod’a Ölçeklendirin

Dağıtımı ölçeklendirin:

kubectl scale deployment nginx --replicas=5 kubectl get pods -o wide

Çalışan düğümleriniz arasında yayılmış üç Nginx pod’u görmelisiniz.

K8s Scale Pods
Kubernetes Ölçeklendirme Pod’ları

Adım 7: Bir Pod’u Silin

Bir pod’u silerek bir başarısızlığı simüle edin. İlk olarak, pod’ları listeleyin:

kubectl get pods -o wide

Sonra birini silin:

kubectl delete pod <pod-name>

Kubernetes, üç replikayı korumak için otomatik olarak yedek bir pod kuracaktır.

Son Doğrulama

Her şeyin çalıştığından emin olalım:

  • Küme düğümlerini kontrol edin:
    kubectl get nodes
  • Çalışan pod’ları kontrol edin:
    kubectl get pods -o wide
  • Nginx’i tarayıcınızdan erişerek test edin: http://<any-node-ip>:<nodeport>Replace <nodeport> with the port number from kubectl get svc nginx.

 

 

 

Yazının orijinalini buradan okuyabilirisniz.