7 Adımda Kubernetes Cluster Kurulumu
Kubernetes cluster’ı kurulumu ile ilgili epeyce doküman var. Fakat bana göre en basit ve akılda kalıcı olan Kubespray ile kurulumdan bahsetmek istiyorum.

Kubespray, çok sayıda işletim sistemi desteğine sahip. Yapılandırma konusunda da tek satır değiştirip, bileşenleri aktifleştirmenizi sağlıyor. Bu özellikleri de iş yükünü baya azaltıyor.
Projenin Github linkini buraya bırakıyorum:
GitHub - kubernetes-sigs/kubespray: Deploy a Production Ready Kubernetes Cluster
Kubespray, Ansible ile oluşturulmuş bir proje olduğu için bilgisayarınızda kurulu olması gereken bazı uygulamalar var. Bunlar; SSH, Ansible, Git ve Python.
Hazırlık
- Öncelikle Kubespray projesini git ile indiriyoruz:
~$ git clone --depth 1 git@github.com:kubernetes-sigs/kubespray.git
Cloning into 'kubespray'...
remote: Enumerating objects: 1417, done.
remote: Counting objects: 100% (1417/1417), done.
remote: Compressing objects: 100% (1091/1091), done.
remote: Total 1417 (delta 138), reused 906 (delta 93), pack-reused 0
Receiving objects: 100% (1417/1417), 1.02 MiB | 485.00 KiB/s, done.
Resolving deltas: 100% (138/138), done.
— depth 1 parametresi ile tüm git tarihçesinden vazgeçip, sadece son commit’i dahil etmesini belirterek, indirmede biraz hız kazandık.
2. kubespray dizinine girip, bağımlılıkları sistemimize eklememiz gerekiyor:
~/kubespray$ sudo pip3 install -r requirements.txt
...
Installing collected packages: ...
Running setup.py install for ...
Successfully installed ...
Eğer Python 2 kullanıyorsanız, pip3 yerine pip yazmalısınız.
3. inventory klasörü altındaki sample isimli klasörü, tercih edeceğimiz bir isim ile kopyalıyoruz.
~/kubespray$ cp -rfp inventory/sample inventory/test
Kurulum yapacağınız sunuculara ssh ile bağlantı sağlayabiliyor olmanız lazım. Farazi olarak elimde, aşağıdaki gibi 3 adet sunucum olduğunu varsayıp, devam ediyorum.
Name | Private IP | Public IP | Type
-----------------------------------------
Node1 | 10.10.10.1 | 91.91.91.91 | Master
Node2 | 10.10.10.2 | 92.92.92.92 | Worker
Node3 | 10.10.10.3 | 93.93.93.93 | Worker
Eğer güvenlik duvarı kullanılıyorsa, aşağıdaki portlar açık olmalıdır.
#Master
6443/tcp
2379-2380/tcp
10250/tcp
10251/tcp
10252/tcp
10255/tcp
#Worker
10250/tcp
10255/tcp
30000-32767/tcp
6783/tcp
Buradan sonrasında dokümanlarındaki gibi de devam edebilirsiniz, fakat ben biraz daha akılda kalıcı olması sebebi ile diğer yöntem ile devam edeceğim.
https://github.com/kubernetes-sigs/kubespray#usage
Kurulum
4. Kopyaladığımız klasör içerisinde, inventory.ini dosyasında aşağıdaki gibi bir içerik bizi bekliyor.
Tam olarakinventory/test/inventory.ini dosyasından bahsediyorum.
[all]
# node1 ansible_host=95.54.0.12 # ip=10.3.0.1 etcd_member_name=etcd1
# node2 ansible_host=95.54.0.13 # ip=10.3.0.2 etcd_member_name=etcd2
# node3 ansible_host=95.54.0.14 # ip=10.3.0.3 etcd_member_name=etcd3
...
[kube-master]
# node1
...
[kube-node]
#node1
#node2
...
[all] kısmına tüm sunucularımızı tanımlıyoruz. ansible_host parametresine, bilgisayarımız üzerinden sunucuya erişebildiğimiz IP adresini, ip parametresine ise sunucuların birbirlerine erişebilecekleri IP adresini yazmamız gerekiyor.
[kube-master] kısmında master olarak belirlediğimiz sunucunun adınını yorum olmaktan çıkartıyoruz.
[kube-node] kısmında ise worker olarak çalışacak sunucularımızı aynı şekilde tanımlıyoruz.
Eğer master sunucumuzu ek olarak da worker olarak çalıştırmak istersek, adını [kube-node] kısmına da tanımlamalıyız.
[etcd] kısmında ise şimdilik sadece node1 yazması yeterli
inventory.ini dosyasının son hali aşağıdaki gibi olacaktır.
5. Ekstra ayarlar için ise aşağıdaki iki dosya üzerinde değişiklikler yapabiliriz.
inventory/test/group_vars/all/all.yml
inventory/test/group_vars/k8s-cluster/k8s-cluster.yml
Örnek olarak Nginx Controller kurmaktan, Helm’e, Proxy tanımlamaktan, Metric Server’a kadar çok sayıda parametre ile oynayabiliyoruz.
6. Artık hazırız. Son olarak aşağıdaki komutu çalıştırdığımız anda, kurulum işlemi başlamış olacaktır. Yaklaşık 20–30 dakika sürebilir.
~/kubespray$ ansible-playbook -i inventory/test/inventory.ini --become cluster.yml
7. Master sunucuya, örneğimizde node1, SSH ile bağlanıp kubectl komutu ile kullanmaya başlayabiliriz. Muhtemel aşağıdaki hatayı alacaksınız. kubectl için yapılandırmayı daha yapmadık.
$ kubectl get pods
The connection to the server localhost:8080 was refused - did you specify the right host or port?
/etc/kubernetes/admin.conf dosyasını ~/.kube/config içerisine kopyalanması gerekiyor.
$ mkdir ~/.kube
$ sudo cp /etc/kubernetes/admin.conf ~/.kube/config
$ sudo chown $USER:$USER ~/.kube/config
Artık kullanabiliriz:
$ kubectl create deployment hello --image=hello-world
deployment.apps/hello created
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-67d96bb797-lz8xf 1/1 Running 0 1d
Sonuç
Kubernetes bu sıralar baya bir popüler, herkes uygulamalarını mikroservis mimarisinde yazıp, ölçeklemek istiyor. Doğal olarak bulut üzerinden hizmet alma imkanı yoksa, kurmayı da bilmek gerekiyor. Faydalı olması dileğiyle.
Yazı ile ilgili eleştirilerinizi yorum olarak geri bildirimde bulunabilirsiniz.
Read the original post on: 7 Adımda Kubernetes Cluster Kurulumu