Çoklu container pod
- Docker & Kubernetes kursu
- Orta seviye
- Ders 23/82
- 4 dk
Bir Pod'da birden çok container çalıştırmayı öğrenirsin.
Çoklu container pod
Bir pod'a birden çok container, yalnızca birbirine sıkı bağlıysa konur. En yaygın desen sidecar'dır: ana uygulamaya yardımcı bir container (log toplayıcı, vekil, eşitleyici). Ortak bir emptyDir volume'ü üzerinden dosya paylaşırlar:
spec:
volumes:
- name: loglar
emptyDir: {}
containers:
- name: uygulama
image: api:1.0
volumeMounts:
- name: loglar
mountPath: /var/log/app
- name: log-gonderici
image: busybox:1.36
command: ["sh", "-c", "tail -F /loglar/app.log"]
volumeMounts:
- name: loglar
mountPath: /loglarInit container
initContainers, ana container'lardan önce sırayla çalışıp biten container'lardır. Bağımlılığın hazır olmasını beklemek ya da ayar dosyası hazırlamak için kullanılır; hepsi başarıyla bitmeden ana container'lar başlamaz:
spec:
initContainers:
- name: db-bekle
image: busybox:1.36
command: ["sh", "-c", "until nc -z db 5432; do sleep 2; done"]
containers:
- name: api
image: api:1.0Belirli bir container'ın log'u için kubectl logs api -c db-bekle kullanılır.
Uygulama Sidecar'lı pod
Bir pod YAML'ı yaz: adı api; volumes altında emptyDir: {} olan loglar volume'ü; iki container: uygulama (api:1.0, loglar'ı /var/log/app'e bağlar) ve log-gonderici (busybox:1.36, loglar'ı /loglar'a bağlar).
Başlangıç kodu
# buraya yazÖrnek çözüm
apiVersion: v1
kind: Pod
metadata:
name: api
spec:
volumes:
- name: loglar
emptyDir: {}
containers:
- name: uygulama
image: api:1.0
volumeMounts:
- name: loglar
mountPath: /var/log/app
- name: log-gonderici
image: busybox:1.36
volumeMounts:
- name: loglar
mountPath: /loglarBeklenen çıktı
pod/api created NAME READY STATUS RESTARTS AGE api 2/2 Running 0 9s
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Web uygulaması ve veritabanı aynı pod'a konmalı mı?
- Yalnızca üretimde
- Yalnızca Minikube'de
- Hayır; ayrı ölçeklenir ve ayrı yaşam döngüleri vardır Doğru cevap
- Evet, her zaman
Açıklama: Pod ölçeklendiğinde içindeki tüm container'lar birlikte kopyalanır.
2 Pod içindeki belirli container'ın log'unu göster.
kubectl logs api ____ db-bekle
kubectl logs api -c db-bekle
Açıklama: -c (container) container adını seçer.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
sidecar |
Yardımcı container |
emptyDir |
Pod ömürlü ortak dizin |
initContainers |
Önce çalışıp biter |
-c |
Container seçimi |