on
Kubernetes REST API Yapısı
Kubernetes REST API Server Giriş
Temel olarak, Kubernetes farklı rollere sahip bir grup düğümden oluşur. Ana düğümlerdeki kontrol mekanizması API Sunucusu, Controller Manager ve Scheduler dan oluşur. API Sunucusu merkezi yönetim mekanizmasıdır ve dağıtılmış depolama bileşeni vb. ile doğrudan görüşen tek bileşendir. Aşağıdaki temel işlevleri sağlar:
- Küme dahili olarak çalışan düğümler tarafından ve harici olarak kubectl tarafından kullanılan Kubernetes API’sine hizmet eder
- Kubernetes UI küme bileşenlerine proxy sağlar
- Nesnelerin durumunun değiştirilmesine izin verir, örneğin pod’lar ve service’ler
- Dağıtılmış bir depolama birimindeki (etcd) nesnelere müdahele eder.
API Versiyonları
Kubernetes API, bir HTTP REST API’sıdır, ancak aynı zamanda küme iç iletişimi için Protocol Buffers da destekler. Genişletilebilirlik nedenleriyle Kubernetes, /api/v1
veya /apis/extensions/v1beta1
gibi farklı API yollarında birden fazla API sürümünü destekler. Farklı API sürümleri farklı düzeylerde kararlılık ve destek anlamına gelir:
- Alfa seviyesi
- Sürüm adları
alfa
(ör.v1alpha1
) içerir. - Bug olabilir. Özelliğin etkinleştirilmesi hataları ortaya çıkarabilir. Varsayılan olarak devre dışıdır.
- Özellik desteği, önceden bildirilmeksizin herhangi bir zamanda bırakılabilir.
- API, sonraki bir yazılım sürümünde önceden bildirimde bulunmaksızın uyumsuz şekillerde değişebilir.
- Artan hata riski ve uzun süreli destek eksikliği nedeniyle sadece kısa ömürlü test kümelerinde kullanılması önerilir.
- Sürüm adları
- Beta seviyesi
- Sürüm adları
beta
(ör.v2beta3
) içerir. - Kod iyi test edilmiştir. Özelliğin etkinleştirilmesi güvenli kabul edilir. Varsayılan olarak etkindir.
- Ayrıntılar değişse de, genel özellik için destek bırakılmaz.
- Nesnelerin şeması ve/veya semantiği, sonraki bir beta veya kararlı sürümde uyumsuz yollarla değişebilir. Bu olduğunda, bir sonraki sürüme geçmek için talimatlar verilir. Bu, API nesnelerini silmeyi, düzenlemeyi ve yeniden oluşturmayı gerektirebilir. Bu, özelliğe dayanan uygulamalar için aksama süresine neden olabilir.
- Sonraki sürümlerde uyumsuz değişiklikler potansiyeli nedeniyle yalnızca iş açısından kritik olmayan kullanımlar için önerilir.
- Sürüm adları
- Stable seviyesi
- Sürüm adı
vX
‘dir; buradaX
bir tamsayıdır. - Özelliklerin kararlı sürümleri, sonraki birçok sürüm için yayınlanan yazılımda görünecektir.
- Sürüm adı
API Swagger dosyasına burdan ulaşılabilir.
Aşağıdaki adres kullanılarak yukarıdaki linkde bulunan JSON dosyası ile tüm API incelenebilir.
https://entrystore.org/api/
API Grupları
Kubernetes API’sını genişletmeyi kolaylaştırmak için API grupları kullanılır. API grubu bir REST yolunda ve serileştirilmiş bir nesnenin apiVersion
alanında belirtilir.
Şu anda kullanımda olan birkaç API grubu vardır:
1. Genellikle legacy group
olarak adlandırılan core group
, REST yolu /api/v1
‘de bulunur ve apiVersion: v1
kullanır.
2. Adı belirtilen gruplar REST yolunda /apis/$GROUP_NAME/$VERSION
adresindedir ve apiVersion: $GROUP_NAME/$VERSION
(ör. ApiVersion: batch/v1
) kullanın. Desteklenen API gruplarının tam listesi (Kubernetes API Reference)[https://kubernetes.io/docs/reference/] adresinde görülebilir.
API’yı özel kaynaklarla genişletmenin desteklenen iki yolu vardır:
- CustomResourceDefinition, çok temel CRUD ihtiyaçları olan kullanıcılar içindir.
- Kubernetes API semantiğinin tam desteğine ihtiyaç duyan kullanıcılar kendi apiserver’lerini uygulayabilir ve sorunsuz hale getirmek için aggregator kullanabilir.
API Gruplarını Etkinleştirme veya Devre Dışı Bırakma
Belirli kaynaklar ve API grupları varsayılan olarak etkindir. Apiserver’da --runtime-config
ayarını yapıp etkinleştirebilirsiniz. --runtime-config
virgülle ayrılmış değerleri kabul eder. Örneğin:
batch/v1
devre dışı bırakmak için,--runtime-config=batch/v1=false
ayarlanabilir.batch/v2alpha1
aktifleştirmek ,--runtime-config=batch/v2alpha1
ayarlanabilir.
Kaynak 1 - Kaynak 2 - Kaynak 3 - Kaynak 4 - Kaynak 5 - Kaynak 6 - Kaynak 7