Kubespray Install for K8s Cluster

Uğur Duran
3 min readDec 22, 2022

--

k8s & kubespray

Selamlar , ben Uğur . Bugün sizlere workfordreamseries dokuzuncu sayısında kubespray ile k8s ( 1 master 2 worker node ) sunucuya cluster kurulumu, upgrade ve troubleshooting konusunu hakkında kalemi elime alıyorum.

Tüm Sunuculardaki Ön Gereksinimler

Sunucuların Birbirini Görmesi

Cluster node’larının birbirlerine ulaşabilir durumda olmaları gerekmektedir.

Firewal Yapılandırması

Cluster içi ve dışı iletişimin kesintiye uğramaması adına Cluster üyesi node’larda Firewall’un yapılandırılması ve gerekli izinlerin verilmesi gerekmektedir. Bunun için Master sunucuda aşağıdaki komutlar çalıştırılır;

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

Master dışındaki sunucularda firewall yapılandırması içi aşağıdaki komutlar çalıştırılır;

firewall-cmd — permanent — add-port=10250/tcp
firewall-cmd — permanent — add-port=10255/tcp
firewall-cmd — permanent — add-port=30000–32767/tcp
firewall-cmd — permanent — add-port=6783/tcp
firewall-cmd — reload

Bu firewall yapılandırmalarına alternatif olarak Cluster üyelerinin tamamında aşağıdaki komutlar yardımıyla firewall tamamen kapatılabilir;

systemctl stop firewalld
systemctl disable firewalld

k8s architecture

Kurulumu Gerçekleştirecek Sunucu Ön Gereksinimleri

Kubespray’in çalışacağı sunucuda aşağıdaki adımlar takip edilmelidir. Kubespray tamamen ayrı bir sunucuda ya da Kubernetes Cluster üyelerinden birisi üzerinde (tercihen bir master sunucuda) çalıştırılabilir.

Şifresiz SSH Yapılandırması

Tüm sunucular için kurulumu yapacak kullanıcı olan root kullanıcısının şifresiz SSH yapabilmesi için gerekli yapılandırma gerçekleştirilir. Kurulumların root kullanıcısı ile gerçekleştirilmesi bir zorunluluk değildir. Farklı bir kullanıcı oluşturularak işlem yapılabilir. Bu durumda makalenin devamındaki komutların oluşturulan bu kullanıcı ile çalıştırılması gerekmektedir. root kullanıcından farklı senaryolarda pek çok komut sudo ile çalıştırılmalıdır.

$ sudo su
$ ssh-keygen -t rsa

ssh key tüm sunuculara kopyalanır;

$ ssh-copy-id root@[SUNUCU_IP1]
$ ssh-copy-id root@[SUNUCU_IP2]
$ ssh-copy-id root@[SUNUCU_IP3]

Python Kurulumu

Aşağıdaki komutlar çalıştırılarak tüm sunuculara python kurulumu yapılır;

$ yum install -y epel-release
$ yum install –y python36 python36-devel python36-pip
$ pip3 install — upgrade pip
$ apt-get install -y python3-pip

Kubespray Kurulumu

Kubespray projesini repodan clone yapalım.

$ git clone https://github.com/kubernetes-incubator/kubespray.git

Kubespray reposundaki requirements.txt içerisinde belirtilen bağımlılıkların kurulumu gerçekleştirelim

$ pip3 install -r requirements.txt

Repo içerisinde gelen örnek envanter bilgileri kopyalanıyor. Burada kendi envanter bilgilerimizi yaratmamız gerekiyor.

$ cp -rfp inventory/sample inventory/duran-cluster

Master ve Worker IP adresleri bir değişkene atanıyor.

$ declare -a IPS=(MASTER_SUNUCU_IP1 WORKER_SUNUCU_IP2 WORKER_SUNUCU_IP3)

İlgili ip bilgileri hosts.yaml dosyasına yazılıyor.

$ CONFIG_FILE=inventory/duran-cluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}

Sunucu bilgilerini düzenlemek isterseniz.

$ nano inventory/duran-cluster/hosts.yaml

/inventory/duran-cluster/hosts.yaml

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–25 dakika sürebilir.

ansible-playbook -i inventory/duran-cluster/hosts.yaml --become --become-user=root cluster.yml

Evet :) yükleme tamamlandıktan sonra kubernetes ortamımız hazır hale geliyor MASTER_NODE ‘a ssh yaparak node’ları görüntüleyebilirsiniz.

$ kubectl get nodes -o wide

kubectl get node -o wide

Kaynaklar
-
Kubernetes
-
Kubespray

Uğur Duran
Devops Engineer
#workfordreamseries

--

--