Düğüm Seçicileri ve Yakınlık
Düğüm seçicileri ile daha ifade gücü yüksek düğüm ve Pod yakınlığı kurallarını kullanarak Pod'ların nereye zamanlanacağını denetleyin.
Düğüm Seçicileri ve Yakınlık, CoddyKit'te ücretsiz bir Kubernetes Basics dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kubernetes Basics öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kubernetes Basics kursu toplamda 4 dersten oluşur.
Pod'ların Nereye Yerleşeceğini Denetleme
Varsayılan olarak Kubernetes, Pod'ları kullanılabilir herhangi bir düğüme zamanlar. Peki daha fazla denetime ihtiyacınız varsa ne olur?
Bazen Pod'ların belirli düğümlerde çalışması gerekir. Bu düğümlerde özel donanımlar veya lisanslar bulunabilir ya da düğümler belirli kullanılabilirlik bölgelerinde yer alabilir.
Bu derste, Düğüm Seçicileri ve Düğüm Benzeşimi kullanarak Kubernetes zamanlayıcısını nasıl yönlendireceğiniz incelenmektedir.
Zamanlayıcıyı Neden Yönlendirmelisiniz?
Yüksek performanslı SSD'lere sahip bir düğümde çalışması gereken bir veritabanı Pod'unuz veya belirli donanım gerektiren, GPU yoğun bir uygulamanız olduğunu düşünün.
Hata toleransı için bazı Pod'ları birbirinden uzak tutmak ya da belirli işletim sistemlerine sahip düğümlerde çalıştıklarından emin olmak da isteyebilirsiniz.
Kubernetes, bu zamanlama tercihlerini ifade etmek için araçlar sunar.
Düğümlerin Etiketleri Vardır
Pod'lara nereye gideceklerini söylemeden önce düğümlerin kimliklere ihtiyacı vardır! Kubernetes, düğümleri özelliklerine göre tanımlamak için etiketleri kullanır.
- Etiketler,
disk=ssdveyagpu=truegibi anahtar-değer çiftleridir. kubectl label nodes <node-name> <key>=<value>komutunu kullanarak düğümlerinize özel etiketler ekleyebilirsiniz.- Pod'ların yerleştirilmesi için belirli düğümleri bu etiketlerle hedefleriz.
Düğüm Seçicileri: Basit Eşleştirme
Bir Pod'u belirli bir düğüm kümesiyle sınırlandırmanın en basit yolu nodeSelector kullanmaktır.
Bu, Pod belirtiminizde anahtar-değer çiftlerinden oluşan bir harita alanıdır. Pod yalnızca bu etiketlerin tümüne sahip düğümlerde zamanlanır.
Bu, "Tam olarak böyle olan bir düğüme ihtiyacım var" demek gibidir.
Düğüm Seçicisi Uygulamada
disk=ssd etiketi verilmiş düğümlerimiz olduğunu varsayalım. Bir Pod'u yalnızca bu düğümlerde çalıştırmanın yolu şöyledir:
apiVersion: v1
kind: Pod
metadata:
name: ssd-app
spec:
containers:
- name: my-container
image: nginx
nodeSelector:
disk: ssdDüğüm Benzeşimi: Gelişmiş Eşleştirme
nodeSelector basit olsa da oldukça katıdır. Ya "tercih edilen" düğümleri veya daha karmaşık eşleştirme kurallarını kullanmak isterseniz?
Düğüm Benzeşimi daha fazla esneklik sunar. Pod'ların belirli etiketlere sahip düğümlere yerleşmesi için "yumuşak" veya "kesin" gereksinimleri ifade etmenize olanak tanır.
In, NotIn, Exists, DoesNotExist, Gt ve Lt gibi işleçlerle daha güçlü bir söz dizimi kullanır.
Zorunlu ve Tercih Edilen Benzeşim
Düğüm benzeşiminin iki ana türü vardır:
requiredDuringSchedulingIgnoredDuringExecution: Pod, kurallarla eşleşen bir düğümde mutlaka zamanlanmalıdır. Böyle bir düğüm yoksa Pod zamanlanmaz.preferredDuringSchedulingIgnoredDuringExecution: Zamanlayıcı, kurallarla eşleşen bir düğüm bulmaya çalışır; ancak uygun düğüm yoksa Pod'u yine de başka bir yere zamanlar. Bu, "mümkün olan en iyi çaba" yaklaşımıdır.
Zorunlu Düğüm Benzeşimi
env=production etiketine sahip bir düğüm gerektiren bir Pod örneği şöyledir. Böyle bir düğüm yoksa Pod beklemede kalır.
apiVersion: v1
kind: Pod
metadata:
name: prod-app
spec:
containers:
- name: my-container
image: httpd
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: env
operator: In
values:
- productionPod Benzeşimi: Diğer Pod'lar Önemlidir
Pod'ları diğer Pod'ların çalıştığı konuma göre zamanlamak isterseniz ne olur?
- Pod Benzeşimi: Belirli etiketlere sahip diğer Pod'ların zaten çalıştığı düğümlere Pod'ları çeker. Sık iletişim kuran hizmetleri aynı konuma yerleştirmek için kullanışlıdır.
- Pod Karşıt Benzeşimi: Belirli etiketlere sahip diğer Pod'ların çalıştığı düğümlerden Pod'ları uzaklaştırır. Yüksek kullanılabilirlik için çoğaltmaları düğümlere dağıtmakta yararlıdır.
Pod Karşıt Benzeşimi Uygulamada
Bu bildirim, app=my-web etiketine sahip iki Pod'un aynı düğümde zamanlanamamasını sağlar. Bu, hata toleransını artırır.
topologyKey, karşıt benzeşimin uygulandığı etki alanını belirtir (ör. düğüm, bölge).
apiVersion: v1
kind: Pod
metadata:
name: web-app-pod
labels:
app: my-web
spec:
containers:
- name: web-container
image: busybox
command: ["sh", "-c", "echo 'Hello from web-app'; sleep 3600"]
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app: my-web
topologyKey: "kubernetes.io/hostname"Bilginizi Sınayın
Kritik veritabanı Pod'larınızın zone=dev etiketine sahip düğümlerde kesinlikle zamanlanmamasını istiyorsunuz. Düğüm etiketlerine dayalı bu kesin dışlama için hangi tür zamanlama kuralını kullanırsınız?
Özet: Zamanlama Denetimi
Harika iş çıkardınız! Pod'larınızın nerede çalışacağını denetlemenin güçlü yollarını öğrendiniz:
- Düğüm Etiketleri: Düğüm özelliklerini tanımlayan anahtar-değer çiftleri.
- Düğüm Seçicileri: Pod'ları belirli etiketlere sahip düğümlerde zamanlamak için basit ve katı eşleştirme.
- Düğüm Benzeşimi: İşleçleri kullanarak düğüm seçimi için daha esnek kurallar (zorunlu veya tercih edilen).
- Pod Benzeşimi/Karşıt Benzeşimi: Pod'ları diğer Pod'ların konumlarına göre aynı yere yerleştirme veya ayırma.
Bu araçlar, kaynak kullanımını iyileştirmek, hata toleransını sağlamak ve belirli uygulama gereksinimlerini karşılamak için kritik öneme sahiptir.
Sıkça Sorulan Sorular
“Düğüm Seçicileri ve Yakınlık” dersi ücretsiz mi?
Evet — “Düğüm Seçicileri ve Yakınlık” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kubernetes Basics kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kubernetes Basics kursu toplamda 4 dersten oluşur.
“Düğüm Seçicileri ve Yakınlık” dersinde ne öğreneceğim?
Düğüm seçicileri ile daha ifade gücü yüksek düğüm ve Pod yakınlığı kurallarını kullanarak Pod'ların nereye zamanlanacağını denetleyin. Kubernetes Basics ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Kubernetes Basics öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Kubernetes Basics, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Düğüm Seçicileri ve Yakınlık” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Kubernetes Basics dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Kubernetes Basics dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Kaynak İstekleri ve Sınırları
- Düğüm Seçicileri ve Yakınlık
- Taint'ler ve Toleration'lar
- Pod Önceliği ve Öncelik Geri Alma