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
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
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"
}
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
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
İlgili komutun çıktısı da aşağıdaki gibidir.
rke version v1.4.3
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
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
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
Bu komutun çıktısı da aşağıdaki gibidir.
version.BuildInfo{Version:"v3.11.3", GitCommit:"323249351482b3bbfc9f5004f65d400aa70f9ae7", GitTreeState:"clean", GoVersion:"go1.20.3"}
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
Kurulum sonrasında sürüm kontrolü için de aşağıdaki komut kullanılabilir:
sudo docker version --format '{{.Server.Version}}'
Çıktısı da aşağıdaki gibidir:
20.10.23
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
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
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
Bu adımdan sonra aşağıdaki komutla da swap'in kapatılması verimli olacaktır.
sudo swapoff -a
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
Bu dosya oluşturulduktan sonra aşağıdaki komut çalıştırılır.
sudo sysctl --system
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.