This is the Trace Id: 8a10efdfc8dd32460b94da4149f2d511
Ana içeriğe atla
Azure
gradyan arka plan

Kubernetes nedir?

Dağıtımı, yönetimi ve ölçeklendirmeyi otomatikleştirerek kapsayıcıları nasıl çalıştıracağınızı öğrenin.

Kubernetes tanımı

Kubernetes, kapsayıcılı uygulamaların dağıtımını, yönetimini ve ölçeklendirilmesini otomatikleştiren açık kaynak yazılımdır. Sanal makinelerden oluşan kümeleri düzenler, kapsayıcıları zamanlar ve ortamlarda kendi kendini onarma, yük dengeleme ve taşınabilirlik sağlar.

Önemli çıkarımlar

  • Kubernetes, bir kümedeki birden çok sunucu genelinde kapsayıcı iş yüklerini çalıştırmanıza, denetlemenize ve genişletmenize yardımcı olan bir platformdur.
  • Kapsayıcıları Pod’lar halinde gruplandırırken kontrol düzlemi ise planlama yapar ve denetleyiciler istenen durumu korur.
  • Hizmet bulma, yük dengeleme, otomatik ölçeklendirme ve kendi kendini onarma işlevlerini yönetir (yeniden başlatma, değiştirme ve yeniden zamanlama).
  • Ekipler bunu ortamlar arasında taşınabilir sürümler için ve sağlık ile kararlılık ölçümlerini izlemek için kullanır.

Kubernetes’i açıklıyoruz

Kubernetes, DevOps'un kapsayıcıları bir küme genelinde dağıtmak, yönetmek ve ölçeklendirmek için kullandığı bir açık kaynak yazılımdır. Docker, Kubernetes ile birlikte yaygın olarak kullanılan varsayılan kapsayıcı dosya biçimi olan başka bir açık kaynak teknolojidir.

Kapsayıcılar

Kapsayıcılar, bir uygulamayı bağımlılıkları ve yapılandırmasıyla birlikte paketler, böylece uygulama farklı ortamlarda tutarlı şekilde çalışabilir. Bir uygulama geliştikçe birçok sunucuda çok sayıda kapsayıcı çalıştırabilirsiniz ve bunların hepsini elle koordine etmek karmaşık hale gelir. Kubernetes, bu karmaşıklığı açık kaynak bir API ve neyin nerede çalışacağına karar veren, ardından bunu çalışır durumda tutan bir denetim sistemiyle ele alır.

Kubernetes sizin için neler yapar?

Zamanlama ve kaynak yerleşimi

Kubernetes sanal makine kümelerini düzenleyip kapsayıcıları, kullanılabilir işlem kaynaklarına ve her bir kapsayıcının kaynak gereksinimlerine bağlı olarak çalışacak şekilde zamanlar.

Hizmet bulma ve yük dengeleme

Kubernetes, hizmet bulma ve yük dengelemeyi yönetir, böylece Pod’lar zaman içinde değişse bile trafik doğru Pod’lara yönlendirilebilir.

Talebe göre ölçeklendirme

Kubernetes, iş yüklerini işlem kullanımına ve belirlediğiniz istenen duruma göre ölçeklendirir.

Arıza durumunda kendi kendini onarma

Kubernetes, kaynak durumunu denetler ve sorun oluştuğunda kapsayıcıları yeniden başlatabilir veya çoğaltabilir. Başarısız olan kapsayıcıları yeniden başlatır ya da değiştirir ve iş yükleri hazır olana kadar trafiği kabul etmez.

Denetimli değişiklikleri destekler

Kubernetes, tanımladığınız istenen duruma göre otomatik dağıtım ve geri alma işlemleri de dahil olmak üzere çalışan uygulamalara yönelik dağıtım desenlerini destekler.

Yapılandırma ve gizli dizi yönetimi

Kubernetes, parolalar veya belirteçler gibi hassas bilgiler için gizli dizi ve yapılandırma yönetimi sağlar.

Depolama düzenleme

Kubernetes, Kubernetes’in depolama düzenleme modeline göre seçtiğiniz depolama sistemlerini (örneğin, yerel depolama veya genel bulut seçenekleri) bağlayabilir.

Kısa bir nesne sözlüğü

Kubernetes, bildirdiğiniz ve yönettiğiniz kaynaklar olan API nesneleri etrafında oluşturulmuştur. İşte birkaç tanesi:

  • Pod: Bir veya daha fazla kapsayıcıyı çalıştıran temel birim.

  • Hizmet: Bir uygulamayı kullanıma sunmanın ve trafiği değişen Pod’lara yönlendirmenin kararlı bir yolu.

  • Dağıtım: İstenen uygulama durumunu açıklamanın ve bunu zaman içinde güncelleştirmenin bir yolu (çoğu zaman dağıtımlar ve geri almalarla ilişkilidir).

  • Düğüm: Kümede Pod’ların çalıştığı bir makine.

  • Kontrol düzlemi: Küme durumunu ve zamanlama kararlarını yöneten bileşenler.

Hepsinin nasıl bir araya geldiği

  1. Uygulamanız için istenen durumu açıklarsınız (nelerin çalışacağı, kaç kopya olacağı ve kaynak gereksinimleri).

  2. Kontrol düzlemi, bu isteği Kubernetes API ve yedek depolama üzerinden kaydeder ve üzerinde işlem yapar.

  3. Zamanlayıcı, Pod’ları yeterli kaynağa sahip düğümlere yerleştirir.

  4. Düğüm bileşenleri iş yükünü çalıştırır.

  5. Denetleyiciler, gerçek durumun istenen durumla eşleşmesi için sürekli olarak uzlaştırma yapar; gerektiğinde iş yüklerini ölçeklendirir, değiştirir ve güncelleştirir.

Kubernetes mimarisi

Ana yapı taşları

Küme: Denetim düzlemi ve çalışan düğümleri

Bir Kubernetes kümesi genellikle iki bölüm halinde tanımlanır: kümeyi yöneten bir kontrol düzlemi ve iş yüklerinizi çalıştıran çalışan düğümleri.

Kontrol düzlemi bileşenleri

Bu bileşenler, kümenin genel durumunu yönetir:

  • kube-apiserver: Kubernetes HTTP API’sini kullanıma sunar (istekler için ön kapı).

  • etcd: Küme verileri için tutarlı ve yüksek erişilebilirliğe sahip bir anahtar değer deposu.

  • kube-scheduler: Yerleştirilmesi gereken Pod’ları bulur ve bunları bir düğüme atar.

  • kube-controller-manager: Gerçek durumu istenen duruma uzlaştıran denetleyicileri çalıştırır.

  • cloud-controller-manager (isteğe bağlı): Kubernetes’i bulut sağlayıcısına özgü denetim mantığına bağlar.

Düğüm bileşenleri

Her çalışan düğümü, Pod’ları ve ağ kurallarını koruyan yazılım çalıştırır:

  • kubelet: Kapsayıcıları dahil olmak üzere Pod’ların düğümde çalışmasını sağlar.

  • kube-proxy (isteğe bağlı): Hizmetleri desteklemek için ağ kurallarını korur.

  • kapsayıcı çalışma zamanı: Kapsayıcıları düğümde çalıştırır.

Pod'lar: Temel çalışma birimi

Kubernetes, kapsayıcıları doğrudan özet içinde tek tek zamanlamaz. Bir veya daha fazla kapsayıcıyı bir Pod olarak gruplandırır ve bu, temel çalışma birimi olur. Pod’lar daha sonra tanımladığınız istenen duruma göre ölçeği artırır veya azaltır.

Pratikte bu, şu anlama gelir:

  1. Çalıştırmak istediğiniz uygulamayı tanımlarsınız.

  2. Kubernetes, Pod’ları kullanılabilir işlem kaynağı olan makinelere zamanlar.

  3. Denetleyiciler, kümeyi istediğiniz duruma doğru ilerletmeye devam eder.

Hizmet ağ iletişimi

Pod’lar gelip geçici olabilir, bu yüzden Kubernetes, bir kümede uygulamaları tanımlamak ve çalıştırmak için birleştirdiğiniz temel yapı taşları olan ve iş yüklerine ulaşmak için kararlı yollar sunan temel öğeler sağlar.

Pod ağ iletişimiyle ilgili temel bilgiler

Her Pod kendi küme genelinde IP adresini alır ve Pod’lar, Kubernetes ağ modelinde ağ adresi çevirisi (NAT) olmadan düğümler arasında iletişim kurabilir.

Hizmetler

Hizmet API'si, Pod’lar tek tek zaman içinde değişse bile bir arka uç Pod kümesi için kararlı bir IP adresi veya ana bilgisayar adı sağlar.

EndpointSlice

Kubernetes, bir hizmeti şu anda hangi Pod’ların desteklediğini izlemek için uç nokta dilimi nesnelerini korur.

Giriş/Ağ Geçidi API'si

Hizmetleri küme dışındaki istemcilere sunmak için Kubernetes, Ağ Geçidi API’sini (ve öncülü olarak da giriş) destekler.

LoadBalancer Hizmetleri

Bazı ortamlar, LoadBalancer hizmet türü kullanılarak bir hizmeti harici olarak kullanıma sunabilir.

Bir kümede çalıştırabileceğiniz eklentiler

Kubernetes kümeleri, genellikle temel bileşenlerin ötesinde işlevsellik sağlayan eklentiler içerir. Örneğin:

  • Küme genelinde ad çözümlemesi için DNS.

  • Küme yönetimi için web kullanıcı arabirimi (pano).

  • Ölçüm toplama için kapsayıcı kaynağı izleme.

  • Günlükleri merkezi olarak toplamak için küme düzeyinde günlük kaydı.

Kubernetes nasıl çalışır?

Kubernetes, kapsayıcılı uygulamaları bir makine kümesi üzerinde çalıştırır ve onları tanımladığınız durumda tutar. Bunu, işleri doğru makinelere yerleştirerek, trafiği doğru yerlere yönlendirerek ve hatalarla değişiklikleri izleyerek yapar.

Temel akış

1. Ne çalıştırmak istediğinizi siz tanımlarsınız

Çoğu Kubernetes iş yükü, belirtilen bir “istenen durum” ile başlar (nelerin çalışması gerektiği, kaç kopya olacağı ve nasıl kullanıma sunulacakları). Kubernetes, bildirim temelli yapılandırma ve otomasyon üzerine kuruludur.

2. Kubernetes bunun nerede çalışması gerektiğine karar verir

Kubernetes, kapsayıcıları kullanılabilir işlem kaynaklarına ve her kapsayıcının gereksinimlerine göre kümedeki makinelere zamanlar. Kapsayıcılar, Kubernetes’in bir makineye yerleştirdiği birim olan Pod’larda çalışır.

3. Kubernetes, gerçek durumu istenen durumunuzla sürekli karşılaştırır

Denetleyiciler kümeyi izler ve değişiklikleri yapmak için API sunucusunu kullanarak geçerli durumu istenen duruma yaklaştırmak için çalışır.

Kapsayıcı zamanlama ve günlük yönetim

Zamanlama, “bu nerede çalışmalı?” kararıdır.

1. Tek tek kapsayıcılar değil, Pod'lar zamanlanır

Kubernetes, kapsayıcıları Pod’lar halinde gruplandırır ve ardından bu Pod’ları makinelere yerleştirir.

2. Zamanlayıcı, Pod'ları uygun bir düğüme atar

kube-scheduler henüz atanmış Pod’ları arar ve onlar için bir düğüm seçer.

3. Düğüm aracıları Pod'ların çalışır durumda kalmasını sağlar

Her düğümde kubelet, Pod’ların çalıştığından emin olur (kapsayıcıları da buna dahildir).

Yük dengeleme ve hizmet bulma

Kapsayıcılar ve Pod’lar oluşturulabilir, taşınabilir veya değiştirilebilir. Bu yüzden uygulamaların birbirini bulmak için kararlı yöntemlere ihtiyacı vardır.

Hizmet bulma ve yük dengeleme yerleşik davranışlardır

Kubernetes, hizmet bulmayı yönetir ve yük dengeleme kullanır, böylece Pod’lar zaman içinde değişse bile trafik yönlendirilebilir.

Hizmetler, değişen bir Pod kümesi için kararlı bir adres sağlar

Hizmet API'si, bir veya daha fazla Pod tarafından desteklenen bir hizmet için kararlı bir IP adresi veya ana bilgisayar adı sağlar ve Kubernetes, destekleyen Pod’ları EndpointSlice nesneleri üzerinden izler.

Pod'lar değiştikçe trafik yönlendirmesi güncellenir

Bir hizmetin arkasındaki Pod’lar değiştiğinde, hizmet yönlendirmesi buna uyum sağlar. Böylece trafik geçerli arka uçlara ulaşmaya devam eder.

Uygulamaları ölçeklendirme (ve “istenen durum” neden önemlidir?)

Kubernetes, işlem kullanımına göre ölçeklendirme dahil olmak üzere iş yüklerini belirlediğiniz duruma doğru ölçeklendirebilir.

Yaygın ölçeklendirme fikirleri şunlardır:

  • Daha yüksek talebi karşılamak için daha fazla çoğaltma (daha fazla Pod).

  • Talep düştüğünde daha az çoğaltma.

  • Yerleştirme kararlarının CPU ve bellek ihtiyaçlarını yansıtması için kaynak izleme.

Bu, “istenen durum” modeline geri döner: Hedefi siz belirtirsiniz ve denetleyiciler buna ulaşmak için çalışmaya devam eder.

Kendi kendini onarma: Bir şey bozulduğunda ne olur?

Kubernetes, iş yükü durumunu ve kullanılabilirliğini korumayı amaçlayan kendi kendini onaran davranışları içerir. Bunlar:

  • Başarısız kapsayıcıların yeniden başlatılması (kapsayıcı düzeyinde yeniden başlatmalar).

  • İstenen çoğaltma sayısını korumak (kopya değişimi) için başarısız Pod’ların değiştirilmesi.

  • Düğümler kullanılamaz hale geldiğinde iş yüklerinin yeniden zamanlanması.

  • Trafiğin yalnızca iyi durumda olan Pod'lara gitmesi için başarısız Pod’ların hizmet uç noktalarından kaldırılması (hizmetler için yük dengeleme).

Kendi kendini onarma, kapsayıcı durumunu denetler ve sorun oluştuğunda onları yeniden başlatır veya çoğaltır.

Kubernetes KPI’larının rolü

Temel performans göstergeleri (KPI’lar veya ölçümler), küme durumunu ve iş yükü davranışını anlamak için kullanılır.

KPI’ların kaynağı

  • Kubernetes sistem bileşenleri, panolar ve uyarılar için yararlı olan ölçümler (Prometheus biçimi) üretir.

  • Ölçümler genellikle kube-apiserver, kube-scheduler, kubelet, kube-proxy ve kube-controller-manager gibi bileşenlerin /ölçüm HTTP uç noktasında kullanılabilir.

KPI’ların tespit etmenize yardımcı olduğu durumlara örnekler

  • Küme durumu sinyalleri (bileşen düzeyinde ölçümler ve hata desenleri)

  • İş yükü kararlılığı (örneğin, sık yeniden başlatmalar veya değişimler)

  • Kapasite baskısı (kaynak ayırma ile talep arasındaki ilişki ve bunun ölçeklendirme kararlarıyla bağlantısı)

Bunun günlük işlemlerde neden önemli olduğu

İzleme, ekiplerin küme kaynakları, Kubernetes API’si, kapsayıcılar ve günlükler hakkında daha eksiksiz bir görünüm elde etmesini sağlar. Bu da sorunlar ile düzeltmeler arasındaki geri besleme döngüsünü kısaltır.

Avantajlar ve kullanım örnekleri

Kubernetes, birçok makinede çok sayıda kapsayıcıyı tutarlı bir şekilde çalıştırmak gerektiğinde sıkça tercih edilir. Trafik yönlendirme, ölçeklendirme ve kurtarma işlemleri de platform tarafından halledilir.

Ölçeklenebilirlik

Kubernetes, iş yüklerini hedef bir duruma doğru ölçeklendirebilir. Bu, talep değiştikçe onları büyütmek ya da küçültmek anlamına gelir. Ayrıca işlem kullanımına göre de ölçeklendirebilir.

Yaygın kullanım örnekleri

  • Değişken trafiğe sahip web uygulamaları (kampanyalar, sezonluk yoğunluklar): Yük değiştikçe çoğaltmaları ayarlayın.

  • Toplu işler veya olay temelli işleme: Ani çıkışlar için kapasite ekleyin ve ardından geri ölçeklendirin.

  • Mikro hizmetler: Tüm uygulamayı ölçeklendirmeden belirli hizmetleri ölçeklendirin.

Kaynak verimliliği

Kubernetes, otomatik bölme paketlemeyi destekler. Bu, kapsayıcıları CPU ve bellek gereksinimlerine göre düğümlere yerleştirerek kullanılabilir kaynakların daha iyi kullanılmasını sağlar. Ayrıca iş yüklerini yönetirken kaynak ayırmayı da izler.

Yaygın kullanım örnekleri

  • Birden çok ekip için paylaşılan kümeler: İş yüklerini kaynakların kullanılabilir olduğu yerlere yerleştirerek boşa giden kapasiteyi azaltın.

  • Karışık iş yükü kümeleri (hizmetler ve işler): Düğümleri manuel yerleştirme olmadan meşgul tutun.

Hizmet bulma ve yük dengeleme

Kubernetes, iş yüklerini DNS veya bir IP adresi kullanarak kullanıma sunabilir ve dağıtımları kararlı tutmak için ağ trafiğini dağıtabilir. Ayrıca hizmet bulmayı yönetir ve iş yükleri değiştikçe yük dengelemeyi dahil eder.

Yaygın kullanım örnekleri

  • Mikro hizmetler iletişimi: Hizmetler, Pod'lar değişirken birbirlerini kararlı adlar aracılığıyla bulur.

  • Kararlı bir uç nokta arkasındaki dahili API'ler: Trafiği yalnızca mevcut arka uçlara yönlendirin.

Kendi kendini onarma

Kubernetes, başarısız kapsayıcıları değiştirmek, düğümler kullanılamaz hale geldiğinde iş yüklerini yeniden zamanlamak ve istenen durumu korumak için tasarlanmıştır. Örnekler arasında kapsayıcı yeniden başlatmaları, çoğaltma değiştirme ve trafiğin yalnızca iyi durumdaki Pod'lara gitmesi için iyi durumda olmayan Pod'ları hizmet uç noktalarından kaldırma yer alır.

Yaygın kullanım örnekleri

  • Her zaman açık hizmetler: Başarısız örnekleri el ile müdahale olmadan yeniden başlatın veya değiştirin.

  • Sık düğüm değişiminin olduğu kümeler: Bir düğüm arızalandığında iş yüklerini yeniden zamanlayın.

  • Bir hizmet arkasındaki hizmetler: Trafiği iyi durumda olmayan Pod'lara yönlendirmeyi durdurun.

Daha güvenli sürümler

Kubernetes, otomatik dağıtım ve geri alma işlemlerini destekler. İstenen durumu siz tanımlarsınız ve Kubernetes, gerçek durumu kontrollü bir hızda buna doğru taşır.

Yaygın kullanım örnekleri

  • Sık uygulama güncelleştirmeleri: Değişiklikleri kademeli olarak yayınlayın, ardından gerekirse geri alın.

  • Birden çok hizmet veren ekipler: Sürüm yayınlama mekanizmalarının uygulamalar arasında tutarlı kalmasını sağlayın.

Taşınabilirlik

Kapsayıcılı uygulamalar altyapıdan ayrıdır ve Kubernetes, bunların şirket içi, sunucusuz, hibrit bulut ve çoklu bulut ortamlarında yerel makinelerden üretime taşınmasına yardımcı olurken ortamlar arasında tutarlılığı korur.

Yaygın kullanım örnekleri

  • Geliştirme/test/üretim eşliği: Aynı paketleme ve zamanlama modelini tüm ortamlarda koruyun.

  • Hibrit dağıtımlar: Sistemin bir kısmını şirket içinde, bir kısmını da bulutta aynı düzenleme yaklaşımıyla çalıştırın.

Kubernetes’i kullanmaya başlayın

Kubernetes, bildirim temelli yapılandırma ve makine öğrenimi otomasyonu ile kapsayıcılı iş yüklerini çalıştırmak için ortak bir yol sunar. Bunu, geniş ve büyüyen bir araç ile topluluk desteği kümesi destekler.

Buluta özel uygulamalar için neden hala önemli olduğu

Ekipler, birçok hizmetten, kısa ömürlü iş yüklerinden ve sık güncelleştirmelerden oluşan sistemler oluştururken Kubernetes pratik bir temel olmaya devam eder, çünkü odak noktası yinelenebilir işlemlerdir:

  • Ortamlar arasında tutarlı işlemler (kapsayıcılar bağımlılıklarıyla birlikte paketlenir ve farklı ortamlarda aynı şekilde çalışır).

  • Yaygın olarak kullanılabilen hizmetler, destek ve araçlarla geniş ve etkin bir ekosistem.

  • Topluluk tarafından oluşturulan eklentiler ve temel API'lerin sürümler arasında tutarlı kalmasını sağlayan bir uygunluk programı sayesinde genişletilebilirlik.

İş yükleri oluşturuyor veya çalıştırıyorsanız, Azure Kubernetes Service (AKS) kapsayıcılı uygulamaları dağıtıp yönetmenize yardımcı olur. Kontrol düzlemini ise Azure yönetir.

gradyan arka plan
Kaynaklar
Geliştirme

Azure kaynakları

En yeni geliştirici teknolojilerini inceleyin ve yeni beceriler edinin.
Eğitim

Kubernetes’e giriş

Bu kurs, Kubernetes kullanarak çözebileceğiniz iş sorunlarının türleri konusunda size rehberlik eder.
Eğitim

Öğrenciler için Microsoft Azure

Kariyerinize hızlı başlangıç yapmak ve dünyada olumlu bir etki bırakmak için beceriler kazanın.
SSS

Sık sorulan sorular

  • Kubernetes, kapsayıcılı uygulamaları bir küme genelinde dağıtmak, yönetmek ve ölçeklendirmek için kullanılır. İş yüklerini kullanılabilir işlem gücüne göre zamanlar, trafiği hizmet bulma ve yük dengeleme ile yönlendirir ve başarısız kapsayıcıları yeniden başlatarak veya değiştirerek uygulamaların çalışır durumda kalmasına yardımcı olur.
  • Kubernetes genellikle kapsayıcılı uygulamalar çalıştıran geliştiriciler ve platform yöneticileri tarafından kullanılır. Kontrol düzlemiyle ilgili bakımı azaltmak istiyorsanız Azure Kubernetes Service (AKS) gibi yönetilen bir hizmet kontrol düzlemini idare edebilir, siz de düğümlere ve uygulamalara odaklanabilirsiniz.
  • Evet. Kubernetes, kapsayıcılı uygulamaları yerel veya şirket içi altyapıda çalıştırabilir. Hibrit ve çok bulutlu kurulumları da destekler. Uygulama temel makinelerden ayrı paketlendiğinden kapsayıcılar taşınabilir kalır.
  • Biraz zaman alabilir çünkü birkaç temel kavram vardır (kümeler, düğümler, Pod'lar, hizmetler). Temel bilgilerle başlayın, ardından küçük bir uygulama dağıtarak pratik yapın ve güven kazanmak için rehberli bir öğrenme yolunu izleyin.