Son zamanlarda Broadcom’un VMware’i satın almasının ardından KubeVirt’e olan ilgi artış gösterdi. Açık kaynaklı bir proje olan KubeVirt kullanıcıların sanal makine (VM) iş yüklerini doğrudan Kubernetes dağıtımları içinde çalıştırmasına olanak tanır.
Geleneksel sanallaştırma çözümlerine alternatif olarak Kubernetes ortamında VM’leri ve konteynerleri birlikte yönetme imkanı sunar.
Sanallaştırma ve Kubernetes
Günümüz BT ortamlarında uygulamalar doğrudan fiziksel sunucular üzerinde çalıştırılabilse de bu yöntem donanımın tam kapasiteyle kullanılmasını sağlamaz. Bu nedenle sanallaştırma teknolojileri devreye girer.
Sanallaştırma fiziksel donanımı soyutlayarak birden fazla iş yükünün aynı donanım üzerinde çalışmasına olanak tanır.
Modern sanallaştırma yalnızca tek bir donanım parçasını değil aynı zamanda bulut ortamlarındaki daha büyük kümeleri de soyutlamaya odaklanır. Bu bağlamda en yaygın yaklaşımlardan biri açık kaynaklı Kubernetes konteyner orkestrasyon sistemini kullanmaktır.
Konteynerler sanallaştırmanın farklı bir türüdür ve sanal makinelerden (VM) farklı bir çalışma mantığına sahiptir. VMware gibi geleneksel sanallaştırma çözümleri Kubernetes’ten önce oldukça yaygındı ancak Kubernetes’in benimsenmesiyle birlikte işletmeler hem VM’leri hem de konteynerleri bir arada yönetme ihtiyacı duymaya başladı.
KubeVirt Nedir?
KubeVirt; Kubernetes (Kube) ve sanallaştırma (Virt) teknolojilerini bir araya getiren açık kaynaklı bir projedir.
Geleneksel olarak Kubernetes yalnızca konteyner tabanlı iş yüklerini yönetirken KubeVirt sayesinde sanal makineler de Kubernetes içinde doğal kaynaklar gibi çalıştırılabilir. Bu hem VM’ler hem de konteynerler için tek bir yönetim platformu sağlayarak operasyonel süreçleri kolaylaştırır.
Red Hat tarafından 2016 yılında başlatılan KubeVirt projesi, 2019 yılında Kubernetes’in bağlı olduğu Cloud Native Computing Foundation (CNCF) bünyesine katıldı.
CNCF ekosistemi sayesinde Amadeus, Apple, IBM, Nvidia, SAP ve SUSE gibi büyük firmalar tarafından desteklenmektedir.
GitHub üzerinden açık kaynak olarak geliştirilen proje, birçok ticari firma tarafından da desteklenmektedir.
KubeVirt Nasıl Çalışır?
KubeVirt, “konteyner tabanlı sanallaştırma” prensibi ile çalışır ve Kubernetes içinde VM’leri konteynerler gibi yönetilebilir hale getirir.
Temel mimarisi aşağıdaki bileşenlerden oluşur:
- Özel Kaynak Tanımları (CRD – Custom Resource Definitions): KubeVirt, Kubernetes API’sini genişleterek VM’lerin tanımlanmasına olanak tanır. Kullanıcılar, VM’leri CPU, bellek ve ağ arayüzleri gibi bileşenlerle özelleştirebilir.
- virt-api-server: Tüm sanallaştırma işlemleri için giriş noktasıdır. Sanal makine görüntülerinin (VMI) doğrulama ve işlenmesini sağlar.
- virt-controller: Kubernetes operatörü olarak çalışarak, sanal makinelerin yaşam döngüsünü yönetir ve gerekli Kubernetes podlarını oluşturur.
- virt-launcher: Her VMI nesnesi için bir pod oluşturur ve libvirtd kullanarak sanal makineyi çalıştırır.
- virt-handlers: Kubernetes düğümlerinde çalışan sistem süreçleridir. VM’lerin başlatılmasını ve yapılandırılmasını sağlar.
Bu yapı sayesinde VM’ler, Kubernetes podları gibi çalışır ve Kubernetes’in sunduğu ağ ve depolama yönetim özelliklerinden faydalanabilir.
KubeVirt ile Neler Yapılabilir?
KubeVirt, işletmelere çeşitli avantajlar sunar:
- Geleneksel VM iş yüklerini çalıştırma: Kubernetes kümeleri içinde hem konteyner hem de VM iş yüklerini bir arada yönetmek mümkündür.
- Tek bir yönetim platformu kullanma: VM’leri ve konteynerleri aynı Kubernetes araçları ve iş akışları ile yönetme imkanı sunar.
- Miras (legacy) uygulamaları taşıma: Uygulamaları hemen konteynerize etmeden Kubernetes’e taşımak mümkündür.
- Kaynak verimliliğini artırma: Aynı altyapı üzerinde VM’ler ve konteynerler birlikte çalıştırılabilir, böylece altyapı maliyetleri optimize edilir.
- Modernizasyona olanak tanıma: Geleneksel VM uygulamalarını zamanla mikro hizmetlere dönüştürerek operasyonel verimliliği artırabilir.
KubeVirt’in Avantajları ve Zorlukları
KubeVirt kullanmanın avantajları şunlardır:
- Tek platform yönetimi: Hem VM hem de konteyner iş yüklerini tek bir Kubernetes ortamında çalıştırma imkanı.
- Kaynak verimliliği: Geleneksel VM’lere kıyasla daha yüksek iş yükü yoğunluğu.
- Daha hızlı ölçeklendirme: CPU ve bellek kullanımına dinamik olarak adapte olabilir.
- Güvenlik: Kubernetes’in yerleşik güvenlik politikalarından faydalanarak VM’ler için daha güvenli bir ortam sağlar.
Ancak, KubeVirt’in bazı zorlukları da vardır:
- Öğrenme eğrisi: Geleneksel VM yöneticilerinin Kubernetes ekosistemine adapte olması zaman alabilir.
- Performans kaybı: VM’leri konteyner içinde çalıştırmak, doğrudan fiziksel donanımda çalıştırmaya kıyasla küçük bir performans kaybı yaratabilir.
- Geçiş sürecinin karmaşıklığı: Mevcut VM iş yüklerinin KubeVirt’e taşınması dikkatli bir planlama gerektirir.
KubeVirt ile VMware İş Yükleri Nasıl Taşınır?
KubeVirt, VMware iş yüklerini Kubernetes’e taşımak için iki ana yöntem sunar:
- Lift-and-shift yöntemi: Bu yöntemde, VMware ortamındaki VM’ler minimum değişiklikle KubeVirt’e taşınır. Hızlı ve düşük riskli bir yöntemdir.
- Yeniden oluşturma (rebuilding) yöntemi: Bu yöntemde, KubeVirt ortamında yeni VM’ler oluşturularak uygulamalar ve veriler taşınır. Daha zaman alıcıdır, ancak optimizasyon fırsatları sunar.
Geçiş sürecinde aşağıdaki adımlar uygulanabilir:
- Mevcut VMware ortamının değerlendirilmesi.
- Kubernetes kümesi ve KubeVirt’in yapılandırılması.
- VM disk görüntülerinin taşınması için virt-v2v veya virt-p2v gibi araçların kullanılması.
Red Hat’in Migration Toolkit for Virtualization gibi araçları, bu geçiş sürecini kolaylaştırabilir.