Docker & Kubernetes
etcd nedir?
etcd'nin küme durumunu sakladığını öğrenirsin.
etcd nedir?
etcd, cluster'ın tüm durumunu (her nesnenin istenen ve gerçek hâlini) tutan dağıtık, tutarlı bir anahtar-değer veritabanıdır. Tutarlılığı Raft uzlaşma algoritmasıyla sağlar: yazma, üyelerin çoğunluğu (quorum) onaylayınca kesinleşir. Bu yüzden etcd tek sayıda üyeyle (3, 5) çalıştırılır.
3 üye -> quorum 2 -> 1 üye kaybına dayanır
5 üye -> quorum 3 -> 2 üye kaybına dayanır
4 üye -> quorum 3 -> yine yalnızca 1 kayba dayanır
Yalnızca kube-apiserver etcd'ye doğrudan bağlanır; diğer tüm bileşenler API sunucusu üzerinden konuşur.
etcd'nin içine bakmak
Kubernetes nesneleri etcd'de /registry/<tür>/<namespace>/<ad> anahtarlarında saklanır. etcdctl ile (control-plane node'unda, sertifikalarla) incelenebilir:
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
get /registry/deployments/default --prefix --keys-only
/registry/deployments/default/web
/registry/deployments/default/api
Değerler Protobuf ile kodlanmıştır; Secret'lar ise ancak şifreleme yapılandırıldıysa okunamaz durumdadır.
Uygulama etcd sağlığı
İki komut yaz (karttaki sertifika bayraklarıyla birlikte, her biri tek satırda): etcdctl ... endpoint health ile sağlığı sorgula; etcdctl ... member list -w table ile üyeleri listele. Bayraklar: --endpoints=https://127.0.0.1:2379, --cacert=/etc/kubernetes/pki/etcd/ca.crt, --cert=/etc/kubernetes/pki/etcd/server.crt, --key=/etc/kubernetes/pki/etcd/server.key.
Örnek çözümü göster
etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key endpoint health
etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key member list -w table
Kendini test et
-
3 üyeli bir etcd kümesinde 2 üye kaybedilirse ne olur?
- Quorum kaybolur; cluster yazma kabul etmez
- Normal çalışmaya devam eder
- Kalan üye lider olur ve yazar
- Veriler silinir
Cevabı göster
Quorum kaybolur; cluster yazma kabul etmez — Mevcut iş yükleri çalışmayı sürdürür ama hiçbir değişiklik yapılamaz.
-
Yalnızca anahtarları listele.
etcdctl get /registry/pods/default --prefix ____
Cevabı göster
etcdctl get /registry/pods/default --prefix --keys-only
-
Eşleştir.
- etcd
- Cluster durumu
- Raft
- Uzlaşma algoritması
- quorum
- Çoğunluk
- /registry/
- Anahtar öneki
Sıradaki ders: kube-scheduler