CodeBlanks Logo Icon CodeBlanks

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.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
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

Beklenen çıktı

https://127.0.0.1:2379 is healthy: successfully committed proposal: took = 4.2ms
+------------------+---------+-------+---------------------------+
|        ID        | STATUS  | NAME  |        PEER ADDRS         |
+------------------+---------+-------+---------------------------+
| 8e9e05c52164694d | started | cp-1  | https://192.168.49.2:2380 |
+------------------+---------+-------+---------------------------+

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 3 üyeli bir etcd kümesinde 2 üye kaybedilirse ne olur?

  • Quorum kaybolur; cluster yazma kabul etmez Doğru cevap
  • Normal çalışmaya devam eder
  • Kalan üye lider olur ve yazar
  • Veriler silinir

Açıklama: Mevcut iş yükleri çalışmayı sürdürür ama hiçbir değişiklik yapılamaz.

2 Yalnızca anahtarları listele.

Soru
etcdctl get /registry/pods/default --prefix ____
Cevap
etcdctl get /registry/pods/default --prefix --keys-only

Açıklama: --keys-only değerleri yazdırmaz.

3 Eşleştir.

Kavram Anlamı
etcd Cluster durumu
Raft Uzlaşma algoritması
quorum Çoğunluk
/registry/ Anahtar öneki

Uzman bölümündeki tüm dersler