Bir Kubernetes kümesi kurmanın basit bir yolu olup olmadığını hiç merak ettiniz mi? Evet var. K0s, herhangi bir altyapıya dağıtılabilen basit, sağlam ve sertifikalı bir Kubernetes dağıtımıdır. Bu, K0’ların herhangi bir özel veya genel bulut ortamında çalışabileceği anlamına gelir.
K0s, tek bir komutla dağıtılan kurulum için gereken tüm minimum bağımlılıklarla birlikte bir ikili dosya halinde paketlenmiştir. Bu, Kubernetes kümenizi yükleme ve yapılandırma karmaşıklığını önemli ölçüde azaltır. Bu aynı zamanda Kubernetes konusunda hiçbir beceriye sahip olmayan mühendislerin yine de bir Kubernetes kümesi kurabileceği anlamına gelir.
K0’lar ayrıca normal K8’ler kadar güvenlidir, çünkü güvenlik açığı sorunları doğrudan k0s dağıtımında kolayca düzeltilebilir. K0s aynı zamanda açık kaynak kodludur!
K0s’nin özellikleri
K0s, tam özellikli bir Kubernetes dağıtımıdır ve Kubernetes’in tüm özellikleriyle birlikte gelir. Bu özelliklerden bazıları şunlardır:
Konteyner Çalışma Zamanı – ContainerD
Tüm Linux işletim sistemi ve Windows 2019+ desteği
x86-64, ARM64 ve ARMv7 desteği
CIS için yerleşik güvenlik ve uyumluluk
Desteklenen CNI sağlayıcıları: Kube-Router (Varsayılan), Calico, özel.
Desteklenen depolama ve CSI sağlayıcıları – Kubernetes-in-Three depolama sağlayıcıları, özel.Resmi web sitelerinde tartışılan k0’ların daha fazla özelliği var.
Linux üzerinde k0s Kümesini Kurun
Bu makale, Linux üzerinde bir k0s kümesi kurmak için gereken basit adımları kapsayacaktır. Adımlar aşağıda vurgulanmıştır:
- K0s kontrol düzlemini kurun
- İşçi düğümünü K0s kümesine ekleme
- k0s kümesine daha fazla denetleyici düğümü ekleyin
- Örnek uygulamayı k0s’de dağıtma
- k0s kümesini uzaktan yönetin
k0s Kontrol Düzlemini Kurun
Aşama 1. k0s ikili dosyasını indirin
Daha önce vurguladığımız gibi, K0s’ın kurulumu basittir. Kontrol düzlemi olarak kullanmayı düşündüğünüz düğüme K0s’yi indirmek ve kurmak için aşağıdaki komutu çalıştırın:
curl -sSLf https://get.k0s.sh | sudo sh
Yukarıdaki komut, k0s ikili dosyasını indirir ve /usr/local/bin dizinine kaydeder. Lütfen /usr/local/bin yolunun ikili yol olarak bildirildiğinden emin olun. echo $PATH komutunu çalıştırarak bunu doğrulayabilirsiniz. Yukarıdaki yol listelenmemişse, aşağıdaki komutu kullanarak yolu eklemeniz gerekir:
echo "export PATH=\$PATH:/usr/local/bin" | sudo tee -a /etc/profile
source /etc/profile
Adım 2. k0s denetleyicisini kurun
Root kullanıcıya geçin:
sudo su -
K0s denetleyicisini kurun ve işçi birimi etkinleştirin.
k0s install controller --enable-worker
Kurulumun tamamlanmasını bekleyin ve ardından denetleyiciyi başlatın.
sudo systemctl start k0scontroller
Başarıyla başlatılıp başlatılmadığını görmek için denetleyicinin durumunu kontrol edin.
# systemctl status k0scontroller
● k0scontroller.service - k0s - Zero Friction Kubernetes
Loaded: loaded (/etc/systemd/system/k0scontroller.service; enabled; preset: enabled)
Active: active (running) since Mon 2025-05-26 19:47:03 EAT; 2s ago
Docs: https://docs.k0sproject.io
Main PID: 2154 (k0s)
Tasks: 8
Memory: 196.3M (peak: 196.7M)
CPU: 3.973s
CGroup: /system.slice/k0scontroller.service
└─2154 /usr/local/bin/k0s controller --enable-worker=true
May 26 19:47:05 ubuntu01.cloudspinx.com k0s[2154]: time="2025-05-26 19:47:05" level=info msg="signed certificate with serial number 723580074612215042197249206066978391479856383188" component=cfssl
May 26 19:47:05 ubuntu01.cloudspinx.com k0s[2154]: time="2025-05-26 19:47:05" level=info msg="generate received request" component=cfssl
May 26 19:47:05 ubuntu01.cloudspinx.com k0s[2154]: time="2025-05-26 19:47:05" level=info msg="received CSR" component=cfssl
May 26 19:47:05 ubuntu01.cloudspinx.com k0s[2154]: time="2025-05-26 19:47:05" level=info msg="generating key: rsa-2048" component=cfssl
May 26 19:47:05 ubuntu01.cloudspinx.com k0s[2154]: time="2025-05-26 19:47:05" level=info msg="generate received request" component=cfssl
May 26 19:47:05 ubuntu01.cloudspinx.com k0s[2154]: time="2025-05-26 19:47:05" level=info msg="received CSR" component=cfssl
May 26 19:47:05 ubuntu01.cloudspinx.com k0s[2154]: time="2025-05-26 19:47:05" level=info msg="generating key: rsa-2048" component=cfssl
May 26 19:47:05 ubuntu01.cloudspinx.com k0s[2154]: time="2025-05-26 19:47:05" level=info msg="generate received request" component=cfssl
May 26 19:47:05 ubuntu01.cloudspinx.com k0s[2154]: time="2025-05-26 19:47:05" level=info msg="received CSR" component=cfssl
May 26 19:47:05 ubuntu01.cloudspinx.com k0s[2154]: time="2025-05-26 19:47:05" level=info msg="generating key: rsa-2048" component=cfssl
Hizmetin önyüklemede başlatılmasını sağlayın
sudo systemctl enable k0scontroller
Artık komut önekini kullanarak k0s kümenize erişebilirsiniz:
# k0s kubectl <command>
K0s, kubeadmin ve kubectl ile birlikte gelir. Bu nedenle, kümeyi kullanmak için başka bir şey yüklemeniz gerekmez.
Bölmelerin başlatılıp başlatılmadığını kontrol edin.
k0s kubectl get pod
Örnek çıktı:
# k0s kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-7bf57bcbd8-sq5zm 1/1 Running 0 67s
kube-system konnectivity-agent-rjrpk 1/1 Running 0 62s
kube-system kube-proxy-dd9rm 1/1 Running 0 65s
kube-system kube-router-wf587 1/1 Running 0 66s
kube-system metrics-server-7446cc488c-sg9ww 1/1 Running 0 62s
Bölmelerin ortaya çıkmasının biraz zaman aldığını unutmayın.
Kullanılabilir düğümleri kontrol edin
# k0s kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
ubuntu01.cloudspinx.com NotReady <none> 7s v1.33.1+k0s 172.35.1.221 <none> Ubuntu 24.04.2 LTS 6.8.0-60-generic containerd://1.7.27
Çalışan Düğümlerini k0s Kümesine Ekleme
Bir sonraki aşama, çalışan düğümlerini k0s kümesine eklemektir. Bunu yapmak için, çalışan düğümü olarak kullanmayı düşündüğümüz sunucuya k0s ikili dosyasını indirip kurmamız gerekiyor.
Çalışan düğümünü ayarlamaya başlamadan önce, düğümü kümeye katmak için kullanacağımız kimlik doğrulama belirtecini oluşturmamız gerekir.
Denetleyici düğümünde, belirteci oluşturmak için aşağıdaki komutu çalıştırın
k0s token create --role=worker
Yukarıdaki komut, çalışan düğümünün kimliğini doğrulamak için kullanılacak bir karakter dizisi oluşturur.
Çalışan düğümünde k0s ikili dosyasını indirin
sudo su -
curl -sSLf https://get.k0s.sh | sudo sh
İkili dosya nihayet başarıyla indirildiğinde, denetleyicide düğümün kimliğini doğrulamak için aşağıdaki komutu çalıştırın.
k0s worker <login-token> &
<login-token> değerini önceki adımda denetleyici düğümünde oluşturulan belirteçle değiştirin.
sudo k0s worker "H4sIAAAAAAAC/2xVUY+bPBZ9n1+RPzCtDcmoRNqHktghZHBqY5vgN8B0IDbEBSZhstr/vpq0lXal7+36nqNzrKure54K18p6GNtLv15c4VNl38epHsb10/PiT71+WiwWi7EervWwXjTT5Mb1168w8L7Al29fIABfPBisX5ZL/0Gs6mFqf7ZVMdXPxfvUXIZ2+njWxVSsF68pmF5TuGFCx7wNt0zGIhUqpgAL9sDAtDE....6n31Hxu/4dFX9z48H6bLyPj9d7Wdt6ei4vl2mchsL9v9r7MNT99PxX6dE0ba/Xi82l/9m+Pbmh/lkPdV/V43rx7/88fao+zP+I/IP8w/jxheli6n69COr6rfW/jFr/fHmf9bJrpzME8Om/AQAA//8V8FiGBwcAAA==" &
Düğüme hazır hale gelmeden önce birkaç dakika verin. Bunun nedeni, nework, dns ve proxy için bölmelerin başlatılmasıdır.
Ardından, düğümün başarıyla eklenip eklenmediğini onaylamak için mevcut düğümleri kontrol edebilirsiniz.
k0s kubectl get nodes -o wide
K0s kümesine denetim düğümleri ekleme
Tıpkı çalışan düğümleri gibi, ek bir kontrol düğümü için mevcut denetleyici düğümünde bir belirteç oluşturmamız gerekecek.
sudo su -
k0s token create --role=controller
İkincil kontrol düğümü olarak kullanmayı düşündüğünüz ana bilgisayara k0s ikili dosyasını indirin:
sudo su -
curl -sSLf https://get.k0s.sh | sudo sh
Daha önce oluşturulan belirteci kullanarak düğümü kümeye ekleyin
k0s controller "<token>"
Örnek:
k0s controller "H4sIAAAAAAAC/3RVwXKjOhbd5yv8A+kngZ2OXTWLxpaMcZBbQhJGO0AkYAlQA7GJp+bfp5J+XTWzeLure06do7p1656H3DWyGsam7zaLK3wo7fs4VcO4eXhc/F1vHhaLxWKshms1bBb1NLlx89dfcO19g0/P3yAA3zy43qyXS/+LWFbD1Lw2ZT5Vj/n7VPdDM3086nzKN4uXBEwvCdwyoSPeBDsmI5EIFVGABfvCwLQWFgNScNsRHLgThSyVZaBsFPDo5/32bMDX2jQCYS2X0iSCCR+LrLL7T/18Ni0eVttVkYMD6UfTdV8/Q7Kn7Xv6PiT258sT4b7+Pn65Mz9NZWw2PR99M4Dbn7f8H3Yai66fGP2FfTNJ3eLLZ999q8Pbiheq2GqiurcbP4938ePoW//H+L/IPDl/3XR6beVN1mMS+fvz9X396+L4en9++v93v9alfv7w//DQAA//8NPyCvDQcAAA=="
Başarılı bir kimlik doğrulamasından sonra, yeni denetleyici düğümünün durumunu denetleyin:
# k0s status
Version: v1.33.1+k0s.0
Process ID: 2154
Role: controller
Workloads: true
SingleNode: false
Kube-api probing successful: true
Yeni düğümün katıldığını ve bir denetleyici rolüyle çalıştığını doğrulayabiliriz. Bu, get nodes komutunu çalıştırdığınızda düğümün kullanılabilir düğümlerde listelenmeyeceği anlamına gelir.
İkincil bir denetleyici düğümü kurmanın k0s kümenizde kararsızlığa neden olabileceğini unutmayın ve şu anda tek bir denetleyici düğümü kullanmanız önerilir.
k0s kümesini uzaktan yönetin
Yerel kubectl’i kullanarak kümenizi uzaktan yönetmek isteyebilirsiniz. K0s, KUBECONFIG dosyasını /var/lib/k0s/pki/admin.conf konumunda depolar.
Bu, yapılandırma dosyasını kolayca kopyalayabileceğiniz ve kümenize uzaktan erişmek için kullanabileceğiniz anlamına gelir.
Yapılandırma dosyasını kullanıcı giriş dizinine kopyalayın.
sudo cp /var/lib/k0s/pki/admin.conf ~/k0s.conf
Denetleyici düğümünden k0s.conf dosyasını uzak sunucunuza indirin
scp <username>@<SERVER_IP>:~/k0s.conf .
Örnek:
scp [email protected]:~/k0s.conf .
k0s.conf dosyasındaki ana bilgisayar ayrıntılarını localhost’tan denetleyici düğümünün IP adresine değiştirin. Ardından yapılandırma dosyasını dışa aktarın.
export KUBECONFIG=k0s.conf
Artık kubectl kullanarak kümenizi uzaktan yönetebilirsiniz.
Uygulamaları k0’larda Dağıtın
Uygulama dağıtımının k0s kümesinde çalışıp çalışmadığını test edebiliriz. Biz Nginx uygulamasını kullanacağız.
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
EOF
Bölmenin çalışıp çalışmadığını kontrol edin:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-585449566-csvsf 1/1 Running 0 105s
nginx-deployment-585449566-hhx6z 1/1 Running 0 106s
İki bölme başlatıldı ve çalışıyor durumda. Bunun nedeni, yapılandırma dosyamızda sayıyı veya replikaları 2 olarak belirtmiş olmamızdır.
Hizmeti kullanıma sunmak için, nginx dağıtımını ortaya çıkarmak için NodePort hizmetini kullanacağız
$ kubectl expose deployment nginx-deployment --type=NodePort --port=80
service/nginx-deployment exposed
Hizmetin maruz kaldığı bağlantı noktasını kontrol edin
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7h23m
nginx-deployment NodePort 10.96.242.1 <none> 80:31710/TCP 94s
Hizmet, NodePort kullanılarak 31710 numaralı bağlantı noktasında kullanıma sunuldu. Worker-node ip’ini ve portu kullanarak tarayıcı üzerinden uygulamaya erişebiliriz.
k0s Kubernetes Cluster’ı Kaldırma
k0s’yi kaldırmak için k0s hizmetini durdurmanız ve ardından her düğümde yüklemeyi kaldırmanız gerekir.
sudo k0s stop
K0s kurulumunu kaldır
$ sudo k0s reset
INFO[2021-07-13 11:46:59] no config file given, using defaults
INFO[2021-07-13 11:46:59] * remove k0s users step:
INFO[2021-07-13 11:46:59] no config file given, using defaults
INFO[2021-07-13 11:47:03] * uninstal service step
INFO[2021-07-13 11:47:03] Uninstalling the k0s service
INFO[2021-07-13 11:47:03] * remove directories step
INFO[2021-07-13 11:47:04] * CNI leftovers cleanup step
INFO k0s cleanup operations done. To ensure a full reset, a node reboot is recommended.
Yazının orijinalini buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.