Ubuntu 20.04 Kubernetes Kurulumu

Kubernetes kullanmak için kendi sunucularınızı (dedicated, vps vs.) kullanabileceğiniz gibi Amazon AWS, Azure veya Google Cloud ortamında bulunan Kubernetes servislerini de kullanabilirsiniz.

Bu makalede kendi sunucumuzda Kubernetes kurulumu yapılacaktır. İhtiyacımız olan 1 master ve 2 node olmak üzere toplamda 3 adet Ubuntu 20.04 sunucu.

Adım 1: Güncelleme

Sunucu paketlerini güncellemek ile işe başlıyoruz.

sudo apt-get update
sudo apt-get upgrade

Adım 2: Swap İptali

Kubernetes yapısının düzgün ve sorunsuz çalışabilmesi için swap diskinin iptal edilmesi gerekli.

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a

Adım 3: Docker Kurulumu

Docker yüklemesini yaparken, /etc/docker/daemon.json dosyasında systemd düzenlemesi yapılması gerekli.

sudo apt-get install docker.io
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

Adım 4: Kubernetes Yüklenmesi

Aşağıdaki komutları kullanarak Kubernetes uygulamaları yüklenir. Kubernetes versiyon geçişlerinde sorun yaşamamak için güncellemeleri kapatıyoruz.

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt-get install kubeadm kubelet kubectl
sudo apt-mark hold kubeadm kubelet kubectl

Systemd düzenlemesi için 10-kubeadm.conf dosyasında Environment satırlarının sonuna aşağıdaki satırın eklenmesi gerekli.

sudo nano /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Environment="cgroup-driver=systemd/cgroup-driver=cgroupfs"

Adım 5: Master Node

Bu adım sadece master node için gereklidir, diğer nodelar için bu adımı atlayınız. Kubeadmin ile gerekli olan düzenlemeler yapılacaktır.

pod-network parametresi ile Kubernetes podları arasındaki network bilgisi tanımlanır. IP bilgisini kendi yapınıza göre değiştirmelisiniz.

apiserver-advertise-address parametresi ile API server ip adresi belirtilir. Birden fazla ip adresi mevcut ise bu ip adreslerini de belirtilmesi gereklidir. Bu ip adresilerine göre sertifikalar oluşturulacaktır.

sudo kubeadm init --control-plane-endpoint=api.domain.com --pod-network-cidr=10.0.1.0/16

Kurulum işlemi biraz zaman alacaktır. İşlem sonunda belirtilen komut ile worker nodeların bağlantısı için token bilgisi verilecektir. Bu bilginin not edilmesi gereklidir.

kubeadm join 10.0.1.4:6443 --token TOKENBILGISI --discovery-token-ca-cert-hash sha256:TOKENBILGISI 

config düzenlemesini yapılır.

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

Kubernetes ağ yönetimi için weave kurulumu yaparak master node kurulumunu tamamlıyoruz.

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

Çalışan nodeları görmek için  kubectl get nodes komutunu kullanabilirsiniz.

 kubectl get nodes

kubectl get pods --all-namespaces komutunu kullanarak Kubernetes kurulumumuz hakkında bilgi alabiliriz. Tüm adımları doğru yaptıysanız tüm durumlarda Running yazısını görmelisiniz.

kubectl get pods --all-namespaces

İşlemler sırasında bir hata yaparsanız reset komutu ile işlemleri geri alabilirsiniz.

sudo kubeadm reset

Adım 6: Node Bağlantısı

Master node harici diğer nodeların kurulumu için ilk 4 adım aynen yapılmalıdır.

Bağlantı için daha önce bize bildirilen komutu kullanıyoruz.

kubeadm join 10.0.1.4:6443 --token TOKENBILGISI --discovery-token-ca-cert-hash sha256:TOKENBILGISI