Pod
Kısaca
Pod, Kubernetes'te dağıtılabilen en küçük birimdir: ağ adresini ve depolamayı paylaşan, tek bir node'da birlikte zamanlanan bir ya da daha çok konteynerdir.
Kubernetes'te pod nedir?
Kubernetes'te konteynerleri doğrudan çalıştırmazsınız; pod'ları çalıştırırsınız. Pod, aynı makinede (node) her zaman birlikte çalışan ve aynı ağ kimliğini ve depolama birimlerini paylaşan bir ya da daha fazla konteyneri sarmalar. Çoğu pod tek bir uygulama konteyneri içerir ve Kubernetes pod'ları temel zamanlama birimi olarak oluşturur, taşır ve siler.
Bir pod'daki tüm konteynerler tek bir IP adresini ve port alanını paylaşır; bu yüzden birbirleriyle localhost üzerinden konuşabilir ve dosya paylaşmak için aynı birimleri bağlayabilir. Bu, pod'ları bir log gönderici ya da service mesh proxy'si gibi yardımcı bir konteynerin ana uygulamanın yanında çalıştığı sidecar deseni için uygun kılar. Pod'lar tek kullanımlık olacak şekilde tasarlanmıştır: bir pod çökerse ya da node'u arızalanırsa onarılmaz, yeni bir adı ve IP adresi olan yeni bir pod ile değiştirilir; trafiğin, o anda sağlıklı olan pod'lara yönlendiren sabit bir adres olan Service üzerinden gönderilmesinin nedeni budur.
Uygulamada pod'ları nadiren elle oluşturursunuz. Bir Deployment, StatefulSet veya Job tanımlarsınız ve bu denetleyici bir şablondan doğru sayıda pod'u oluşturur ve sürdürür, başarısız olanları değiştirir ve yeni sürümleri kademeli yayar. Pod, konteynerler için paylaşımlı bir daire gibidir: ev arkadaşları tek bir adresi ve tek bir mutfağı paylaşır ve kira sözleşmesi bittiğinde herkes birlikte taşınır.
Pod sıklıkla konteynerle karıştırılır. Konteyner, kendi imajı olan tek bir paketlenmiş süreçtir; pod ise bir ya da daha fazla konteynerin etrafındaki Kubernetes sarmalayıcısıdır ve paylaşılan ağ, depolama ve bir yaşam döngüsü ekler. Pod ayrıca bir node değildir: node sanal ya da fiziksel makinedir ve bir node genellikle birçok pod çalıştırır.
Önemli noktalar
- Pod, Kubernetes'in zamanladığı ve yönettiği en küçük birimdir.
- Aynı pod'daki konteynerler bir IP adresini,
localhost'u ve birimleri paylaşır. - Çoğu pod tek konteyner çalıştırır; aynı pod'daki yardımcı konteynerlere sidecar denir.
- Pod'lar tek kullanımlıktır; başarısız olduklarında onarılmaz, değiştirilir.
- Deployment gibi denetleyiciler pod'ları oluşturur ve yönetir; Service'ler onlara sabit bir adres verir.
Örnek
apiVersion: v1
kind: Pod
metadata:
name: web
labels:
app: web
spec:
containers:
- name: app # the main application container
image: registry.example.com/web:1.4.2
ports:
- containerPort: 8080
- name: log-shipper # sidecar: same IP address and localhost as the app
image: registry.example.com/log-shipper:2.0Sık sorulan sorular
Pod ile konteyner arasındaki fark nedir?
Konteyner, bir imajdan paketlenmiş yalıtılmış tek bir süreçtir. Pod ise bir ya da daha fazla konteyner tutan, onlara paylaşılan bir IP adresi ile depolama veren ve bir node'a tek bir birim olarak zamanlanan bir Kubernetes nesnesidir.
Bir pod'un IP adresi neden değişir?
Pod'lar tek kullanımlıktır; bu yüzden biri değiştirildiğinde yeni pod yeni bir IP adresi alır. Uygulamalar pod'lara sabit bir ad ve adres tutan ve trafiği mevcut sağlıklı pod'lara ileten bir Kubernetes Service üzerinden erişmelidir.
Bir pod'a birden fazla konteyner koymalı mıyım?
Yalnızca sıkı sıkıya bağlı olup aynı node'da birlikte çalışmaları gerekiyorsa, örneğin bir uygulama ve onun loglama ya da proxy sidecar'ı. Bir web uygulaması ve veritabanı gibi ayrı servisler, bağımsız olarak ölçeklenip güncellenebilmeleri için ayrı pod'lara aittir.
İlgili sayfalar
- KubernetesDevOps ve Bulut, s. 30Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
- 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.
- Service MeshDevOps ve Bulut, s. 47Service mesh, mikroservisler arası trafiği yöneten; kod değiştirmeden şifreleme, yeniden deneme, yönlendirme ve izleme ekleyen bir altyapı katmanıdır.
- Otomatik ÖlçeklemeDevOps ve Bulut, s. 37Otomatik ölçekleme, sunucu ya da konteyner gibi bilişim kaynaklarının talebe göre otomatik eklenip çıkarılmasıdır; performans sabit, maliyet düşük kalır.
- Health CheckBackend ve API'ler, s. 20Health check, bir servisin çalışır durumda olup olmadığını ve isteklere yanıt verebildiğini bildiren, genelde bir HTTP endpoint'i olan küçük otomatik testtir.
- 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.
- Sidecar DeseniYazılım Mimarisi, s. 37Sidecar deseni, bir uygulamanın yanında yaşam döngüsünü ve ağını paylaşan yardımcı bir süreç çalıştırarak loglama, proxy ya da güvenlik gibi özellikler ekler.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin