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