DaemonSet logging
- Docker & Kubernetes kursu
- İleri seviye
- Ders 59/70
- 4 dk
DaemonSet olarak Fluentd dağıtmayı öğrenirsin.
DaemonSet ile logging
Toplayıcı DaemonSet'in node log'larına erişmesi için üç şey gerekir: node'un /var/log dizinini hostPath ile salt okunur bağlamak, pod meta verisini okumak için RBAC izni ve tüm node'larda çalışmak için control-plane taint'ine toleration:
spec:
serviceAccountName: fluent-bit
tolerations:
- operator: Exists
volumes:
- name: varlog
hostPath:
path: /var/log
containers:
- name: fluent-bit
image: fluent/fluent-bit:3.1
volumeMounts:
- name: varlog
mountPath: /var/log
readOnly: trueToplayıcının izinleri
kubernetes süzgeci pod etiketlerini ve namespace'leri API'den okur; bu yüzden toplayıcının ServiceAccount'una cluster çapında okuma izni verilir:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: fluent-bit
rules:
- apiGroups: [""]
resources: ["pods", "namespaces"]
verbs: ["get", "list", "watch"]Uygulama Toplayıcı DaemonSet'i
Bir DaemonSet şablonunun spec bölümünü yaz (spec: ile başlayarak): serviceAccountName: fluent-bit; tolerations altında operator: Exists; varlog volume'ü hostPath /var/log; container adı fluent-bit, image fluent/fluent-bit:3.1; varlog'u /var/log'a readOnly: true ile bağla.
Başlangıç kodu
# buraya yazÖrnek çözüm
spec:
serviceAccountName: fluent-bit
tolerations:
- operator: Exists
volumes:
- name: varlog
hostPath:
path: /var/log
containers:
- name: fluent-bit
image: fluent/fluent-bit:3.1
volumeMounts:
- name: varlog
mountPath: /var/log
readOnly: trueBeklenen çıktı
daemonset.apps/fluent-bit created
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 tolerations altında yalnızca operator: Exists yazmak ne anlama gelir?
- Hiçbir taint'e tolerans yok
- Yalnızca control-plane
- Geçersizdir
- Tüm taint'lere tolerans; pod her node'a yerleşebilir Doğru cevap
Açıklama: Anahtarsız Exists her taint'le eşleşir; altyapı ajanlarında kullanılır.
2 Node'un log dizinini bağla.
volumes:
- name: varlog
hostPath:
path: ____
volumes:
- name: varlog
hostPath:
path: /var/log
Açıklama: Container log'ları /var/log/containers ve /var/log/pods altındadır.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
hostPath /var/log |
Node log dosyaları |
readOnly: true |
Yalnızca oku |
operator: Exists |
Tüm taint'lere tolerans |
ClusterRole |
Pod meta verisi okuma |