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

Ali Orhun Akkirman - May 3 '23 - - Dev Community

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.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .