(CKS) RuntimeClass atamak
Esenlikler,
RuntimeClasslar basit anlamda, bir sanal makinenin içerisinde çalışan ve kendine ait izole kernel’i olan container’lar olrak düşünebiliriz. Host (Ana) makinenin kerneline erişim sağlayamaz.
Runtime kontrol etmek #
Sisteminizde kullanılan runtimeClass’ı görmek için;
crictl(docker) info | grep -i defaultRuntimeName
#Output
"defaultRuntimeName": "runc",
Kullanabileceğimiz runtime’lar #
Diğer runtime’ları kullanabilmek için öncelikle sisteme yükleyip gerekli konfigürasyonları yapmak gerekiyor. Kullanabileceğiniz bazı runtime’lar;
RuntimeClass objesi oluşturmak #
Kubernetes resmi dökümanlarında verilmiş olan yaml’ı alarak düzenliyoruz.
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
# RuntimeClass objesi namespace almaz.
# RuntimeClass'ımızın ismi
name: myclass
# CRI ayarında girilen konfigürasyon
handler: myconfiguration
Crun için;
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
name: crun
handler: crun
gVisor için;
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
name: gvisor
handler: runsc
Kata-container için;
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
name: kata
handler: kata
Pod’a runtimeClass eklemek #
Herhangi bir pod’umuza spec.runtimeClassName
özelliğini ekleyerek, izole ediyoruz. gVisor
runtime ‘ını ele alırsak;
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
runtimeClassName: gvisor #Eklenen
containers:
- name: nginx
image: nginx
Kontrol etmek #
Podun çalıştığı makineyeye giderek
ps -aux | grep -i runc
#Output
#Nginx podunu göremeyeceğiz.
ps -aux | grep -i runsc
#Output
#Nginx podunu göreceğiz.