Kubernetes H/A Cluster Kurulumu
Bir çok farklı şekilde Kubernetes cluster'ı kurup ayağa kaldırabiliriz. Bu yazımda basit şekilde kubespray ile bare matal Kubernetes H/A cluster kurulumundan bahsedeceğim.
Öncelikle localimize ansible kurulumu yapıyoruz. Kurulumları yapmak için bir management sunucusuda kullanabilirsiniz.
MacOS
# brew install ansible
Centos 7
# sudo yum -y install epel-release # sudo yum -y update # sudo yum install ansible
Debian
# deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main # sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 # sudo apt update # sudo apt install ansible
Ubuntu 18
# sudo apt-add-repository ppa:ansible/ansible # sudo apt update # sudo apt install ansible
Ansible kurulumu bitti şimdi cluster için 5 tane vm kuruyoruz. Öneri centos veya debian güncel sürümleri ve high availability için 3 master - (min) 2 worker node. Sonrasında bu sunuculara statik ip veriyoruz. Sunucular üzerinde manuel başka bir ayar yapmadan ansible ile otomatik kuruluma geçiyoruz.
Kubespray ile master nodelarımızın önüne external loadbalancer koyarak kurulumumuza devam edeceğiz, bu şart değil. Eğer koymazsak kubespray bizim için master nodelarımıza nginx proxy koymaktadır.
Örnek enviroment:
LoadBalancer - 192.168.4.62 (Master node'lar arasında load balance yapıyoruz.)
Master1 - 192.168.4.63
Master2 - 192.168.4.64
Master3 - 192.168.4.65
Worker1 - 192.168.4.66
Worker2 - 192.168.4.67
SSH Key'imiz yoksa aşağıdaki komut ile oluşturuyoruz.
# ssh-keygen
Master ve worker nodelara ssh-key'imizi kopyalıyoruz.
# ssh-copy-id 192.168.4.6X
Loadbalancer için 192.168.4.62 sunucumuza HAProxy kuruyoruz.
Centos 7
# yum install haproxy # systemctl enable haproxy # systemctl start haproxy
Debian
# sudo apt -y install haproxy # systemctl enable haproxy # systemctl start haproxy
HAProxy conf'a aşağıdaki satırları giriyoruz.
# vim /etc/haproxy/haproxy.cfg ### listen kubernetes-apiserver-https bind :8383 mode tcp option log-health-checks timeout client 3h timeout server 3h server master1 192.168.4.63:6443 check check-ssl verify none inter 10000 server master2 192.168.4.64:6443 check check-ssl verify none inter 10000 server master3 192.168.4.65:6443 check check-ssl verify none inter 10000 balance roundrobin ###
Loadbalancer kurulumu bitti şimdi localimize gitten kubespray'i çekiyoruz.
# git clone https://github.com/kubernetes-sigs/kubespray
Gerekli python dependencilerini yüklüyoruz.
# sudo pip3 install -r requirements.txt
Cluster için inventory kopyalıyoruz.
# cp -rfp inventory/sample inventory/mycluster
Ansible inventorymize kurulum yapacağımız ip adreslerini ekliyoruz.
# declare -a IPS=(192.168.4.63 192.168.4.64 192.168.4.65 192.168.4.66 192.168.4.67)
Config file oluşturuyoruz.
# CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
Oluşturulan host.yml'ı düzenliyoruz. Örnek aşağıdaki gibidir.
# vim inventory/mycluster/hosts.yaml ### hosts: master1: ansible_host: 192.168.4.63 ip: 192.168.4.63 access_ip: 192.168.4.63 master2: ansible_host: 192.168.4.64 ip: 192.168.4.64 access_ip: 192.168.4.64 master3: ansible_host: 192.168.4.65 ip: 192.168.4.65 access_ip: 192.168.4.65 worker1: ansible_host: 192.168.4.66 ip: 192.168.4.66 access_ip: 192.168.4.66 worker2: ansible_host: 192.168.4.67 ip: 192.168.4.67 access_ip: 192.168.4.67 children: kube-master: hosts: master1: master2: master3: kube-node: hosts: worker1: worker2: etcd: hosts: master1: master2: master3: k8s-cluster: children: kube-master: kube-node: calico-rr: hosts: {} ###
Bu configden yola çıkarak, master 1,2,3 isimli nodelarımızı etcd içinde bulunduran control plane olarak kullanacağımızı ve sadece worker rolünde 2 adet node'umuz olacağınız söyleyebiliriz.
Group vars'a loadbalancer bilgilerimizi ekliyoruz.
# vim inventory/mycluster/group_vars/all/all.yml ##### apiserver_loadbalancer_domain_name: "192.168.4.62" loadbalancer_apiserver: address: 192.168.4.62 port: 8383 #####
En son ansible ile kurulum komutu gönderiyoruz.
# ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
Kube config'i kopyalıyoruz.
# scp 192.168.4.63:/etc/kubernetes/admin.conf ~/.kube/config
Cluster'da nodeları listeliyoruz. Kurulum başarılı.
# kubectl get node
Kubespray ile Kubernetes H/A Cluster Kurulumu bu kadar. Sonrasında ingress controller kurulumu yapmak için Nginx Ingress Controller kurulumu başlıklı makalemizi inceleyebilirsiniz.
Hola! Ben Ali. Hepsiburada’da DevOps Engineer olarak çalışmaktayım. Microservis mimarisine özgü altyapı tasarlamayı, kurmayı ve operasyonel süreçlerini yönetmeyi seviyorum. Ayrıca şu sıralar GO Lang öğrenmek için de emeklemekteyim.
Yorum Yapın