kube-apiserver
- Docker & Kubernetes kursu
- Uzman
- Ders 4/47
- 4 dk
kube-apiserver'ın cluster API'nı sunduğunu öğrenirsin.
kube-apiserver
kube-apiserver, cluster'ın tek giriş kapısıdır. Her istek sırayla şu aşamalardan geçer:
- Kimlik doğrulama (authentication): sertifika, belirteç, OIDC.
- Yetkilendirme (authorization): RBAC.
- Kabul denetleyicileri (admission): değiştiren (mutating, ör. varsayılan ekleme) ve doğrulayan (validating, ör. kota, politika) denetimler.
- Doğrulama ve kayıt: tür tanımına uygunluk ve etcd'ye yazma.
$ kubectl get --raw /api/v1/namespaces/default/pods | head -c 120
{"kind":"PodList","apiVersion":"v1","metadata":{"resourceVersion":"812345"},"items":[...Ham API'yi kullanmak
kubectl aslında bir REST istemcisidir. -v=8 gönderdiği HTTP isteklerini gösterir; kubectl proxy yerel bir vekil açar ve API'ye curl ile kimlik bilgisi yazmadan erişilir:
$ kubectl get pods -v=8 2>&1 | grep "GET https"
GET https://192.168.49.2:8443/api/v1/namespaces/default/pods?limit=500
$ kubectl proxy --port=8001 &
$ curl -s localhost:8001/apis/apps/v1/namespaces/default/deployments | jq '.items[].metadata.name'Uygulama API'yi doğrudan kullan
Üç komut yaz: kubectl get --raw /api/v1/namespaces/default/pods çalıştır; arka planda kubectl proxy --port=8001 & başlat; curl -s localhost:8001/apis/apps/v1/namespaces/default/deployments ile deployment'ları al.
Başlangıç kodu
# buraya yazÖrnek çözüm
kubectl get --raw /api/v1/namespaces/default/pods
kubectl proxy --port=8001 &
curl -s localhost:8001/apis/apps/v1/namespaces/default/deploymentsBeklenen çıktı
{"kind":"PodList","apiVersion":"v1","metadata":{"resourceVersion":"812345"},"items":[...]}
Starting to serve on 127.0.0.1:8001
{"kind":"DeploymentList","apiVersion":"apps/v1","items":[{"metadata":{"name":"web",...}}]}
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir isteğe varsayılan değerler ekleyen aşama hangisidir?
- etcd
- Değiştiren kabul denetleyicisi (mutating admission) Doğru cevap
- Kimlik doğrulama
- RBAC
Açıklama: Ör. ServiceAccount ve varsayılan StorageClass ekleme admission ile yapılır.
2 API'ye ham bir GET isteği gönder.
kubectl get ____ /api/v1/namespaces/default/pods
kubectl get --raw /api/v1/namespaces/default/pods
Açıklama: --raw yolu doğrudan API'ye gönderir.
3 Aşamaları eşleştir.
| Kavram | Anlamı |
|---|---|
authentication |
Kim? |
authorization |
İzni var mı? |
admission |
Değiştir ve denetle |
etcd |
Kaydet |