Cri-O Runtime ile Kubernetes Single Cluster 1.24 Kurulumu
Ubuntu 20.04
Merhabalar,
Bu yazımda cri-o runtime kullanrak basit bir single kubernetes cluster kurulumu inceliycez.
Cri-o: Open Container Initiative ( OCI ) görüntü ve çalışma ortamları, kubernetes için bir container runtime interface uygulamasıdır. 2016 yılında Red Hat şirketi tarafından geliştirilmiş 2019 yılından sonrada Cloud Natice Computing Foundation devredilmiştir.
Ilk olarak Ubuntu 20.04 üzerine cri-o kurulumu yapalım.
- Kurulum yapacağınız Operating system ve kubernetes versiyon’nu export ediyoruz.
export OS=xUbuntu_20.04export CRIO_VERSION=1.24
Note: Cri-o versiyonu ile kuracağanız kubernetes cluster versiyonun uyumlu olması gerekmektedir. Bunun için aşağıdaki linkten cri-o’nun github sayfasından bakabilirsiniz.
- Kubic repository ekleyelim.
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.listecho "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$CRIO_VERSION/$OS/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION.list
- Gpg key ekleyerek devam edelim.
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION/$OS/Release.key | sudo apt-key add -curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | sudo apt-key add -
- Paketleri güncelleyip cri-o yükleyelim ve güncelledikten sonra kontrol edelim.
sudo apt update
sudo apt info cri-o
sudo apt install -y cri-o cri-o-runc cri-tools
- Son olarak ta cri-o servisi enable etip başlatalım.
sudo systemctl daemon-reloadsudo systemctl start criosudo systemctl enable crio
sudo systemctl status crio
Görüldüğü gibi cri-o başarılı şekilde kuruldu aynı zaman crioctl yüklediğimiz için crictl ile doğrulama yapabiliriz. Bunun için,
sudo crictl info
Note: CRI-O container şekilde kullanacaksanız containernetworking plugin inde yüklemeniz gerekmektedir ama sadce kubernetes için container engine olarak kullanacaksanız containernetworking yüklemeye gerek yoktur.
- Container network plugin’i yüklemek için,
sudo apt install -y containernetworking-plugins
- Cri-o versiyonu restart attıktan sonra cri-o versiyonu kontrol etmek için,
sudo crictl --runtime-endpoint unix:///var/run/crio/crio.sock version
- Container çalıştırmayı doğrulamak için,
sudo crictl info
Başarılı şekilde cri-o kuruldu. Sıra kubeadm ile kubernetes cluster’ı kurmaya geçelim.
- Sıfırdan bir kurulum yaptığımız için ilk olarak paketleri güncelleyip gerekli paket kurulumlarını yapalım.
sudo apt updatesudo apt-get install -y apt-transport-https ca-certificates curl
- Google cloud herkese açık imzalı key indirelim.
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
- Kubernetes apt listesine ekleyelim
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
- Paketleri günceleyip kubeadm, kubelet ve kubectl kurulumu yapalım.
sudo apt-get updatesudo apt-get install -y kubelet kubeadm kubectl
Note: Yukarıdaki komut ile kurulum yapar isek indirdiğimiz kubernetes paketinin içindeki son kubeadm, kubelet ve kubectl kurar, fakat bizim container runtime olarak kullandığımız cri-o kubernetes’in 1.24.XX versiyonu ile uyumludur. Bundan dolayı 1.24.xx versiyonu kuracağız.
sudo apt list -a kubeadmvesudo apt-get install -y kubelet=1.24.0-00 kubeadm=1.24.0-00 kubectl=1.24.0-00
- Kurulumu doğrulamak için;
kubeadm version
Şimdide kubeadm ile cluster yüklemeye geldi. Bunun için ilk olarak swap kapatalım.
sudo swapoff -a -> geçiciyada sudo vim /etc/fstab -> kalıcı
- Control plane endpoints ismimizi etc/hosts altına girelim.
- Şimdide bridge network için,
sudo sucat >>/etc/modules-load.d/crio.conf<<EOF
overlay
br_netfilter
EOFmodprobe overlaymodprobe br_netfiltercat >>/etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOFsysctl --systemexit
- Cluster’ı kurmak için,
sudo kubeadm init --control-plane-endpoint="kubernetes.deniz.master.internal-cri-test:6443" --apiserver-advertise-address=192.168.1.14 --node-name cri-master --pod-network-cidr=192.168.0.0/24
- Regular user ile kubeconfig dosyasını oluşturalım ve CNI için calico kuralım.
kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
Son olarak cluster kontrol etmek için,
kubectl get nodeskubectl get nodes -o wide
Görüldüğü gibi başarılı şekilde kurulumu tamamladık. Cluster’a node eklemek istiyotsanız yukarıdaki token ile master veya worker node ekleyebilirsiniz, Tabiki de bunu yapmadan önce dahil edeceğiniz master veya worker node cri-o, kubeadm, kubelet ve kubectl kurulu olması gerekmektedir.
Note: Cri-o ile kurduğunuz kubernetes versiyonun birbiri ile uyumlu olması gerekmektedir. Bu ileride sizin için bir dezavantaj olabilir. Kubernetes cluster’ınız upgrade ettiğinizde cri-o yükselttiğiniz versiyon ile uyumlu olması gerekiyor ki bu da bizler için bir efor ve zaman kaybı olabilir.
Bu yazımızın da sonuna gelmiş bulunmaktayız. Araştırmalarım ve sektörde karşılaştığım senaryolar üzerine yazılarımı yazmaya devam edeceğim. Umarım faydalı bir yazı olmuştur. Yazımı okuduğunuz için teşekkürler.
Referanslar;