H. Alperen Selcuk
3 min readOct 28, 2021

Create Kubernetes Cluster with Ansible

bu yazımda kubeadm kullanarak ansible playbook ları ile kubernetes cluster kurulmasını göstereceğim.

öncelikle hard-way kubernetes cluster kuracağız bunun için 1 master ve 1 worker ve 1 adet ansible host 3 adet sunucu ihtiyacımız var. google cloud platform üzerinde bu sunucuları açtım.

istediğiniz platformda kullanabilirsiniz ama master için en az 2CPU, 2GB RAM gerekmektedir.

ansible ilk kurulum ve ssh host key paylaşımı için aşağıdaki yazımı okuyabilirsiniz.

ben kurulumlar yapılmış ve ansible host k8s sunucularına erişiyor olarak kuruluma devam edeceğim. bir adet hosts.ini dosyası yapacağım inventory için. /etc/hosts üzerinde master ve worker için IP adresleri girdim.

[k8s:children]
masters
workers
[masters]
master
[workers]
worker

aşağıdaki şekilde ping-pong cevabını almanız gerekmekte.

bir playbook ile kuberentes için ilk gerekli dependencies leri kuracağız.

bu playbook normal bir kubernetes dependenciesleri neyse onları yaml formatında yapmakta, yani;

  • sunucular için container runtime olarak docker çalıştırıcak.
  • swap ı disable edecek.
  • kubernetes indirme URL yum repoya eklenecek.
  • kubelet ve kubeadm yüklenecek.
  • son adımda API ye erişmesi için sadece masterakubectl yüklenecek.
ansible-playbook kubernetes-dep.yml -i hosts.ini

çalıştırarak ilk yüklenmesi gerekenleri yüklüyoruz.

bütün gerekli paketleri kurmuş olduk. bundan sonra master ve worker olarak ayrı playbook çalıştıracağız.
(arada gördüğünüz warning selinux disable nin reboot sonrası aktif olcağını belirtiyor bunu imperative bir şekilde de yapabiliriz. bunun ad-hoc komutu biraz farklı non-root oldugumuz için şu şekilde yapılacak.

ansible k8s -i hosts.ini -b -B 1 -P 0 -m shell -a "sleep 5 && reboot"

master kurmak için kubeadm komutu ile başlatmamı gerekiyor. bu yğzden yaml file da ilk onunla başlayacağız. en sonda da pod networkü için calico kullanacağım bunu githubdan direk çekicem isterseniz flannel da kullanabilirsiniz.

bu file ı da çalıştıralım.

ansible-playbook kubernetes-master.yml -i hosts.ini

istersek imperative şekilde master üzerinde kontrol yapabiliriz.

[ansadmin@ansible ~]$ ansible masters -m shell -a "kubectl version" -i hosts.ini master | FAILED | rc=1 >>Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.3", GitCommit:"c92036820499fedefec0f847e2054d824aea6cd1", GitTreeState:"clean", BuildDate:"2021-10-27T18:41:28Z", GoVersion:"go1.16.9", Compiler:"gc", Platform:"linux/amd64"}The connection to the server localhost:8080 was refused - did you specify the right host or port?non-zero return code[ansadmin@ansible ~]$

kubectl yüklenmiş durumda.

worker ı da clustera da dahil ettiğimize göre hızlıca nodeların durumuna bakalım.

!! ansible üzerinden kubectl i ad-hoc çalıştırmak için oluşturudunuz user a config file ı tanıtmanız gerek.

çalıştırdıktan sonra ad-hoc şekilde master ı sorgulayabilirsiniz.

3 tane yaml file ile cluster kurmuş olduk bunu daha spesifikleştirerek daha ayrıntılı bir şekilde yapabilirsiniz.

umarım faydalı olmuştur, görüşmek üzere.

h.a.s.

..

https://github.com/alperen-selcuk/kubernetes-ansible

anlatımda kullanılan kaynakların düzenli haline repodan erişebilirsiniz.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

No responses yet

Write a response