CodeBlanks Logo Icon CodeBlanks

DaemonSet logging

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: true

Toplayı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

terminal
# buraya yaz

Örnek çözüm

terminal
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: true

Beklenen çı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.

Soru
      volumes:
        - name: varlog
          hostPath:
            path: ____
Cevap
      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

İleri seviye bölümündeki tüm dersler