17_check_container_images.yml - Kullanım Kılavuzu
Amaç
Her host’ta yüklü container imajlarını envanterler:
| Sütun | Anlam |
|---|---|
IN_USE | yes = bu host’ta en az bir container (çalışan veya durmuş) bu imajı kullanıyor; no = şu an referans yok |
CREATED_AT/AGE | Docker: mutlak oluşturma zamanı. containerd/k3s: çoğu sürümde createdAt yok → ctr content AGE (örn. 6 months, 5 weeks) |
SIZE | Disk boyutu |
IMAGE | Repo:tag (ve kısa image id) |
Runtime otomatik bulunur:
- Docker varsa →
docker images+docker ps -a - crictl / containerd (K8s/k3s) varsa →
crictl images+crictl ps -a
İkisi birden varsa iki bölüm de basılır. Hiçbiri yoksa host atlanır / “yok” mesajı verilir.
Salt-okunur; imaj silmez / prune yapmaz.
Host kapsamı (önemli)
Envanter yalnızca playbook’un çalıştığı host(lar) içindir. Her node kendi imaj deposuna sahiptir; master’da görmek worker’dakileri göstermez. Tüm cluster için her node’u inventory’ye alıp hosts: all (veya uygun --limit) ile çalıştırın. Silme için aynı kural: 18_prune_unused_images.
Ortak görev: tasks/container_images_inventory.yml
03 ile farkı
03_check_docker_containers container süreçleri ve port linkleridir.
17 imaj katmanıdır: hangi imaj diskte, hangisi kullanımda, ne zaman gelmiş — prune / drift / disk doluluğu teşhisi için.
Gereksinimler
hosts: all(master, worker, singlenode, datanode…)become: true(sudo) — crictl/containerd genelde root ister- Hedefte
python3(rapor birleştirmesi için; modern Ubuntu’da varsayılan)
Çalıştırma
ansible-playbook -i inventories/cagatayuresincom/hosts.ini playbooks/17_check_container_images.yml
# Sadece worker'lar:
ansible-playbook -i inventories/musteri_a/hosts.ini playbooks/17_check_container_images.yml --limit workers
Çoklu makine
Her raporun başında:
# HOST: <inventory adı/IP>
# hostname: <sunucu hostname>
Çıktı nasıl okunur?
- IN_USE=yes üstte listelenir — canlı / yeni durmuş iş yükleri.
- IN_USE=no → prune adayı; silmeden önce başka node’un aynı imajı kullanıp kullanmadığına bak (cluster-wide
kubectl get pods -A -o jsonpath='{..image}'ayrı kontrol). - Aynı imajın birden fazla tag’i olabilir; id sütunu (
abcdef123456) eşleştirmede yardımcı olur. <none>:<none>/<untagged>→ dangling imaj; genelde temizlenebilir.- CREATED_AT, “ne zaman pull/build edildi” ipucudur; her zaman registry push zamanı değildir.
Örnek (kısaltılmış)
################################################################################
# HOST: 188.240.81.253
# hostname: cagatayuresincom
################################################################################
Runtime: crictl/containerd
=== containerd / crictl (K8s) ===
IN_USE CREATED_AT SIZE IMAGE
------ ------------------------ ---------- -----
yes 2026-01-15 10:00:00 UTC 77.0MB rancher/mirrored-metrics-server:v0.8.0 (7b9c9c4b9c)
no 2025-06-01 08:00:00 UTC 120.0MB old/unused:1.0 (aabbccddeeff)
Özet: toplam=40 kullanımda=18 kullanılmıyor=22
Notlar
- Çok imajlı host’ta
crictl inspectiile tarih toplama biraz sürebilir. - Rapor host-local’dir; cluster’ın tamamında “şu imaj bir yerde kullanılıyor mu?” sorusu için tüm node’larda 17 çalıştırıp
IN_USEsatırlarını birleştirmek gerekir.
Kullanılmayanları silmek
Aday listesi / silme: 18_prune_unused_images
# Sadece adaylar (silmez)
ansible-playbook -i inventories/cagatayuresincom/hosts.ini playbooks/18_prune_unused_images.yml
# Sil
ansible-playbook -i inventories/cagatayuresincom/hosts.ini playbooks/18_prune_unused_images.yml \
--extra-vars 'image_prune_confirm=true'