Kubespray Install for K8s Cluster
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
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
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
Kaynaklar
- Kubernetes
- Kubespray
Uğur Duran
Devops Engineer
#workfordreamseries