DEV Community

Ali Orhun Akkirman for Açıklab

Posted on

RKE ile Kubernetes altyapısını hazırlama

RKE, Rancher Kubernetes Engine olarak, CNCF sertifikalı bir Kubernetes altyapısıdır. Özellikle Rancher Kubernetes yönetim sistemleri ile entegre çalışabilmesi nedeniyle tercih edilebilmektedir.

Temel kurulumlar

Kubectl kurulumu

Kubectl, Kubernetes ortamınıza bağlanabilmek ve Kubernetes ortamınızı yönetebilmek için gerekli olan bir cli aracıdır. Kurulumu ise oldukça basittir ve aşağıdaki gibidir.

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" -k chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl 
Enter fullscreen mode Exit fullscreen mode

Bu komutlarla birlikte artık kubectl komutunu kullanabilir durumda olacaksınız. Bu aracı kubernetes olmayan bir ortama da kolaylıkla kurup, kubeconfig yapılandırması yaparak uzaktaki bir kubernetes ortamına da bağlanıp, yönetebilirsiniz.

Kurulumu kontrol etmek için ise aşağıdaki komut çalıştırılır:

kubectl version --client --output=json 
Enter fullscreen mode Exit fullscreen mode

Bu komutun çıktısı ise aşağıdaki gibi ifadeleri içermektedir.

{ "clientVersion": { "major": "1", "minor": "27", "gitVersion": "v1.27.1", "gitCommit": "4c9411232e10168d7b050c49a1b59f6df9d7ea4b", "gitTreeState": "clean", "buildDate": "2023-04-14T13:21:19Z", "goVersion": "go1.20.3", "compiler": "gc", "platform": "linux/amd64" }, "kustomizeVersion": "v5.0.1" } 
Enter fullscreen mode Exit fullscreen mode

RKE kurulumu (yapılandırması değil)

RKE, başlıkta da belirttiğimiz gibi "Rancher Kubernetes Engine" ortamını hazırlayacak olan pakettir. Bir sonraki yazıda bu konuda örnek bir yapılandırma dosyası kullanılarak kubernetes kümesi ayağa kaldırılacaktır.

İlgili RKE paketinin kurulabilmesi için aşağıdaki komutlar kullanılabilir.

curl -fsSL -o rke_linux-amd64 -k https://github.com/rancher/rke/releases/download/v1.4.3/rke_linux-amd64 chmod +x rke_linux-amd64 sudo mv rke_linux-amd64 /usr/local/bin/rke 
Enter fullscreen mode Exit fullscreen mode

Bu komutla birlikte artık rke komut satırı kullanılabilir olacaktır. Versiyon bilgisini öğrenmek için ise aşağıdaki komut kullanılabilmektedir.

rke --version 
Enter fullscreen mode Exit fullscreen mode

İlgili komutun çıktısı da aşağıdaki gibidir.

rke version v1.4.3 
Enter fullscreen mode Exit fullscreen mode

Helm paket yöneticisinin kurulumu

Helm, Kubernetes ortamları için en çok kullanılan paket yöneticisidir. Helm Chartlar ile yüklemeler yapılabilmektedir. Kurulum için ise aşağıdaki komut tek başına kullanılabilir. Bu komut bir betik indirerek bu betiği çalıştırmaktadır.

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 -k chmod 700 get_helm.sh sudo bash get_helm.sh 
Enter fullscreen mode Exit fullscreen mode

Aynı zamanda eğer betik ,ndirmek yerine elle de yapılabilir. Üstteki komut yapılı ise diğeri yapılması gerekmemektedir.

wget https://get.helm.sh/helm-v3.11.2-linux-amd64.tar.gz --no-check-certificate tar xvf helm-v3.11.2-linux-amd64.tar.gz cd linux-amd64/ sudo mv helm /usr/local/bin/ sudo chmod +x /usr/local/bin/helm 
Enter fullscreen mode Exit fullscreen mode

Bu iki seçenek sonrasında helm cli uygulaması kurulmuş olacaktır. Sürüm kontrolü için aşağıdaki komut kullanılabilir:

helm version 
Enter fullscreen mode Exit fullscreen mode

Bu komutun çıktısı da aşağıdaki gibidir.

version.BuildInfo{Version:"v3.11.3", GitCommit:"323249351482b3bbfc9f5004f65d400aa70f9ae7", GitTreeState:"clean", GoVersion:"go1.20.3"} 
Enter fullscreen mode Exit fullscreen mode

Docker kurulumu

Kubernetes altyapısında Docker kullanmak istemeniz durumunda da aşağıdaki gibi kurulumları yapabilirsiniz.

curl https://releases.rancher.com/install-docker/20.10.sh -k | sudo bash - sudo systemctl enable --now docker 
Enter fullscreen mode Exit fullscreen mode

Kurulum sonrasında sürüm kontrolü için de aşağıdaki komut kullanılabilir:

sudo docker version --format '{{.Server.Version}}' 
Enter fullscreen mode Exit fullscreen mode

Çıktısı da aşağıdaki gibidir:

20.10.23 
Enter fullscreen mode Exit fullscreen mode

RKE kullanıcısı ayarları

Özellikle RKE node'larının birbiriyle konuşabilmesi için RKE kullanıcısı olması gerekmektedir. Bu kullanıcı oluşturmak için aşağıdaki gibi komutlar kullanılabilir.

sudo useradd -m rke sudo passwd rke sudo usermod -s /bin/bash rke sudo echo "rke ALL=(ALL:ALL) ALL" > /etc/sudoers.d/rke sudo usermod -aG docker rke 
Enter fullscreen mode Exit fullscreen mode

Bu komutlarla birlikte rke kullanıcısı ve parolası belirlenip, login olunduğunda bash ortamının açılması sağlanmaktadır. Ayrıca rke kullanıcısını sudo yetkisine sahip yapılması da çeşitli durumlarda faydalı olabilmektedir.

Temel yapılandırma ayarları

Öncelikle çeşitli modprobe seçeneklerini açmak için aşağıdaki komut kullanılabilmektedir.

for module in br_netfilter ip6_udp_tunnel ip_set ip_set_hash_ip ip_set_hash_net iptable_filter iptable_nat iptable_mangle iptable_raw nf_conntrack_netlink nf_conntrack nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat nf_nat_ipv4 nf_nat_masquerade_ipv4 nfnetlink udp_tunnel veth vxlan x_tables xt_addrtype xt_conntrack xt_comment xt_mark xt_multiport xt_nat xt_recent xt_set xt_statistic xt_tcpudp; do if ! lsmod | grep -q $module; then echo "module $module is not present"; sudo modprobe $module; fi; done 
Enter fullscreen mode Exit fullscreen mode

Bu ayarlar yapıldıktan sonra SWAP'in kapatılması önerilmektedir. Bunun için /etc/fstab dosyası içerisindeki swap bulunan satırın başına diyez "#" konularak kapatılması önerilmektedir.

#/swap.img none swap sw 0 0 
Enter fullscreen mode Exit fullscreen mode

Bu adımdan sonra aşağıdaki komutla da swap'in kapatılması verimli olacaktır.

sudo swapoff -a 
Enter fullscreen mode Exit fullscreen mode

Bunlar dışında ağ ayarları ile ilgili /etc/sysctl.d/99-kubernetes.conf dosyasında aşağıdaki 3 satır olacak şekilde kaydedilmesi doğru olacaktır.

net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 
Enter fullscreen mode Exit fullscreen mode

Bu dosya oluşturulduktan sonra aşağıdaki komut çalıştırılır.

sudo sysctl --system 
Enter fullscreen mode Exit fullscreen mode

Son söz

Bu adımlarla birlikte işletim sisteminin bir Kubernetes kümesi içerisinde node olarak hizmet verebilmesi için altyapı hazırlanmış olacaktır. Makinenin yeniden başlatılması özellikle rke kullanıcısının konteynır yapısı ile entegrasyon kurması için güzel olabilir. Fakat bu haliyle de çalışabilecektir. Bir sonraki yazıda yapılandırma ayarlarıyla birlikte küme ayağa kaldırılacaktır.

Top comments (0)