Pod'ları ACK kümenizdeki belirli düğümlere yönlendirmek için düğüm etiketlerini ve bir nodeSelector kullanın. Kubernetes zamanlayıcı varsayılan olarak pod'ları otomatik olarak yerleştirir. İş yüklerinin belirli donanım gereksinimleri olduğunda — örneğin, makine öğrenimi görevleri için GPU donanımlı düğümler, G/Ç yoğun veritabanları için SSD destekli düğümler veya gecikmeye duyarlı hizmetleri aynı konumda barındırmak için ayrılmış düğümler — nodeSelector kullanın.
nodeSelector, en basit zamanlama kısıtlamasıdır. Taint'ler ve tolerasyonlardan farklı olarak, diğer pod'ların aynı düğümde çalışmasını engellemez; yalnızca hedeflediği pod'ların nereye yerleşebileceğini kontrol eder. Daha güçlü yalıtım veya daha kapsamlı kurallar için bunun yerine düğüm uyumluluğunu (node affinity) veya podlar arası uyumluluğu kullanın.
Önkoşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Bir ACK yönetilen kümesi veya bir ACK özel kümesi (ACK özel kümeleri artık yeni oluşturulamaz)
Dağıtmak için bir durumsuz iş yükü (Deployment) veya bir durumlu iş yükü (StatefulSet)
1. Adım: Bir düğümü etiketleme
ACK konsoluna oturum açın. Sol gezinme bölmesinde Clusters öğesine tıklayın.
Clusters sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde Nodes > Nodes seçeneğini belirleyin.
Sayfanın sağ üst köşesinde Manage Labels and Taints öğesine tıklayın. Labels sekmesinde hedef düğüme bir etiket ekleyin. Bu örnekte Name alanını
podve Value alanınınginxolarak ayarlayın. Daha fazla bilgi için bkz. Düğüm etiketleri oluşturma ve yönetme.
2. Adım: nodeSelector ile dağıtım yapma
ACK konsoluna oturum açın. Sol gezinme bölmesinde Clusters öğesine tıklayın.
Clusters sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde Workloads > Deployments seçeneğini belirleyin.
-
Deployments sayfasında Create from YAML öğesine tıklayın ve aşağıdaki manifestoyu uygulayın.
nodeSelectoralanı, pod'ları yalnızcapod: nginxetiketini taşıyan düğümlerle sınırlar.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment-basic labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: nodeSelector: pod: nginx # Pods are scheduled only to nodes with this label. containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 Deployments sayfasında Dağıtımın (Deployment) adına tıklayın. Pods sekmesinde her bir pod için düğüm sütununu kontrol edin. Tüm pod'lar
pod: nginxetiketini taşıyan düğümlerde çalışıyor olmalıdır. Bir pod farklı bir düğüm gösteriyorsa 1. Adımda düğüm etiketinin doğru şekilde uygulanıp uygulanmadığını doğrulayın.
Sonraki adımlar
nodeSelectorve diğer düğüm atama yöntemlerine ilişkin tam referans için bkz. Assigning Pods to Nodes.Pod zamanlama sırasını kontrol etmek ve dağıtımlar ile ölçek büyütme işlemleri sırasında ters ölçek küçültmeyi yapılandırmak için bkz. Esnek kaynak öncelikli zamanlamayı özelleştirme.