Kubernetes
- Okunuşu
- kubernetis
Kısaca
Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
Kubernetes nedir?
Çoğunlukla K8s olarak kısaltılan Kubernetes, bir konteyner orkestrasyon platformudur. Bir uygulama birçok sunucuda çok sayıda konteyner olarak çalıştığında, Kubernetes her konteynerin nerede çalışacağına karar verir, çöken konteynerleri yeniden başlatır, talebe göre büyütür ya da küçültür ve ağ trafiğini onlara yönlendirir. Başlangıçta Google'da geliştirilmiştir ve şimdi Cloud Native Computing Foundation (CNCF) tarafından sürdürülmektedir.
Kubernetes bildirimseldir (declarative): istenen durumu, örneğin "bu web uygulamasının üç kopyasını çalıştır" gibi, YAML dosyalarında tarif edersiniz ve Kubernetes gerçeği bu tanıma uydurmak için sürekli çalışır. Temel yapı taşları pod'lar (en küçük birim; birlikte çalışan bir ya da daha fazla konteyner), deployment'lar (pod kopyalarını yöneten ve güncellemeleri kademeli olarak yayan yapılar) ve service'lerdir (bir pod grubu için sabit ağ adresleri).
İyi bir benzetme, orkestrasyon sözcüğünün de geldiği yer olan orkestra şefidir. Müzisyenler (konteynerler) müziği çalar; şef ise doğru sayıda müzisyenin çaldığından emin olur, duran birinin yerine başkasını koyar ve her şeyi uyum içinde tutar. Büyük bulut sağlayıcıları yönetilen Kubernetes hizmetleri sunar; böylece ekiplerin kümenin kontrol katmanını (control plane) kendilerinin işletmesi gerekmez.
Kubernetes sık sık Docker ile karşılaştırılır, ancak ikisi farklı sorunları çözer: Docker tek tek konteynerleri oluşturur ve çalıştırırken Kubernetes bir küme üzerindeki birçok konteyneri yönetir. Kubernetes güçlü ama karmaşıktır; bu yüzden küçük projeler çoğu zaman Docker Compose, hizmet olarak platform (PaaS) ya da serverless barındırma gibi daha basit seçeneklerle rahatça idare eder.
Bir bakışta
Önemli noktalar
- Kubernetes, konteynerleri bir makine kümesi üzerinde orkestre eder.
- İstenen durumu YAML ile bildirirsiniz, Kubernetes de onu o şekilde korur.
- Pod'lar, deployment'lar ve service'ler temel yapı taşlarıdır.
- Ölçekleme, kendi kendini iyileştirme, kademeli güncelleme ve yük dengelemeyi üstlenir.
- K8s, Kubernetes'in kısaltmasıdır: bir K, sekiz harf ve bir s.
Örnek
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 3 # keep three copies of the container running at all times
selector:
matchLabels: { app: web }
template:
metadata:
labels: { app: web }
spec:
containers:
- name: web
image: example/web:1.0Sık sorulan sorular
Docker ile Kubernetes arasındaki fark nedir?
Docker, konteyner imajları oluşturmak ve genellikle tek bir makinede konteyner çalıştırmak için kullanılır. Kubernetes ise birçok makinedeki birçok konteyneri çalıştırıp yönetir; zamanlama, ölçekleme ve kurtarmayı üstlenir ve Docker ile oluşturulmuş imajları çalıştırabilir.
Kubernetes neden K8s olarak adlandırılıyor?
K8s bir numeronym'dir: 8, Kubernetes'te K ile s arasındaki sekiz harfi temsil eder. Adın kendisi ise dümenci ya da pilot anlamına gelen Yunanca sözcükten gelir.
Kubernetes'e ihtiyacım var mı?
Her zaman değil. Kubernetes, otomatik ölçekleme ve yüksek erişilebilirlik gerektiren birçok servis çalıştırdığınızda karşılığını verir; tek bir küçük uygulama için daha basit bir barındırma platformu ya da Docker Compose genellikle yeterlidir.
Sık karşılaştırılanlar
- Docker vs KubernetesDocker konteyner imajı oluşturur ve konteynerleri tek makinede çalıştırır; Kubernetes ise onları bir kümede yönetir: zamanlama, ölçekleme ve kendini onarma.
- Docker Compose vs KubernetesDocker Compose çok container'lı bir uygulamayı tek makinede çalıştırır; Kubernetes ise container'ları bir kümede ölçekleme ve otomatik onarımla yönetir.
İlgili sayfalar
- KonteynerDevOps ve Bulut, s. 28Konteyner, bir uygulamayı bağımlılıklarıyla paketleyip ana makinenin paylaşılan işletim sistemi çekirdeği üzerinde çalıştıran hafif, yalıtılmış bir pakettir.
- DockerDevOps ve Bulut, s. 15Docker, bir uygulamayı ve ihtiyaç duyduğu her şeyi, her makinede aynı şekilde çalışan bir konteyner içinde paketlemeye yarayan açık kaynaklı bir platformdur.
- Yük DengeleyiciDevOps ve Bulut, s. 54Yük dengeleyici, gelen trafiği birkaç arka uç sunucuya dağıtan bir sunucu ya da hizmettir; hiçbir sunucu aşırı yüklenmez ve uygulama erişilebilir kalır.
- DevOpsDevOps ve Bulut, s. 13DevOps, yazılım geliştirme ile BT operasyonlarını birleştirerek yazılımın daha hızlı ve güvenilir sunulmasını sağlayan bir kültür ve pratikler bütünüdür.
- MikroservislerYazılım Mimarisi, s. 24Mikroservisler, bir uygulamanın ağ üzerinden iletişim kuran, küçük ve bağımsız olarak dağıtılabilen servislere bölündüğü bir mimari tarzdır.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- HelmDevOps ve Bulut, s. 24Helm, Kubernetes'in paket yöneticisidir; uygulamanın yapılandırma dosyalarını tek komutla kurulup güncellenebilen ve geri alınabilen bir chart'ta paketler.
- kubectlDevOps ve Bulut, s. 29kubectl, Kubernetes'in komut satırı aracıdır: uygulamaları dağıtmak, incelemek ve değiştirmek için bir cluster'ın API sunucusuna istek gönderir.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin