05_check_k8s_services.yml - Kullanım Kılavuzu

Read-Only k3s kubeadm

Amaç

Bu playbook, sistemde bulunan Kubernetes/container ile ilgili tüm systemd servislerini dinamik olarak keşfedip (sabit bir liste değil, kube|containerd|calico|etcd|runc desenine göre arama) her birinin aktif/enabled durumunu ve son 10 satır logunu raporlar.

Gereksinimler

  • hosts: all — her node’da çalışır.
  • Servis keşfi Ansible’ın yerleşik service_facts modülüyle yapılır, ek bir collection gerekmez.
  • journalctl çıktısı okunabilmesi için ilgili kullanıcının journal loglarına erişimi olmalıdır.

Çalıştırma Komutu

ansible-playbook -i inventories/musteri_a/hosts.ini playbooks/05_check_k8s_services.yml

# Belirli bir host/grup ile sınırlamak için:
ansible-playbook -i inventories/musteri_a/hosts.ini playbooks/05_check_k8s_services.yml --limit worker1

Örnek Çıktı

TASK [Ping connectivity test] **************************************************
ok: [203.0.113.10]

TASK [Service status report - active/enabled (when: matching services must exist)] ***
ok: [203.0.113.10] => (item=containerd.service) => {"msg": "containerd.service -> state: running, enabled at boot: enabled"}
ok: [203.0.113.10] => (item=kubelet.service) => {"msg": "kubelet.service -> state: running, enabled at boot: enabled"}

TASK [Service log report (when: logs must be readable)] ************************
ok: [203.0.113.10] => (item=kubelet.service) => {
    "msg": "===== kubelet.service recent logs =====\n... (last 10 lines) ..."
}

Notlar

  • Servis listesi tamamen dinamiktir: service_facts ile sistemdeki tüm servisler taranır, yalnızca isim deseni eşleşenler (kube, containerd, calico, etcd, runc) rapora dahil edilir. Docker bu desenin dışındadır.
  • Log satır sayısı 10 ile sınırlıdır — çok sayıda servis/host için çalıştırıldığında çıktının okunabilir kalması amaçlanıyor.
  • .get('state', ...) / .get('status', ...) kullanılmıştır çünkü bazı servis girdileri service_facts çıktısında eksik alanlarla gelebiliyor.