Kubernetes , bir düğüm kümesi genelinde kapsayıcıya alınmış uygulamaları yöneten ve düzenleyen açık kaynaklı bir sistemdir. Bu sistem Google tarafından tasarlanmıştır ve konteynerleri gerçek ölçekte yönetmek ve planlamak için kullanılır . Kubernetes’in hem “şirket içi” hem de bulut ortamında uygulanabildiği göz önüne alındığında, BT altyapısının yenilenmesi ve modernizasyonu için popüler bir seçim olarak kabul ediliyor.
Diğer telaffuzu “Kybernetize” olan “Kubernetes” (Kubernetes), “K8s” (Keats olarak telaffuz edilir) olarak da bilinir. Bu kısa ismin felsefesi “Kubernetes” kelimesinin ilk ve son harfi arasında 8 harfin bulunmasıdır. Google ve Spotify gibi birçok büyük şirket, konteyner uygulamalarını yönetmek için Kubernetes’i kullanıyor. Bu sistem, geleneksel sanal makinelere göre daha yüksek düzeyde “otomasyon” ve “güvenilirlik” sağlamanın yanı sıra, birden fazla ana bilgisayardaki büyük konteynerlerimizi yönetmemize yardımcı olur . Kubernetes’in geleneksel uygulama dağıtım modellerine göre sahip olduğu çeşitli avantajlar arasında, daha fazla “Esneklik” ve “Ölçeklenebilirlik”, kaynakların daha iyi kullanımı ve geliştirilmiş “Hata Toleransı” sayılabilir.
Kubernetes’i öğrenmenin birkaç nedeni var, bunlardan bazılarını aşağıda sıraladık.
- Uygulamaların kolay ölçeklendirilmesi
- Kendi kendini iyileştirme (veya kendi kendini iyileştirme) özelliği
- taşınabilir olmak
- otomasyon
- Mikro hizmetleri ve dağıtılmış sistemleri çalıştırmak için kullanışlıdır
Örneğin, “dağıtılması” gereken bir uygulamamız olduğunu varsayalım. Bunu bir konteynerin içinde, paket halinde ve Docker Engine’i veya diğer konteyner motorlarını çalıştıran bir sunucuda çalıştırabiliriz. Uygulamayı Dockerfile kullanarak bir konteynerin içine paketliyoruz ve dış dünyadan erişilebilmesi için bir porta koyuyoruz.
Yukarıdaki senaryodan çıkarılabilecek dezavantaj, tek sunucuda çalıştığından dolayı herhangi bir sorun çıkması durumunda uygulamanın başarısız olmasıdır. Bu sorunu çözmek için Google, uygulamaları ölçeklendirmeye yönelik Kubernetes platformunu tanıttı. K8’lerin şu anda Cloud Native Computing Institute tarafından bakımının yapıldığı unutulmamalıdır.
Kubernetes nedir?
Basit bir ifadeyle Kubernetes, uygulamaları otomatik olarak dağıtan, yöneten ve ölçeklendiren konteynerleri koordine etmeye yönelik açık kaynaklı bir platformdur.
Başka bir deyişle Kubernetes, bulut kaynaklarını yönetmek ve ölçeklenebilir uygulamalar oluşturmak için kullanılan konteyner tabanlı bir platformdur. Bu ortam, tüm bulut altyapısının otomasyonu, dağıtımı ve geliştirilmesi için en yaygın platform olarak kabul edilmektedir. Kubernetes tüm büyük işletim sistemlerinde çalıştırılabilir ve en yaygın kullanılan açık kaynak bulut aracı olarak kabul edilir.
Kubernetes, bazıları aşağıda belirtilen birçok durumda bize yardımcı olabilir.
- Tüm altyapımızı ölçeklendirin.
- Her hizmetin durumunu izleyin.
- Yük dengeleyici olarak hareket edin.
- “Kurulum ve uygulama”yı (Dağıtımlar) otomatik olarak yapın.
Pod’ları ( Docker konteynerleri ) ve hizmetlerimizi bulut üzerinde çalıştırabiliriz ve bu, istenen sayıda düğüm (küme) kurup yapılandırarak yapılır.
Kubernetes aslında bir konteyner düzenleme platformudur. Bu platform, uygulamaları gerekli (ve genellikle büyük) ölçekte yönetmemize ve “dağıtmamıza” yardımcı olur. Bu sistemi kullanmak, geliştiricilerin altyapı bakımına zaman harcamak yerine uygulama kodlarına odaklanmasına olanak tanır ve böylece yaşam döngüsü yönetimini veya bir ürünün üretim ve yaratım döngüsünü kolaylaştıracak şekilde tasarlanmıştır.
Kubernetes’in bize sağladığı özellikler arasında şunları sayabiliriz.
- “Kendini İyileştirme”
- “Otomatik Ölçeklendirme” (Otomatik Ölçeklendirme)
- yük dengeleme
Kubernetes’te Kendini İyileştirme özelliği nedir?
Bu özellik Kubernetes konseptinde önemli bir rol oynamaktadır. Çalıştırılamayan konteynerler Kubernetes tarafından otomatik olarak yeniden başlatılır. Ayrıca kullanıcı tanımlı sağlık kontrollerine yanıt vermeyen kapları da otomatik olarak durdurur.
Bu özellik Kubernetes’i büyük ölçekli dağıtımlar için ideal bir çözüm haline getiriyor. Kubernetes ayrıca son derece genişletilebilir olduğundan kullanıcıların gerektiğinde yeni özellikler eklemesine olanak tanır. Ek olarak Kubernetes açık kaynaktır ve geniş bir geliştirici topluluğunun desteğine sahiptir. Bu nedenle yaygın olarak kullanılan ve çok yönlü bir platform haline gelmiştir.
Kubernetes’in kavramları nelerdir?
Bu bölümde Pod’lar, “Düğümler”, “Hizmetler” ve “Dağıtımlar” gibi Kubernetes’teki bazı temel kavramlar hakkında bilgi edinmek istiyoruz.
Kubernetes’te Pod nedir?
Pod, Kubernetes’teki en küçük ve en basit temel uygulama birimidir. Bu nesne, kümede çalışan işlemleri temsil eder.
Pod’lar aslında Kubernetes “Dağıtım”ının temel birimidir. Bir hizmet veya dağıtım oluşturulduğunda Kubernetes otomatik olarak dahili kapsayıcıya sahip bir Pod oluşturur. Pod , depolamayı ve ağ kaynaklarını paylaşan bir veya daha fazla konteynerden (Docker konteynerleri gibi) oluşan bir grubu ifade eder . Kubernetes bölmeleri aslında uygulamaları barındırır.
Kubernetes’teki Düğüm nedir?
Basit bir ifadeyle bir düğüm veya düğüm, fiziksel veya sanal makineleri çalıştırabilen bir ana bilgisayardır. “Düğümler” aslında Pod’ların dağıtıldığı sanal makineler veya fiziksel sunucular gibi makinelerdir. Düğümlerin ayrıca birbirleriyle ilişkili ağ ve depolama kaynakları vardır. Bu bileşenler Kubernetes’te Pod’ları çalıştırmak ve ihtiyaç duydukları kaynakları sağlamak için kullanılır. Her düğüm aşağıda listelenen en az 2 hizmeti çalıştırabilir.
- Konteyner Çalışma Zamanı
- Kubelet
Kubernetes’teki hizmet nedir?
“Hizmet”, Kubernetes’te çalışan uygulamaları dış dünyaya göstermek için kullanılır. Bir “hizmet”, mantıksal bir Pod koleksiyonunu ve bunlara erişmeye yönelik bir politikayı tanımlar. Hizmetler aşağıdakiler gibi çeşitli protokoller aracılığıyla kullanıma sunulabilir.
- Küme IP’si
- TCP
- UDP
- Düğüm Bağlantı Noktası
- Yük dengeleyici
- HTTP
Kubernetes’te dağıtım nedir?
“Dağıtımlar” Kubernetes’teki uygulamaların yaşam döngüsünü yönetmek için kullanılır. Dağıtım (veya kurulum), bir görüntünün belirli bir sürümü veya belirli bir yapılandırma gibi bir uygulama için istenen (istenen) durumu ifade eder. Dağıtımlar, uygulamaları güncellemek, değişiklikleri geri almak ve uygulamaları ölçeklendirmek için kullanılabilir.
Kubernetes’teki Ad Alanı nedir?
Kubernetes tarafından desteklenen çeşitli sanal kümelere “Ad Alanları” adı verilir. Bu şekilde küme kaynakları 2 veya daha fazla kullanıcı arasında paylaştırılır.
Kubernetes’in özellikleri nelerdir?
Kubernetes platformunun özellikleri arasında aşağıda sıralanan maddelere değinebiliriz.
- “Konteyner oluştur ve yok et” (Konteyner Oluştur ve Yok Et)
- “Otomatik Ölçeklenebilir Altyapı”
- “Yatay Ölçeklendirme”
- Yük Dengeleyiciler
- Canlılık ve Hazırlık
- “Son derece öngörülebilir altyapı”
- “Uygulamaları Çalıştırmak için Montajlar ve Depolama Sistemi”
- “Verimli Kaynak Kullanımı”
- Güvenlik, ağ ve bileşenlerinin otomatik yönetimi
Bu özelliklerin her birini aşağıda ayrıntılı olarak açıklıyoruz.
Kubernetes’te kapsayıcı oluşturma ve silme nedir?
YAML yapılandırma dosyalarını temel alan kaynakların otomatik olarak oluşturulması, Kubernetes kullanmanın birçok avantajından biridir. Bu özellik, yöneticilerin Pod gibi kaynakları manuel olarak oluşturma zorunluluğunu ortadan kaldırır ve böylece çok fazla zaman tasarrufu sağlar.
Ayrıca tüm kaynakların oluşturulmasını Kubernetes’in kendisinin yönetmesi sayesinde insan hatası riskinin azaldığı da iddia edilebilir. Ek olarak, tek ihtiyaç duyduğu şey geçerli bir YAML yapılandırma dosyası olduğundan, birden fazla sunucuda çoğaltmayı kolaylaştırır. Bu nedenle Kubernetes, sunucu dağıtım yönetimi sürecini büyük ölçüde basitleştirebilir.
Kubernetes’te otomatik altyapı yükseltmesi nedir?
Otomatik ölçeklendirme, dağıtımları uygun ölçekte yönetirken Kubernetes’in önemli bir özelliğidir. Kubernetes, CPU kullanımı, bellek kullanımı ve ağ trafiği gibi faktörlere göre otomatik olarak ölçeklendirme yaparak uygulamaların sorunsuz çalışması için gerekli kaynakları sağlayabilir.
Bu özellik, manuel etkileşim ihtiyacını ortadan kaldırmanın yanı sıra, uygulamaların ani trafik artışlarını doğru şekilde yönetebilmesini sağlamaya yardımcı olur. Dolayısıyla Kubernetes kurulumlarında otomatik ölçeklendirmenin çok önemli bir bileşen olduğunu söyleyebiliriz.
Kubernetes’te yatay ölçeklendirme nedir?
Kubernetes’in özelliklerinden biri olan yatay genişleme, kullanıcıların replikaları ekleyerek veya kaldırarak bir kümedeki düğüm sayısını artırmasına veya azaltmasına olanak tanır. Kuruluştan itibaren gerçekleşir. Dağıtım denetleyicisi, Replika sayısının istenen sayıyla eşleştiğinden emin olur.
Kubernetes’te yük dengeleyici nedir?
Kubernetes’in bu özelliği, iş yüklerini veya Kubernetes üzerinde çalışan uygulamaları bir kümedeki birden fazla düğüm arasında dağıtır. Böylece hiçbir düğümün aşırı yüklenmemesini ve iş yükünün eşit şekilde dağıtılmasını sağlar. “Yük Dengeleyici”yi kullanarak Kubernetes kümemizin verimliliğini artırabilir ve arıza olasılığını azaltabiliriz.
Kubernetes’te canlı ve hazır neler var?
Kubernetes’in bu 2 önemli özelliği, uygulamamızın amaçlandığı gibi çalışmasını sağlamamıza yardımcı olur. Canlılık denetleyicisi, uygulamanın etkin olup olmadığını belirlemek için kullanılır ve kapalıysa uygulamayı yeniden başlatır. Öte yandan “Hazırlık” denetleyicisi, uygulamanın trafik almaya hazır olup olmadığını tespit etmek için kullanılır.
Canlılık ve Hazırlık özelliklerinin her ikisi de farklı durum kontrolü yöntemlerini kullanacak şekilde ayarlanabilir. Ayrıca bu denetleyiciler düzenli aralıklarla çalışacak ve uygulama durumu denetimleri başarısız olduğunda bizi uyaracak şekilde yapılandırılabilir.
Kubernetes ayrıca başarısız dağıtımları otomatik olarak geri alarak uygulamamızın asla kararsız bir duruma düşmemesini sağlar.
Kubernetes’te uygulamaları çalıştırmak için kurulum ve depolama sistemi nedir?
Kubernetes, uygulamaları çalıştırmak için kullanılabilecek bir kurulum ve depolama sistemi sağlar. Bu sistemin tasarlanmasındaki amaç, uygulamaların uzak sunucuda depolanan verilere, yerel sistem üzerinde verinin bir kopyasını oluşturmaya gerek kalmadan erişmesine yönelik bir yöntem sağlamaktır.
Bağlama ve depolama sistemi, bir uygulamanın veritabanı gibi paylaşılan bir konuma veri okuması ve yazması gerektiğinde de kullanışlıdır . Geliştiriciler bu sistemi kullanarak kendi depolama altyapılarını oluşturmaktan ve sürdürmekten kurtulabilir ve bunun yerine güvenilir ve ölçeklenebilir bir depolama çözümü sağlamak için Kubernetes’e güvenebilirler.
Kubernetes’te kaynakların etkin ve verimli kullanımı nedir?
Kaynakların yararlı kullanımı Kubernetes’in temel özelliklerinden biridir. Platform, akıllı planlamayı kullanarak Pod’ların yalnızca ihtiyaç duydukları kaynaklara sahip düğümlerde çalışmasını sağlar. Bu sayede kaynakların mümkün olduğu kadar etkin ve verimli kullanılmasını ve hiçbir düğümün aşırı yüklenmemesini sağlar.
Kubernetes ayrıca talepteki değişikliklere yanıt olarak bölmeleri dinamik olarak yukarı veya aşağı ölçeklendirebilir. Bu şekilde Pod’ların her zaman optimum seviyede çalışmasını ve hiçbir kaynağın israf edilmemesini sağlıyoruz. Sonuç olarak Kubernetes’in kaynak kullanımı karşısında yüksek düzeyde verimlilik sağladığı söylenebilir .
Kubernetes’te güvenliğin, ağın ve bileşenlerinin otomatik yönetimi nedir?
Söylediğimiz gibi Kubernetes, güvenlik, ağ ve ağ bileşenlerinin yönetimini otomatikleştiren bir konteyner orkestrasyon sistemidir. Ayrıca kullanıcıların konteynerli uygulamalarını “kararlı” bir küme ortamında dağıtmasına ve yönetmesine olanak tanır.
Kubernetes, iş yüklerini birden fazla düğüm arasında dağıtarak yüksek kullanılabilirlik ve ölçeklenebilirlik sağlar. Kubernetes ayrıca “Kendi Kendini İyileştirme”, “Geçici Güncellemeler” ve “Yatay Ölçeklendirme” gibi şeyleri de içerir.
Kubernetes mimarisi nedir?
Bu bölümde Kubernetes mimarisini incelemek istiyoruz. Bu mimarinin, her biri sistemin genel performansında anahtar rol oynayan birkaç ana bileşene dayandığını bilmek gerekir.
Kubernetes mimarisi aslında aşağıdaki 2 ana bileşeni içeren istemci-sunucu mimarisinden türetilmiştir.
- Ana düğüm (kontrol ünitesi | Kontrol Düzlemi)
- Köle düğüm (çalışan düğüm)
Kubernetes mimarisindeki Ana düğüm, bir kümenin durumunu yönetmek için kullanılır ve genellikle her tür yönetim görevi için giriş noktası olarak kabul edilir. Kubernetes kümesinde hata toleransını kontrol etmek için birden fazla ana düğüm bulunmaktadır.
Kubernetes kontrol ünitesi veya Master node aşağıda listelediğimiz 4 farklı bileşeni içermektedir.
- API Sunucusu
- “Zamanlayıcı”
- “Denetleyici Yöneticisi”
- ETCD
Köle düğüm, uygulamaları bölmeler aracılığıyla çalıştıran fiziksel bir cihazdır. Bu düğüm, kullanıcının kaynakları zamanlanmış kapsayıcılara tahsis etmesine olanak tanıyan tüm temel hizmetleri içerir. Aşağıda çalışan düğümdeki çeşitli bileşenlerin adları verilmiştir.
- Kubelet
- Kube-Proxy
- Kapsüller
Bu mimarideki her Pod, düğümlerde mantıksal olarak birlikte çalışan bir veya daha fazla konteynerin birleşimidir. Bir çalışan düğüm birden fazla Pod’u kolaylıkla çalıştırabilir.
Aşağıda öncelikle diğer bileşenleri listeledik ve ardından her birini açıkladık.
- “Kontrol Ünitesi” (Kontrol Düzlemi)
- “Veri Düzlemi”
- Kube-API sunucusu
- Vesaire
- Kube-Denetleyici-Yönetici
- Kube-Zamanlayıcı
- Kubelet
- Kube-Proxy
- Kubectl İstemcisi
- Konteyner Çalışma Zamanı
Kontrol Paneli
“Kontrol Düzlemi” kümenin yönetilmesinden sorumludur ve her biri kümenin genel yönetiminde belirli bir rol oynayan çeşitli bileşenler içerir. En önemli bileşenler arasında aşağıdakileri sayabiliriz.
- Etcd veritabanı
- API sunucusu
- “Zamanlayıcı”
- Denetleyici yöneticisi
Etcd veritabanı, bölmeler ve hizmetler hakkındaki bilgiler olan küme durumunu saklar. API sunucusu, kümeyi yönetmek için kullanılabilecek bir RESTful API sağlar. “Zamanlayıcı” aslında düğümlerdeki Pod’ları planlar. Denetleyici Yöneticisi, Çoğaltma Denetleyicisini ve Hizmet Hesaplarını yönetir.
Veri Düzlemi
Kubernetes’in “Veri Düzlemi” kümedeki düğümleri içerir. Her düğüm Kubelet’leri bir pod çalıştırarak çalıştırır. Pod’lar aynı zamanda bir ağ ad alanını ve depolama alanını paylaşan bir grup kapsayıcıdır. Düğümler ayrıca bir proxy hizmeti çalıştırarak bölmeler için yük dengeleme ve hizmet keşfi sağlar.
Kube-API sunucusu
Kube-APIserver, tüm Kubernetes API çağrıları için merkezi bir noktadır. Bu bileşen veri doğrulama, yetkilendirme ve erişim kontrolünden sorumludur ve ayrıca bildirim dosyasını Etcd’de saklar. Kube-APIserver, konfigürasyonu varsayılan değerlerle tamamlamak ve Etcd’ye kaydetmeden önce tüm ayarların doğru yapıldığından emin olmak için bir arayüz sağlar.
Vesaire
Kubernetes mimarisindeki Etcd bileşeni, küme yapılandırmasını ve ayarlarını depolamak için kullanılan “anahtar/değer” verileri için dağıtılmış, yüksek kullanılabilirliğe sahip bir depolama alanıdır. Bu bileşen, her kaynak için meta verileri ve hem “istenen” hem de “geçerli” durumları tutar. Genel olarak oluşturulan herhangi bir nesne veya kaynak da Etcd’de depolanır.
Kube-Denetleyici-Yönetici
Bu bileşen, Kubernetes kümesinin durumunu yöneten çeşitli denetleyicilerin uygulanmasından sorumludur. Denetleyici bileşenleri API sunucusu aracılığıyla kümenin paylaşılan durumunu izler ve istenen (istenen) durumun mevcut duruma yansımasını sağlamak için değişiklikler yapar.
Kube-Controller-Manager, her biri belirli bir görevden sorumlu olan birkaç denetleyiciyle birlikte gelir. Örneğin, Çoğaltma Denetleyicisi belirli sayıda Pod’un her zaman çalışmasını sağlar veya Hizmet Denetleyicisi Kubernetes hizmetleri için yük dengeleme ve Hizmet Keşfi sağlar.
Ek olarak kube-controller-manager, depolamayı, ağı ve daha fazlasını yönetmek için denetleyiciler içerir. Çok çeşitli denetleyicilerle birlikte bu bileşen, Kubernetes dağıtımını daha sağlam ve yönetilmesi daha kolay hale getirir.
Kube-Zamanlayıcı
Kube-Scheduler, kümedeki düğümlerdeki Pod’ların zamanlanmasından sorumludur. Ayrıca, istenen Pod’u çalıştırmak için hangi düğümün en iyi seçim olduğunu belirlemek için mevcut kaynaklar ve düğüm kullanımı gibi çeşitli faktörleri de kullanır.
Kubelet
Kubelet, küme düğümleri üzerinde çalışan bir aracı olarak, bir düğüme atanan tüm Pod’ların çalıştığını ve sağlıklı olduğunu kontrol etmekten sorumludur. Bu aracı aynı zamanda Kubernetes Master düğümüyle iletişimi yönetir ve düğümün ve Pod’larının durumunu bildirir.
Kube-Proxy
Kube-Proxy, küme düğümleri üzerinde çalışan ve hizmetler ile bölmeler arasındaki trafiğin yönlendirilmesinden sorumlu olan bir aracıdır.
Kubectl istemcisi
Kubectl istemcisi, Kubernetes kümesindeki kaynakları yönetmek amacıyla Kubernetes API sunucusuyla etkileşimde bulunmak için kullanılır. Bu bileşen ayrıca bir Kubernetes kümesindeki kaynakları oluşturmak, güncellemek, silmek ve görüntülemek için de kullanılabilir.
Kubectl istemcisi aynı zamanda bir Kubernetes kümesini (başlatma, ağ oluşturma, RBAC ve diğer küme düzeyindeki ayarlar gibi) yapılandırmak için de kullanılabilir. Ek olarak Kubectl İstemcisi, Kubernetes kümesindeki sorunları ayıklamak ve gidermek amacıyla Kubernetes API sunucusuna bağlanmak için kullanılabilir .
Kubectl komut satırı aracı, Kubernetes API’sini kullanarak Kubernetes kümesiyle etkileşime girer. Varsayılan olarak Kubectl, Yönetici tarafından sağlanan lisansa dayalı kimlik bilgilerini kullanarak API sunucusuna bağlanmaya çalışır.
Öte yandan Kubectl, kimlik doğrulama amacıyla “taşıyıcı” veya “kullanıcı adı ve şifre” belirteçlerini kullanacak şekilde yapılandırılabilir. Kubectl’in kimliği doğrulandıktan sonra Kubernetes kümesindeki kaynakları yönetmek için API sunucusuna istekler gönderir.
Konteyner Çalışma Zamanı
Bir “konteyner çalışma zamanı” aslında belirli bir “Ana Bilgisayar” üzerinde konteynerleri çalıştıran bir yazılımdır. Kubernetes, Docker, Rkt ve CRI-O gibi çeşitli çalışma zamanlarını destekler.
Kubernetes sistemindeki temel bileşenler, bir düğüm kümesi genelinde kapsayıcıya alınmış uygulamaları düzenlemek ve koordine etmek için birlikte çalışır. Aşağıda bu bileşenlerin performansını özetledik.
- Kontrol ünitesi API sunucusu, zamanlayıcı ve kontrolör yöneticisi gibi çeşitli bileşenleri içerir.
- API sunucusu, Kubernetes kontrol ünitesindeki en önemli bileşen olarak kabul edilir ve Kubernetes API’nin kullanıma sunulmasından sorumludur.
- Zamanlayıcı ayrıca kümedeki düğümlerdeki Pod’ları da planlar.
- Denetleyici yöneticisi, “çoğaltma denetleyicisi” gibi çeşitli denetleyicileri barındıran ve sistemin durumunu izleyen ve istenen durumun korunmasını sağlamak için gerekli değişiklikleri uygulayan bir “hizmettir” (arka plan programı).
Kontrol ünitesi bileşenlerinin yanı sıra aşağıda listelediğimiz Kubelet ve KubeProxy gibi çok sayıda çalışan düğüm bileşeni bulunmaktadır.
- Kubelet, konteynerlerin bir düğüm üzerinde çalışmasını sağlamaktan ve API sunucusuna raporlama yapmaktan sorumludur.
- Kube-Proxy ayrıca düğümdeki hizmetler için ağ oluşturmayı ve yük dengelemeyi de yönetir. Tüm bu bileşenler, konteynerli uygulamalar için bir düzenleme platformu sağlamak üzere birlikte çalışır.
Konteyner veya Konteyner Çalışma Zamanı
Kubernetes Container veya Container-Runtime (konteyner çalışma zamanı olarak bilinir), konteynerli uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştirmek için kullanılan bir sistemdir. Bu sistem, konteynerlerimizi yönetmek ve izlemek için basit bir yol sağlayarak, onu bulutta operasyonel iş yüklerini çalıştırmak için ideal bir seçenek haline getiriyor.
Kubernetes Container veya Container-Runtime, Docker’ı temel alır ancak operasyonel iş yüklerini çalıştırmak için onu daha uygun hale getiren birkaç başka özellik içerir. Bu özellikler, ana bilgisayar başına birden fazla kapsayıcı desteği, otomatik yeniden başlatma ve kendi kendini iyileştirmeyi içerir.
Kubernetes ayrıca konteynerleri izlemek ve yönetmek için Kubelet ve Kubectl gibi bir dizi araç sağlar. Bu araçlar, konteynerlerin izlenmesini ve bunların doğru ve sorunsuz bir şekilde çalıştığından emin olmayı kolaylaştırır.
Kubernetes’i Windows’a nasıl yükleyebilirim?
Bu bölümde Kubernetes platformunun ve çeşitli şeylerin izlenmesine ve yönetilmesine olanak sağlayan web tabanlı grafiksel kontrol panelinin Windows işletim sistemi üzerinde nasıl kurulup kurulacağını öğrenecek ve adımlarını birlikte inceleyeceğiz.
Aşağıda dikkat edilmesi gereken donanım ve yazılım gereksinimlerinden bazılarını belirttik.
Kubernetes donanım önkoşulları nelerdir?
- Ana düğüm en az 2 GB bellek gerektirir.
- Çalışan düğüm 700 MB bellek kapasitesine ihtiyaç duyuyordu.
Kubernetes yazılımının önkoşulları nelerdir?
- Hype-V
- Docker masaüstü
- Benzersiz MAC adresi
- Her düğüm için benzersiz UUID
Ayrıca kümedeki tüm cihazlar arasında mükemmel bağlantıların olduğundan emin olmak gerekir.
adımları yükle
Aşağıda Kubernetes kurulum adımlarını birlikte inceleyeceğiz.
1. Adım: Hyper-V’yi yükleyin ve yapılandırın
Bildiğimiz gibi Windows işletim sisteminin Hyper-V adında VirtualBox’ın daha gelişmiş bir örneği olan kendi sanallaştırma yazılımı bulunmaktadır. Hyper-V, “sanal makinelerimizi” (VM’ler) komut satırı veya Microsoft’un ücretsiz GUI aracı aracılığıyla yönetmemize olanak tanır. Hyper-V’yi etkinleştirmek basittir ancak bundan önce bilgisayarımızın aşağıdaki gereksinimleri karşıladığından emin olmamız gerekir.
- İşletim sistemimiz Windows 10’dur (Enterprise, Pro veya Education sürümlerinden biri).
- En az 4 GB RAM’e ve sanallaştırma desteğine sahip bir işlemciye sahip olun (bunun BIOS ayarlarında etkin olup olmadığını kontrol edin).
Windows kurulduğunda etkinleştirilmemiş olabilecek Hyper-V gibi özellikleri etkinleştirebilir veya devre dışı bırakabiliriz. Bu özelliklerden bazılarının Windows Update aracılığıyla ek bileşenler indirmek için İnternet erişimi gerektirdiğini unutmayın. Sisteminizde Hyper-V’yi etkinleştirmek için verilen adımları izleyin.
Denetim Masasına girin ve Programlar seçeneğini seçin.
Daha sonra Programlar ve Özellikler bölümünde Windows Özelliklerini Aç veya Kapat’ı seçiyoruz.
Hyper-V ve Windows Hypervisor Platform öğelerini kontrol edin ve son olarak Tamam’a tıklayın.
Özelliklerin indirilmesi ve kurulması birkaç dakika sürebilir ve bu süre içinde Windows’un yeniden başlatılması gerekebilir.
Hyper-V’nin sisteme başarılı bir şekilde kurulmasını sağlamak için PowerShell’de (Yönetici modunda) aşağıdaki komutu çalıştırıyoruz.
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
sırasında durum: Etkin Yukarıdaki komutu PowerShell’de yürütmeye yanıt olarak gördük, sonraki adımlara geçiyoruz.
Adım 2: Windows için Docker’ı indirin ve yükleyin
Daha önce de belirttiğimiz gibi Kubernetes, Docker üzerine kurulmuş bir konteyner koordinasyon sistemidir. Bu platform temel olarak Docker konteynerleriyle etkileşime girmek ve kurumsal düzeyde çeşitli şeyleri yönetmek için bir araçtır. Windows kullanıcıları Docker Desktop’ı kullanabilir. Windows için “Docker Desktop”ı ” + ” adresinden kolaylıkla indirip kurabiliriz .
Windows için Docker Desktop, Docker’ın Windows 10 için optimize edilmiş bir sürümüdür. Bu sürüm, “Dockerlaştırılmış” uygulamaların kurulumunu, dağıtımını ve yürütülmesini kolaylaştıran bir Windows uygulamasıdır. Bu programı kullanmak Windows üzerinde Docker programları geliştirmenin en hızlı ve güvenilir yoludur. Çünkü Windows Hyper-V ağını ve sanallaştırmasını kullanıyor. Windows için Docker Desktop, Docker kapsayıcılarını Windows’un yanı sıra Linux’ta da çalıştırabilir.
Docker Desktop kurulumu için aşağıdaki adımları takip ediniz.
- Yükleyiciyi çalıştırmak için Docker for Windows Installer dosyasına çift tıklayın.
- Kurulum işlemi tamamlandıktan sonra Docker otomatik olarak çalışacaktır. Docker’ı çalıştırdıktan sonra terminal üzerinden ona erişebiliriz (Docker balinası simgesi Windows bildirim alanında da görülebilir).
- Docker komutlarını PowerShell gibi bir komut satırı terminalinde test edebiliriz.
- Docker Version komutunu çalıştırarak Docker versiyonunu kontrol ediyoruz.
- Docker Run Hello-World’ü çalıştırmak, Docker’ın görüntüleri alma ve çalıştırma yeteneğini de doğrulayabilir.
Windows için Docker Desktop çalıştığı sürece ona herhangi bir terminalden erişebiliriz. Windows görev çubuğundaki Docker balinası simgesinde, kullanıcı arayüzü üzerinden erişilebilen bir ayarlar düğmesi bulunur.
Adım 3 Windows 10’da Kubernetes nasıl kurulur
Docker, bazı ayarları değiştirmemize veya Kubernetes’i kurup etkinleştirmemize olanak tanıyan bir grafik arayüz içerir. Kubernetes’i kurmak için aşağıdaki talimatları uygulamanız yeterlidir.
Tepsideki (Windows saatinin yanında) Docker simgesine sağ tıklayın ve Özellikler’i seçin.
Daha sonra açılır menüden Ayarlar seçeneğini seçin.
Sol panelden Kubernetes’i seçin ve ardından Kubernetes’i Etkinleştir seçeneğini işaretleyin. Son olarak Apply butonuna tıklıyoruz.
Docker bu işlem sırasında ek bağımlılıklar ve paketler kuracaktır. Bu işlem sistem verimliliğine ve internet hızına bağlı olarak birkaç dakika sürer ve son olarak ekranda “Kurulum Tamamlandı” mesajı görüntülenir. Kubernetes kurulduktan sonra her şeyin düzgün çalıştığından emin olmak için Docker’ı kullanabiliriz.
Şu anda hem Docker hem de Kubernetes hizmetleri başarılı ve hatasız çalışıyorsa pencerenin alt ve sol tarafındaki simgeleri yeşile dönecektir.
Adım 4 Kubernetes kontrol paneli nasıl kurulur?
Kubernetes Dashboard aslında Kubernetes kaynaklarını yönetmek için kullanılan resmi web tabanlı kullanıcı arayüzüdür. Bu kontrol paneli varsayılan olarak başlatılmaz. Kubernetes uygulamaları Kubectl komut satırı arayüz aracı kullanılarak kolayca başlatılabilir. Bu şekilde bulutumuzla etkileşime girmemize ve Pod’larımızı, Düğümlerimizi ve Kümelerimizi yönetmemize olanak tanır. Argümanı ileterek Kubernetes kaynaklarını da kullanabiliriz. uygula Ve YAML yapılandırma dosyamızı buna göre kolayca oluşturun veya güncelleyin.
Aşağıdaki komutları kullanarak Kubernetes Dashboard’u aktif edip uyguluyoruz. Öncelikle ” + ” kısmından YAML konfigürasyon dosyasını alıyoruz ve ardından aşağıdaki komutu kullanarak çalıştırıyoruz.
. kubectl application -f .\recommended.yaml
Kubernetes kontrol panelinin çalışır durumda olduğundan emin olmak için aşağıdaki komutu çalıştırın.
kubectl.exe get -f .\recommended.yaml.txt
Bu komutun sonucu aşağıdaki görsele benzer bir liste olacaktır.
Adım 5 Kubernetes kontrol paneline nasıl erişilir?
Kontrol paneline jetonlarla erişim 2 şekilde mümkündür.
- Kubernetes kurulumu sırasında oluşturulan varsayılan belirteci kullanma.
- “Kullanıcılar” oluşturun, onlara izin verin (erişim) ve ardından oluşturulan jetonu alın (daha güvenli bir yöntem).
Basitliği nedeniyle ilk yöntemi kullanıyoruz. Bu amaçla PowerShell’de (CMD değil) aşağıdaki komutu çalıştırıyoruz.
((kubectl -n kube-system gizli varsayılanı tanımlar | Select-String "token:") -split " +")[1]
Oluşturulan tokenı kopyalayıp aşağıdaki komutu uyguluyoruz.
kubectl proxy'si.
Görüntülenen bağlantıyı tarayıcınızda açın.
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services:/proxy/
Tokenı seçip oluşturulan tokenı yapıştırıyoruz. Daha sonra (Giriş Yap) kısmına giriyoruz.
Her şey doğru ayarlanmışsa kontrol panelimizi ve bulut kaynaklarımızı görebiliriz. Bu sayede neredeyse tüm zor görevleri her zaman komut satırı arayüzüne ihtiyaç duymadan yapabiliriz. Elbette zaman zaman komut satırını kullanmak zorunda kalmamız da mümkün ancak Docker ve Kubernetes’i iyi anlamıyorsak ya da bulutumuzu yönetmek için yeterli zamanımız yoksa birinden yardım almamız daha doğru olur. Kesinlikle daha pahalıya mal olacak bazı PaaS sağlayıcıları bizi arayacaktır.
Sıkça Sorulan Sorular
Bu bölümde Kubernetes sistemi hakkında sıkça sorulan bazı soruları belirttik ve cevapladık.
Kubernetes’in anlamı nedir?
Kubernetes adı, dümenci veya bir geminin dümencisi (yani konteyner içeren bir gemi) anlamına gelen eski Yunanca bir kelimeden gelir. Kubernetes logosundaki dümen de aynı şeyi ifade ediyor ve orijinal adı olan “Project 7″den kaçınmak için 7 yüzü veya teli var.
Kubernetes’i öğrenmek için gerekli beceriler nelerdir?
Kubernetes’i öğrenmek için gereken beceriler arasında Linux’un temelleri ve komutları ile konteyner çalışma zamanı teknolojilerine (Docker gibi) göreceli aşinalık yer alır.
Kubernetes’i öğrenmenin en hızlı yolu nedir?
Yapmamız gereken ilk şey temelleri anlamaktır. Bunun için Kubernetes ve mimarisiyle başlayabiliriz. Bu arada atlamadan iyi öğrenilmesi gereken çeşitli terimlerle de karşı karşıyayız çünkü bunlar yapıcı unsurlardır. Ayrıca Kubectl ile de uygulamalı çalışmamız gerekiyor. Bu sayede teorik konuların yanı sıra bunları nasıl uygulayacağımızı da öğrenmiş oluyoruz.
Kubernetes mimarisinin ana bileşenleri nelerdir?
Kubernetes mimarisinde 2 ana bileşenle karşı karşıyayız; ana düğüm (veya kontrol ünitesi) ve çalışan düğüm. Ana düğümün kendisi API sunucusu, zamanlayıcı, denetleyici yöneticisi, Etcd ve bulut denetleyici yöneticisi (isteğe bağlı) olmak üzere 4 bileşen içerir. Çalışan düğümü ayrıca 3 bileşen içerir: Kubelet, Kube-Proxy ve Container Runtime.
Kubernetes’in kavramları nelerdir?
Kubernetes’i öğrenirken Kubernetes’in ve kavramlarının yapı taşları olarak kabul edilen Pod’lar, hizmetler, ad alanları, dağıtımlar vb. gibi yeni ve farklı terimlerle karşılaşacağız.
Kubernetes’te belirgin olan nedir?
Basitçe söylemek gerekirse manifest, JSON veya YAML formatında Kubernetes API nesne ayrıntılarını içerir. Manifest aslında, manifest’i uyguladığımızda Kubernetes’in koruduğu nesnenin istenen durumunu belirtir.
Kubernetes’te İş Yükü Nedir?
Workload, Kubernetes üzerinde çalışan bir uygulamadır. İş yükümüz ister tek bileşenli ister birden fazla (birlikte çalışan) olsun, Kubernetes’te bunu bir Pod koleksiyonu içinde çalıştırıyoruz. Kubernetes’teki Pod’un küme üzerinde çalışan bir dizi kapsayıcıyı temsil ettiği unutulmamalıdır.
Docker ve Kubernetes arasındaki fark nedir?
Docker, konteyner yürütme motoru veya “Konteyner Çalışma Zamanı”dır (Konteyner Çalışma Zamanı), Kubernetes ise birden fazla Konteyner Çalışma Zamanından gelen konteynerleri çalıştırmak ve yönetmek için kullanılan bir platformdur.