RKE (Rancher Kubernetes Engine)+ Vagrant + Shell Script Kubernetes Cluster Kurulumu

Yunus YAŞAR
4 min readApr 25, 2021

--

An IBM 704 computer at NACA in 1957

Rancher Nedir?

Rancher açık kaynak kodlu olarak başlayan ve CNCF tarafından onaylanan bir projedir. Arka planda Kubernetes’ı kullanarak konteyner orkestrasyonu sağlar. Rancher farklı orkestratörle çalışmak için yaratıldı aynı zamanda kendi orkestratörülerini de yazdılar ve Cattle olarak isimlendirler. Rancher, bir koyteyner yönetim aracı olan Kubernetes’ı daha yönetilebilir ve anlaşılabilir hale getirdi. Aslında Kubernetes’ı end-user seviyesine getirdi.

Konteyner evreninde oldukça karmaşık bir hale gelen ağ yönetimi, auto-scaler, storage vb. sorunlar için çözümleri tek bir çatı altında toplayan ve oldukça basitleştiren açık kaynak kodlu bir konteyner orkestrasyon servisidir Rancher.

Rancher yardımı ile birden fazla Kubernetes clusterını tek bir yerden yönetebilirsiniz. Herhangi bir provider (GCP,Azure,AWS,Digital Ocean, Bare-Metal vb.) üzerinde çalışan clusterınızı Rancher’a import edip yönetebilirisiniz. Yanı zamanda Rancher’ı kullanarak bu providerlar üzerinde yeni bir cluster oluşturabilirsiniz.

Rancher, yönettiğiniz cluster/clusterlarınızın monitoring, logging işlemlerini tek bir yerden kolayca yönetmenizi sağlar. Prometheus, Alertmanager, Grafana, Kibana, Elasticsearh ve Fluentbit gibi toolları çok kolayca kurabilir ve kendi ihtiyaçlarınıza göre özelleştirebilirsiniz.

Rancher Kubernetes Engine (RKE) Nedir?

Rancher Kubernetes Engine (RKE), Bare-Meta veya sanal sunucular (virtual machine) üzerinde çalışan Docker servisine deploy edebileceğiniz CNCF sertifikalı bir Kubernetes dağıtımıdır. Kurulum için sadece target makinalarınızda Docker kurulu olması yeterlidir. Tabi ki de Rancher sizin için Docker kurulumunu da otomatize edecek bir script sunuyor. Buna yazının ilerleyen kısımlarında değineceğiz.

RKE, Comminty tarafından sunuculan karmaşık Kubernetes Cluster kurulumu işlemini basitleştirip otomatize eden çözümlerden bir tanesidir. Diğer çözümlerden biri olan Kubespray yazısına şuradan ulaşabirsiniz:

Vagrant Nedir?

Vagrant, HashiCorp tarafından üretilen çeşitli sanallaştırma providerları ( Kvm/Libvirt,Virtualbox,Hyper-V, Docker, VMware vb. ) ile kullanabileceğimiz hızlıca makina yaratmamızı sağlayan açık kaynak kodlu bir araçtır. Vagrant-Cloud’tan ihtiyacağımız olan makinayı indirebilir ya da kendimiz bir makina yaratıp Vagrant-Cloud’a ekleyebilirsiniz.

Cluster Kurulumu:

Vagrant Kurulumu on Ubuntu:

Clusterımızı ayağa kaldıracağımız fiziksel sunucu Ubuntu/18.04.5 LTS (Bionic Beaver) olduğu için burada Vagrant kurulumu yapalım:

$ wget https://releases.hashicorp.com/vagrant/2.2.15/vagrant_2.2.15_linux_amd64.zip
$ unzip vagrant_2.2.15_linux_amd64.zip
Archive: vagrant_2.2.15_linux_amd64.zip
inflating: vagrant
$ sudo mv vagrant /usr/local/bin/
$ sudo chmod +x /usr/local/bin/vagrant
$ vagrant -v
Vagrant 2.2.15

Vagrant kurulumu tamamlandıktan sonra bizim hazırladığımız repositoryi indirip Vagrantfile’lar yardımıyla cluster için kullanacağımız makinaları ayağa kaldırıp gerekli kurulumları yapalım.

$ git clone https://github.com/yikiksistemci/medium-rke-cluster.git
$ cd medium-rke-cluster
$ medium-rke-cluster git:(main) ls -al
total 76
drwxrwxr-x 8 yyyasar yyyasar 4096 Apr 25 20:49 .
drwxr-xr-x 38 yyyasar yyyasar 4096 Apr 25 20:50 ..
drwxrwxr-x 8 yyyasar yyyasar 4096 Apr 25 20:49 .git
-rw-rw-r-- 1 yyyasar yyyasar 9 Apr 25 20:49 .gitignore
-rw-rw-r-- 1 yyyasar yyyasar 35149 Apr 25 20:49 LICENSE
drwxrwxr-x 2 yyyasar yyyasar 4096 Apr 25 20:49 MasterNode01
-rw-rw-r-- 1 yyyasar yyyasar 14 Apr 25 20:49 README.md
drwxrwxr-x 2 yyyasar yyyasar 4096 Apr 25 20:49 WorkerNode01
drwxrwxr-x 2 yyyasar yyyasar 4096 Apr 25 20:49 WorkerNode02
drwxrwxr-x 2 yyyasar yyyasar 4096 Apr 25 20:49 doc
drwxrwxr-x 2 yyyasar yyyasar 4096 Apr 25 20:49 files

Vagrant ile makinaları ayağı kaldırmadan önce RKE binary kurulumu yapalım fiziksel cihazımız üzerine:

Yardımcı link: https://rancher.com/docs/rke/latest/en/installation/#download-the-rke-binary

$ wget https://github.com/rancher/rke/releases/download/v1.1.15/rke_linux-amd64
$ sudo mv rke_linux-amd64 /usr/local/bin/rke
$ sudo chmod +x /usr/local/bin/rke
$ rke -v
rke version v1.1.15

Şimdi Vagrant ile kullanacağımız makinaları ayağa kaldıralım:

Diğer iki Worker node’u aynı şekilde ayağa kaldıralım. Qemu-Kvm ile bu makinaların çalıştığını kontrol edelim.

$ sudo virsh listId    Name                           State
----------------------------------------------------
14 MasterNode01_default running
15 WorkerNode01_default running
16 WorkerNode02_default running

Makinalar ayağa kalktıktan sonra RKE ile cluster.yml dosyamızı oluşturalım ve makina tanımlarımızı ekleyelim.

Daha sonra “rke up” komutu ile cluster kurulumunu başlatalım.

$ rke up                                                                                                                                                                                             (docker-desktop/default)
INFO[0000] Running RKE version: v1.1.15
INFO[0000] Initiating Kubernetes cluster
INFO[0000] [dialer] Setup tunnel for host [192.168.1.21]
INFO[0000] [dialer] Setup tunnel for host [192.168.1.22]
INFO[0000] [dialer] Setup tunnel for host [192.168.1.23]
INFO[0000] Checking if container [cluster-state-deployer] is running on host [192.168.1.21], try #1
INFO[0000] Pulling image [rancher/rke-tools:v0.1.72] on host [192.168.1.21], try #1
INFO[0011] Image [rancher/rke-tools:v0.1.72] exists on host [192.168.1.21]
INFO[0015] Starting container [cluster-state-deployer] on host [192.168.1.21], try #1
INFO[0015] [state] Successfully started [cluster-state-deployer] container on host [192.168.1.21]
INFO[0015] Checking if container [cluster-state-deployer] is running on host [192.168.1.22], try #1
INFO[0015] Pulling image [rancher/rke-tools:v0.1.72] on host [192.168.1.22], try #1
INFO[0027] Image [rancher/rke-tools:v0.1.72] exists on host [192.168.1.22]
INFO[0027] Starting container [cluster-state-deployer] on host [192.168.1.22], try #1
INFO[0028] [state] Successfully started [cluster-state-deployer] container on host [192.168.1.22]
INFO[0028] Checking if container [cluster-state-deployer] is running on host [192.168.1.23], try #1
INFO[0028] Pulling image [rancher/rke-tools:v0.1.72] on host [192.168.1.23], try #1
INFO[0040] Image [rancher/rke-tools:v0.1.72] exists on host [192.168.1.23]
INFO[0042] Starting container [cluster-state-deployer] on host [192.168.1.23], try #1
INFO[0042] [state] Successfully started [cluster-state-deployer] container on host [192.168.1.23]
INFO[0042] [certificates] Generating CA kubernetes certificates
INFO[0043] [certificates] Generating Kubernetes API server aggregation layer requestheader client CA certificates
INFO[0043] [certificates] GenerateServingCertificate is disabled, checking if there are unused kubelet certificates

Kurulum tamamlandıktan config dosyasını “.kube/config” altına kopyalayalım ve cluster state’ine bakalım.

$ cp kube_config_cluster.yml ~/.kube/config
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master01 Ready controlplane,etcd,worker 19h v1.18.16
worker01 Ready etcd,worker 19h v1.18.16
worker02 Ready etcd,worker 19h v1.18.16

İyi okumalar …

Suzan Özgür — DevOps Engineer <suzan.ozgr@outlook.com>

Yunus YAŞAR — GNU/Linux Sytem Administrator <yunus.yasar@pm.me>

--

--