Skip to content

Commit 282b715

Browse files
anilozgokAnıl Özgök
and
Anıl Özgök
authored
anilozgok/pod genel bakis (#62)
* Update init-container.md * feat: skeleton template created and content added * forgot to stage unstaged files ffs * feat: translate content to turkish --------- Co-authored-by: Anıl Özgök <anil.ozgok@trendyol.com>
1 parent 87e78fa commit 282b715

7 files changed

+139
-8
lines changed

docs/_sidebar.md

+3-4
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,11 @@
4040
* [ReplicaSets](replicasets.md)
4141

4242
* Pod Genel Bakış
43-
* **Pod Yaşam Döngüsü**
44-
* [Container Statüleri](container-faz.md)
43+
* [Pod Yaşam Döngüsü](pod-yasam-dongu.md)
4544
* [Pod Durumları](pod-durum.md)
45+
* [Container Statüleri](container-faz.md)
4646
* [Init Container](init-container.md)
47-
* [Pod Preset](pod-preset.md)
48-
* [Static Pod](static-pod.md)
47+
* [Sidecar Container](sidecar-container.md)
4948
* [Ephemeral Container](ephemeral-container.md)
5049
* **Podların Çalışacağı Nodeları Belirleme - Scheduling**
5150
* [NodeSelector Alanı](nodeselector.md)

docs/container-faz.md

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Container Statüleri
2+
3+
Kubernetes Pod'un içerisindeki her container'ın statüsünü takip eder. Scheduler oluşturlacak Pod'u bir Node'a atasığı zaman Kubelet Pod içerisindeki containerları, container runtime kullanarak oluşturmaya başlar. Bır container'ın olası 3 statüsü vardır ve her statünün kendine özel anlamları vardır.
4+
5+
- **Waiting:** Eğer container Running ve ya Terminated statüsünde değilse bu statüdedir. Bu statüde bulunan bir container, başlamayı tamamlamak için ihtiyaç duyduğu işlemleri hala yürütüyor olabilir: örneğin, registry'den container image'ini çekmek ya da secretları dosya sistemine yazmak. Bir container'ın neden bu statüde olduğunu öğrenmek için <kubectl> kullanarak Pod'a sorgu atabiliriz.
6+
7+
- **Running:** Eğer container Running statüsünde ise herhangi bir sorun olmadan ayağa kalkmış ve çalışıyor demektir. <kubectl> ile Pod'a sorgu atarak container'ın ne zaman Running statüsüne girdiği öğrenilebilir.
8+
9+
- **Terminated:** Eğer container Termintaed statüsünde ise bir problemden kaynaklı container ayağa kalkıp çalışamadı ve bu statüye düştü demektir. <kubectl> ile Pod'a sorgu atarak Terminated olan container hakkında hata sebebi, hata kodu, başlangıç ve bitiş saatleri hakkında bilgiler öğrenilebilir.
10+
11+
Bir Pod'un container'larının statüleri hakkında detaylı bilgiye ulaşmak için kubectl describe <name-of-pod> komutunu çalıştırılabilir. Bu komut Pod içerisindeki her container'ın statüleri hakkında detaylı bir çıktı verir.

docs/ephemeral-container.md

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Ephemeral Container
2+
3+
## Ephemeral Container'ları Anlamak
4+
Pod'lar, Kubernetes uygulamalarının temel yapı taşıdır. Pod'lar geçici ve değiştirilebilir olarak tasarlandığından, bir Pod oluşturulduktan sonra ona bir container ekleyemezsiniz. Bunun yerine, genellikle Pod'ları kontrollü bir şekilde siler ve değiştirirsiniz.
5+
6+
Ancak bazen mevcut bir Pod'un durumunu incelemek gerekebilir, örneğin, tekrarlanması zor bir hatayı gidermek için. Bu durumlarda, mevcut bir Pod'da geçici bir container çalıştırarak durumunu inceleyebilir ve rastgele komutlar çalıştırabilirsiniz.
7+
8+
## Ephemeral Container Nedir?
9+
Ephemeral container'lar, kaynaklar veya yürütme için garantiler içermediklerinden ve asla otomatik olarak yeniden başlatılmayacaklarından diğer container'lardan farklıdır, bu nedenle uygulama oluşturmak için uygun değillerdir. Ephemeral container'lar, normal container'larla aynı ContainerSpec kullanılarak tanımlanır, ancak birçok alan uyumsuzdur ve ephemeral container'lar için izin verilmez.
10+
11+
- Ephemeral container'lar portlara sahip olamaz, bu nedenle ports, livenessProbe, readinessProbe gibi alanlara izin verilmez.
12+
- Pod kaynak tahsisleri değiştirilemez olduğundan, kaynak ayarlamak izin verilmez.
13+
- İzin verilen alanların tam listesi için EphemeralContainer referans dökümantasyonuna bakın.
14+
- Ephemeral container'lar, API'deki özel ephemeralcontainers işleyicisi kullanılarak oluşturulur, bu nedenle doğrudan pod.spec'e eklenerek eklenmeleri mümkün değildir, bu yüzden kubectl edit kullanarak ephemeral container eklemek mümkün değildir.
15+
16+
Normal container'lar gibi, bir Pod'a ekledikten sonra ephemeral container'ı değiştiremez veya kaldıramazsınız.
17+
18+
Not:
19+
Ephemeral container'lar statik pod'lar tarafından desteklenmez.
20+
21+
## Ephemeral Container Kullanım Alanları
22+
Ephemeral container'lar, bir container çöktüğünde veya bir container görüntüsü hata ayıklama araçları içermediğinde kubectl exec yetersiz olduğunda etkileşimli hata ayıklama için kullanışlıdır.
23+
24+
Özellikle, distroless görüntüler, saldırı yüzeyini ve hata ve güvenlik açıklarına maruz kalmayı azaltan minimal container görüntüleri dağıtmanıza olanak tanır. Distroless görüntüler bir kabuk veya herhangi bir hata ayıklama aracı içermediğinden, distroless görüntüleri yalnızca kubectl exec kullanarak hata ayıklamak zordur.
25+
26+
Ephemeral container'ları kullanırken, diğer container'lardaki işlemleri görebilmeniz için işlem ad alanı paylaşımını etkinleştirmek faydalıdır.

docs/init-container.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Init Container nedir?
22

3-
InitContainer; pod içerisinde bulunan, containerlar ile aynı tipte fakat containerlar başlamadan önce çalışan bir yapıdır.
3+
InitContainer'lar uygulamanın ana container'ı ayağa kalkmadan önce çalışan, pod içerisinde bulunan, containerlar ile aynı tipte fakat ana containerlar başlamadan önce çalışan özelleştirilmiş öncül containerlardır. InitContainer kullanımına örnek olarak uygulamanın ayağa kalkması için gereken config ve secretlerı Pod'un dosya sistemine yazmamıza yardımcı olacak bir uygulama ya da bazı kurulum scriptleri barındıran bir uygulama olarak düşünebiliriz.
44

55
Bir pod içerisinde birden fazla container olabildiği gibi birden fazla initContainer da olabilir. Pod içerisinde 'initContainers' fieldında dizi olarak tanımlanırlar.
66

@@ -9,7 +9,7 @@ InitContainerlar sıralı olarak çalışırlar. InitContainer içerisindeki pro
99
Eğer bir initContainer başarılı olmazsa pod yeniden başlatılır. Pod'un restartPolicy'si 'Never' ise pod 'Failed' statüsüne geçer.
1010

1111
## InitContainer ve Container farkları nelerdir?
12-
- InitContainerlarda lifecycle, livenessProbe, readinessProbe ve startupProbe desteği bulunmamaktadır çünkü podun sağlıklı bir şekilde çalışıyor olması için initContainerların çalışıp başarılı bir şekilde tamamlanmış olmaları gereklidir.
13-
- Pod içerisinde birden fazla initContainer varsa bunlar sıralı olarak çalışırlar. Bütün initContainerlar başarılı bir şekilde çalışıp tamamlandıktan sonra Containerlar aynı anda çalışmaya başlarlar.
12+
- InitContainer'larda lifecycle, livenessProbe, readinessProbe ve startupProbe desteği bulunmamaktadır çünkü podun sağlıklı bir şekilde çalışıyor olması için initContainer'ların çalışıp başarılı bir şekilde tamamlanmış olmaları gereklidir.
13+
- Pod içerisinde birden fazla initContainer varsa bunlar sıralı olarak çalışırlar. Bütün initContainer'lar başarılı bir şekilde çalışıp tamamlandıktan sonra Containerlar aynı anda çalışmaya başlarlar.
1414

15-
InitContainerlar genellikle diğer containerlar çalışmaya başlamadan önce pod içerisinde yapılması gereken işleri yapmak veya uygulama containerının başlamasını bekletmek gibi ihtiyaçları karşılamak için kullanılabilirler.
15+
InitContainer'lar genellikle diğer containerlar çalışmaya başlamadan önce pod içerisinde yapılması gereken işleri yapmak veya uygulama containerının başlamasını bekletmek gibi ihtiyaçları karşılamak için kullanılabilirler.

docs/pod-durum.md

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Pod Durumlari
2+
3+
Bir Pod'un durum alanı, bir phase alanına sahip olan bir PodStatus nesnesidir.
4+
5+
Bir Pod'un phase'i, Pod'un yaşam döngüsünde nerede olduğunun basit ve yüksek düzeyde bir özetidir. Phase, container veya Pod durumunun kapsamlı bir gözlemi veya kapsamlı bir durum makinesi olması amaçlanmamıştır.
6+
7+
Pod phase değerlerinin sayısı ve anlamları sıkı bir şekilde korunur. Burada belgelenenler dışında, belirli bir phase değerine sahip Pod'lar hakkında hiçbir varsayımda bulunulmamalıdır.
8+
9+
Phase için olası değerler şunlardır:
10+
11+
| Değer | Açıklama |
12+
|------------|----------|
13+
| Pending | Pod, Kubernetes cluster'ı tarafından kabul edilmiştir, ancak bir veya daha fazla container kurulmamış ve çalışmaya hazır hale getirilmemiştir. Bu, bir Pod'un zamanlanmayı beklerken geçirdiği zamanı ve ağ üzerinden container görüntülerini indirirken geçirdiği zamanı içerir. |
14+
| Running | Pod bir node'a bağlanmış ve tüm containerlar oluşturulmuştur. En az bir container hala çalışıyor veya başlatılıyor ya da yeniden başlatılıyor. |
15+
| Succeeded | Pod'daki tüm containerlar başarıyla sonlanmış ve yeniden başlatılmayacaktır. |
16+
| Failed | Pod'daki tüm containerlar sonlanmış ve en az bir container başarısızlıkla sonlanmıştır. Yani, container sıfır olmayan bir durum kodu ile çıkmış veya sistem tarafından sonlandırılmış ve otomatik olarak yeniden başlatılmak üzere ayarlanmamıştır. |
17+
| Unknown | Bir nedenle Pod'un durumu elde edilememiştir. Bu phase tipik olarak Pod'un çalışması gereken node ile iletişimde bir hata olduğunda ortaya çıkar. |
18+
19+
Not:
20+
Bir Pod silinirken, bazı kubectl komutları tarafından Terminating olarak gösterilir. Bu Terminating durumu, Pod phase'lerinden biri değildir. Bir Pod'a, gracefully bir şekilde terminate edilmesi için bir süre verilir ve bu varsayılan olarak 30 saniyedir. Bir Pod'u zorla sonlandırmak için --force bayrağını kullanabilirsiniz. Kubernetes 1.27'den beri, kubelet, statik Pod'lar ve finalizer olmadan zorla silinen Pod'lar hariç, silinmiş Pod'ları API sunucusundan silinmeden önce bir terminal phase'e (Pod containerlarının çıkış durumlarına bağlı olarak Failed veya Succeeded) geçirir.
21+
22+
Bir node ölürse veya cluster'dan düşerse, Kubernetes, kaybolan node'daki tüm Pod'ların phase'ini Failed olarak ayarlamak için bir politika uygular.

docs/pod-yasam-dongu.md

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Pod Yaşam Döngüsü
2+
3+
Podlar belirli bir yaşam döngüsünü takip eder, bu döngü Pending aşamasıyla başlar ve containerlardan biri çalışı durumunda ise Running aşamasına doğru ilerler. Daha sonrasında Pod'da bulunan bır containerın fail olup terminate olup olmama durumuna bağlı olarak Failed ya da Succeeded aşamasına geçer.
4+
5+
Bireysel uygulama containerları gibi, Pod'lar da nispeten geçici (kalıcı olmaktan ziyade) varlıklar olarak kabul edilir. Pod'lar oluşturulur, benzersiz bir kimlik (UID) atanır ve Node'larda çalışmak üzere zamanlanır; burada sonlandırılana (yeniden başlatma politikasına göre) veya silinene kadar kalırlar. Bir Node ölürse, o Node üzerinde çalışan (veya çalışmak üzere zamanlanmış) Pod'lar silinmek üzere işaretlenir. Kontrol düzlemi, bir zaman aşımı süresinden sonra Pod'ları kaldırmak üzere işaretler.
6+
7+
## Pod lifetime
8+
9+
Bir Pod çalışırken, kubelet bazı türdeki hataları ele almak için konteynerleri yeniden başlatabilir. Bir Pod içinde, Kubernetes farklı container durumlarını izler ve Pod'u tekrar sağlıklı hale getirmek için ne tür bir eylem yapması gerektiğine karar verir.
10+
11+
Kubernetes API'sinde, Pod'ların hem bir spesifikasyonu hem de gerçek bir durumu vardır. Bir Pod nesnesinin durumu, bir dizi Pod koşulundan oluşur. Ayrıca, uygulamanız için yararlıysa, bir Pod'un durum verilerine özel hazır olma bilgilerini ekleyebilirsiniz (readiness probes).
12+
13+
Pod'lar yaşamları boyunca yalnızca bir kez zamanlanır; bir Pod'u belirli bir node'a atamaya binding denir ve hangi node'un kullanılacağını seçme sürecine scheduling denir. Bir Pod zamanlandığında ve bir node'a bağlandığında, Kubernetes o Pod'u node'da çalıştırmaya çalışır. Pod, durana kadar veya Pod sonlandırılana kadar o node'da çalışır; Kubernetes seçilen node'da Pod'u başlatamazsa (örneğin, node Pod başlamadan önce çökerse), o belirli Pod asla başlamaz.
14+
15+
Pod Scheduling Readiness'i kullanarak bir Pod'un zamanlanmasını, tüm scheduling gates kaldırılana kadar erteleyebilirsiniz. Örneğin, bir dizi Pod tanımlamak isteyebilir ancak tüm Pod'lar oluşturulduğunda zamanlamayı tetiklemek isteyebilirsiniz.
16+
17+
18+
## Pods and fault recovery
19+
20+
Pod içindeki container'lardan biri başarısız olursa, Kubernetes belirli bir containerı yeniden başlatmayı deneyebilir.
21+
22+
Ancak, Pod'lar cluster'ın geri kazanamayacağı bir şekilde fail olabilir ve bu durumda Kubernetes Pod'u daha fazla iyileştirmeye çalışmaz; bunun yerine, Kubernetes Pod'u siler ve otomatik iyileştirme sağlamak için diğer bileşenlere güvenir.
23+
24+
Bir Pod bir node'a zamanlanmışsa ve o node daha sonra fail olursa, Pod sağlıksız olarak kabul edilir ve Kubernetes sonunda Pod'u siler. Bir Pod, kaynak yetersizliği veya Node bakımından dolayı tahliyeden sağ çıkamaz.
25+
26+
Kubernetes, nispeten geçici Pod örneklerini yönetme işini üstlenen bir controller adlı daha yüksek düzeyde bir soyutlama kullanır.
27+
28+
Belirli bir Pod (UID ile tanımlanmış) asla farklı bir node'a "yeniden zamanlanmaz"; bunun yerine, o Pod yeni, neredeyse aynı bir Pod ile değiştirilebilir. Bir yedek Pod oluşturursanız, eski Pod'un sahip olduğu aynı adı (.metadata.name) bile kullanabilir, ancak yedek Pod eski Pod'dan farklı bir .metadata.uid'ye sahip olur.
29+
30+
Kubernetes, mevcut bir Pod için bir yedeğin, değiştirilen eski Pod ile aynı node'a zamanlanacağını garanti etmez.

docs/sidecar-container.md

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Sidecar Container
2+
3+
Sidecar container'ları, aynı Pod içinde ana uygulama container'ı ile birlikte çalışan ikincil container'lardır. Bu container'lar, ana uygulama container'ının işlevselliğini genişletmek veya artırmak için ek hizmetler veya işlevler (örneğin, günlük kaydı, izleme, güvenlik veya veri senkronizasyonu) sağlar, ana uygulama kodunu doğrudan değiştirmeden.
4+
5+
Genellikle, bir Pod'da sadece bir uygulama container'ı bulunur. Örneğin, yerel bir web sunucusu gerektiren bir web uygulamanız varsa, yerel web sunucusu bir sidecar olarak kabul edilir ve web uygulamasının kendisi uygulama container'ıdır.
6+
7+
## Kubernetes'te Sidecar Container'ları
8+
9+
Kubernetes, sidecar container'larını, init container'larının özel bir durumu olarak uygular; sidecar container'ları, Pod başlatıldıktan sonra çalışmaya devam eder. Bu belgede, yalnızca Pod başlatma sırasında çalışan container'ları açıkça belirtmek için düzenli init container'ları terimi kullanılır.
10+
11+
Kümenizde SidecarContainers özelliği etkinleştirilmişse (bu özellik Kubernetes v1.29'dan itibaren varsayılan olarak etkindir), bir Pod'un initContainers alanında listelenen container'lar için bir restartPolicy belirleyebilirsiniz. Bu yeniden başlatılabilir sidecar container'ları, aynı pod içindeki diğer init container'larından ve ana uygulama container'larından bağımsızdır. Bu container'lar, ana uygulama container'ını ve diğer init container'larını etkilemeden başlatılabilir, durdurulabilir veya yeniden başlatılabilir.
12+
13+
Ayrıca, init veya sidecar container'ları olarak işaretlenmemiş birden fazla container ile bir Pod çalıştırabilirsiniz. Bu, Pod içindeki container'ların Pod'un genel olarak çalışması için gerekli olduğu, ancak hangi container'ların önce başlatılıp durdurulması gerektiğini kontrol etmenize gerek olmadığı durumlarda uygundur. Bu, container düzeyinde restartPolicy alanını desteklemeyen daha eski Kubernetes sürümlerini desteklemeniz gerektiğinde de yapılabilir.
14+
15+
## Uygulama Container'larından Farkları
16+
17+
Sidecar container'ları, aynı pod içindeki uygulama container'larının yanında çalışır. Ancak, ana uygulama mantığını yürütmezler; bunun yerine ana uygulamaya destekleyici işlevler sağlarlar.
18+
19+
Sidecar container'larının kendi bağımsız yaşam döngüleri vardır. Uygulama container'larından bağımsız olarak başlatılabilir, durdurulabilir ve yeniden başlatılabilirler. Bu, sidecar container'larını güncelleyebileceğiniz, ölçeklendirebileceğiniz veya bakımını yapabileceğiniz anlamına gelir, bu da ana uygulamayı etkilemez.
20+
21+
Sidecar container'ları, ana container ile aynı ağ ve depolama ad alanlarını paylaşır. Bu birlikte yerleştirme, onların yakın etkileşimde bulunmasına ve kaynakları paylaşmasına olanak tanır.
22+
23+
## Init Container'larından Farkları
24+
25+
Sidecar container'ları, ana container ile birlikte çalışarak işlevselliğini genişletir ve ek hizmetler sağlar.
26+
27+
Sidecar container'ları, ana uygulama container'ı ile eşzamanlı olarak çalışır. Pod'un yaşam döngüsü boyunca aktiftirler ve ana container'dan bağımsız olarak başlatılabilir ve durdurulabilirler. Init container'larının aksine, sidecar container'ları yaşam döngülerini kontrol etmek için probları destekler.
28+
29+
Sidecar container'ları, ana uygulama container'ları ile doğrudan etkileşime geçebilir, çünkü init container'ları gibi her zaman aynı ağı paylaşırlar ve isteğe bağlı olarak aynı hacimleri (dosya sistemlerini) de paylaşabilirler.
30+
31+
Init container'ları, ana container'lar başlamadan önce durur, bu nedenle init container'ları bir Pod'daki uygulama container'ı ile mesaj alışverişinde bulunamaz. Herhangi bir veri aktarımı tek yönlüdür (örneğin, bir init container'ı boş bir emptyDir hacmine bilgi koyabilir).
32+
33+
## Container'lar Arasında Kaynak Paylaşımı
34+
35+
Init, sidecar ve uygulama container'larının yürütme sırası göz önüne alındığında, kaynak kullanımı için aşağıdaki kurallar geçerlidir:
36+
37+
- Tüm init container'larında tanımlanan belirli bir kaynak isteği veya limitinin en yükseği, etkili init isteği/limiti olarak kabul edilir. Herhangi bir kaynak için limit belirtilmemişse, bu en yüksek limit olarak kabul edilir.
38+
- Pod'un bir kaynak için etkili isteği/limiti, pod overhead'in ve aşağıdakilerin toplamıdır:
39+
- Tüm non-init container'larının (uygulama ve sidecar container'ları) bir kaynak için isteği/limitinin toplamı
40+
- Bir kaynak için etkili init isteği/limiti
41+
- Zamanlama, etkili isteklere/limitlere göre yapılır, bu da init container'larının Pod'un yaşam süresi boyunca kullanılmayan kaynakları ayırabileceği anlamına gelir.
42+
- Pod'un QoS (hizmet kalitesi) seviyesi, tüm init, sidecar ve uygulama container'ları için geçerli olan QoS seviyesiyle aynıdır.
43+
- Kota ve limitler, etkili Pod isteği ve limitine göre uygulanır.

0 commit comments

Comments
 (0)