CRI-O container runtime ve kubeadm ile Kubernetes Cluster kurulumu

H. Alperen Selcuk
4 min readMay 19, 2022

--

bu yazımda cri-o runtime kullanarak hard-way kubernetes cluster provision edeceğiz.

daha önce docker ve containerd clusterları kurmuş ve medium a eklemiştim. özellikle docker ın deprecated olacak olmasından dolayı artık kubernetes clusterlarında yeni container runtimelar kullanmak şart oldu.

containerd bunlardan biri.

şimdi de cri-o runtime ile kubernetes kuracağız.

lab ortamı için google cloud kullanacağım. size 3 aylık 300$ free tier verdiği için yapabilceğiniz şeylerin çok sınırı yok ve devamlı free tier alarak cloud konusunda yetkinliğinizi artırabilirsiniz.

öncelikle 2 adet sunucu kuracağım, ubuntu 18.04 kullanacağım.

2 sunucu üzerinde de gireceğimiz configler olacak, daha sonra master ve worker ayrı configler gireceğiz.

sed -i '/swap/d' /etc/fstab
swapoff -a
systemctl disable --now ufw

makine IP lerinizi etc/hosts üzerinde update edeceğiz.

cat >>/etc/hosts<<EOF
10.166.0.4 k8s-master
10.166.0.5 k8s-worker
EOF

cri-o için kernel ayarlarını yapacağız.

cat >>/etc/modules-load.d/crio.conf<<EOF
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter

cat >>/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
EOF

sysctl --system

sırada cri-o paketlerini yüklememizde. burada dikkat edilmesi gereken VERSION variable ile kubernetes versiyonuna uygun cri-o yüklememiz.

OS=xUbuntu_18.04
VERSION=1.21
cat <<EOF | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /
EOF
cat <<EOF | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list
deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /
EOF

curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers-cri-o.gpg add -

sudo apt-get update
sudo apt-get install cri-o cri-o-runc crictl
sudo systemctl daemon-reload
sudo systemctl enable crio --now

cri-o runtime ı kurduk ve servisi başlattık.

crictl komutu ile durumuna bakabiliriz.

crictl için “sudo apt-get install cri-tools” yüklememiz yeterli.

kubernetes componentlerini yükleyeceğiz sırada. kubeadm ile cluster kuracağımız için kubeadm kullanacağız.

sudo apt-get install -y apt-transport-https ca-certificates curlsudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpgecho "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.listsudo apt-get update
sudo apt-get install -y kubelet=1.21.0-00 kubeadm=1.21.0-00 kubectl=1.21.0-00
sudo apt-mark hold kubelet kubeadm kubectl

buraya kadar yapılan işlemlerin tamamı iki node üzerinde de yapıldı.

MASTER NODE

master üzerinde kubeadm ile cluster i initialize edeceğiz.

“kubeadm config images pull” dersek hangi imageleri kullanacağımızı görebiliriz.

ardından pod networkü ile kubeadm init yapıyoruz.

sudo kubeadm init --pod-network-cidr=192.168.0.0/16

bu komutu girdikten sonra cluster a dahil olması için token verecek bunu workerde kullanacağız.

burada en alt kısımda olan token ile worker i cluster a dahil edeceğiz. bu token ı bir yere not alıp sonra tekrar ekleyeceğiniz zaman kullanabilirsiniz.

WORKER NODE

worker üzerinde çalıştırıyoruz.

cluster a dahil olmuş oluyor.

CLUSTER

kubernetes clusterı isterseniz master node üzerinden yönetebilir isterseniz kubeconfig dosyasını alıp farklı bir node üzerinden kubectl çalıştırabilirsiniz.

ben burada master node üzerinde kubectl kurmuştum oradan komutları çalıştıracağım.

fakat bunun için öncelikle kubectl in config e baktığı yere bu dosyayı koymamız gerekiyor. degault olarak /etc/kubernetes altında bulunuyor. olması gereken yer root directory de .kube file ın içi.

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

gördüğünüz gibi worker node da görünmekte, ama status ler not-ready durumda. bunun sebebi kubernetes network için ayrı bir operator e ihtiyaç duyar en bilindikleri. calico, flannel ve weavenet dir.

ben calico kullanacağım.

kubectl apply -f https://projectcalico.docs.tigera.io/manifests/calico.yaml

direk komutu çalıştırınca CRD ler ile clustera kurmuş olacak.

kurduktan sonra tekrar baktığınızda nodeların ready durumuna geldiğini görebilirsiniz.

kubernetes kurulumndan sonra görsel bir şekilde durumunu izlemek hatta bir GUI üstünden işlemler yapmak istiyorsanız ek olarak LENS kullanabilirisniz.

yazıma aşağıdaki linkten ulaşabilirsiniz.

bir sonraki yazımda görüşmek üzere.

h.a.s.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response