ACK One Fleet örnekleri, bildirim temelli ilkeler kullanarak uygulamaları birden fazla ilişkili küme arasında dağıtır; Git deposu gerekmez. Belirli kümeleri hedeflemek için bir PropagationPolicy ve küme başına yapılandırma geçersiz kılmalarını uygulamak için bir OverridePolicy tanımlayın; senkronizasyonu Fleet örneği otomatik olarak yönetir.
Nasıl çalışır
Uygulama kaynaklarınızı bir Fleet örneğinde oluşturun, ardından bu kaynakların ilişkili kümelere nasıl yayılacağını denetlemek için dağıtım ve geçersiz kılma ilkelerini tanımlayın.
Fleet örneğinde uygulama kaynakları (Deployment'lar, Service'ler, ConfigMap'ler vb.) oluşturun.
Hedef kümeleri seçmek ve zamanlama kurallarını ayarlamak için bir
PropagationPolicyveyaClusterPropagationPolicyoluşturun.İsteğe bağlı olarak, küme özgü yapılandırma farklılıklarını uygulamak için bir
OverridePolicyveyaClusterOverridePolicyoluşturun.Fleet örneği, sonraki kaynak güncellemelerini tüm hedeflenen kümelere otomatik olarak senkronize eder.
PropagationPolicy ve OverridePolicy öğelerini yalnızca ilk kurulum sırasında bir kez oluşturun. Her iki ilke de oluşturulduktan sonra etkin kalır ve gelecekteki tüm kaynak güncellemeleri otomatik olarak yayılır. İlişkili kümelerdeki dağıtım ilerlemesini kontrol etmek için kubectl amc komutunu kullanın.
Gelişmiş özellikler
İş yükü zamanlaması
ACK One Fleet örnekleri, dağıtım ilkelerine göre pod çoğaltmalarını ilişkili kümeler arasında zamanlar. İki zamanlama modu kullanılabilir:
Statik ağırlık zamanlaması
Küme yöneticisi her ilişkili küme için sabit bir ağırlık atar. Zamanlayıcı, pod çoğaltmalarını bu ağırlıklara orantılı olarak yerleştirir.
Yapılandırma ayrıntıları için bkz. replicaScheduling.
Dinamik ağırlık zamanlaması
Zamanlayıcı, her kümenin ağırlığını o anda kullanılabilir kaynaklara göre dinamik olarak hesaplar ve pod çoğaltmalarını buna orantılı olarak yerleştirir.
Yapılandırma ayrıntıları için bkz. Dynamic distribution and descheduling.
Plan dışı taşıma (Descheduling)
İlişkili kümelerdeki kullanılabilir kaynaklar zamanla değişir. Düşük öncelik veya yetersiz kaynak nedeniyle bir pod zamanlanamadığında, plan dışı taşıma özelliği (descheduler) bunu otomatik olarak kaynakların bulunduğu başka bir kümeye taşır. Plan dışı taşıma varsayılan olarak etkindir.
Doğrulama adımları için bkz. Verify descheduling.
Uygulama düzeyinde yük devretme
Çevrimiçi ve çevrimdışı iş yükleri aynı kümeyi paylaştığında, çevrimdışı işler düğüm arızaları, kaynak gaspı veya preemptible örneklerin serbest bırakılması nedeniyle kesintiye uğrayabilir. Uygulama düzeyinde yük devretme, bir işin çalışmayı durdurduğunu algılar ve onu otomatik olarak başka bir kümeye geçirir.
Gang scheduling ile PyTorchJob kullanan bir yapılandırma örneği için bkz. How to use Kube Queue on a Fleet instance and schedule PyTorchJob by using gang scheduling.
Çok kümeli gang scheduling
Gang scheduling, ilişkili bir gruptaki tüm podların aynı anda zamanlanmasını sağlar; herhangi bir pod yerleştirilemezse grubun hiçbiri zamanlanmaz. ACK One Fleet örnekleri, tüm grubu tek bir kümeye yerleştirmek için kaynak ön tahsisi veya dinamik kaynak kontrolleri kullanarak bu davranışı birden fazla kümeye genişletir.
Bu yaklaşım özellikle dağıtık yapay zeka ve veri işleme işleri için yararlıdır:
PyTorch ve TensorFlow eğitim işleri (master-worker mimarisi): master podunun ve tüm worker podlarının aynı kümeye inmesini sağlayarak doğrudan iletişimi sürdürür.
Spark işleri (driver-executor mimarisi): driver podunun ve tüm executor podlarının birlikte konumlandırılmasını sağlayarak kümeler arası ağ ek yükünü önler.
Plan dışı taşıma ve uygulama düzeyinde yük devretme ile birlikte çok kümeli gang scheduling, yapay zeka işlerinin yeterli kaynağa sahip kümelere ulaşmasını ve manuel müdahale olmadan çalışmaya devam etmesini sağlar. Ayrıntılar için bkz. Job distribution.
Dağıtılabilir kaynaklar
Hem dağıtım hem de geçersiz kılma ilkeleri aşağıdaki tablodaki tüm kaynakları destekler. Varsayılan olarak, bir Fleet örneğinde kaynak oluşturma iznine sahip olan her asıl, bu kaynakları ilişkili kümelere dağıtma iznine de sahiptir.
|
Kaynak düzeyi |
Kaynak türü |
APIVersion |
Dağıtım ilkesi |
Geçersiz kılma ilkesi |
|
Küme |
Namespace |
v1 |
Desteklenir |
Desteklenir |
|
PersistentVolume |
v1 |
Desteklenir |
Desteklenir |
|
|
StorageClass |
storage.k8s.io/v1 |
Desteklenir |
Desteklenir |
|
|
CustomResourceDefinition |
apiextensions.k8s.io/v1 |
Desteklenir |
Desteklenir |
|
|
Ad alanı |
Deployment |
apps/v1 |
Desteklenir |
Desteklenir |
|
StatefulSet |
apps/v1 |
Desteklenir |
Desteklenir |
|
|
DaemonSet |
apps/v1 |
Desteklenir |
Desteklenir |
|
|
Job |
batch/v1 |
Desteklenir |
Desteklenir |
|
|
CronJob |
batch/v1 |
Desteklenir |
Desteklenir |
|
|
Ingress |
networking.k8s.io/v1 |
Desteklenir |
Desteklenir |
|
|
Service |
v1 |
Desteklenir |
Desteklenir |
|
|
PersistentVolumeClaim |
v1 |
Desteklenir |
Desteklenir |
|
|
ConfigMap |
v1 |
Desteklenir |
Desteklenir |
|
|
Secret |
v1 |
Desteklenir |
Desteklenir |
|
|
Pod |
v1 |
Desteklenir |
Desteklenir |
|
|
LimitRange |
v1 |
Desteklenir |
Desteklenir |
|
|
ResourceQuota |
v1 |
Desteklenir |
Desteklenir |
|
|
HorizontalPodAutoscaler |
autoscaling/v2 |
Desteklenir |
Desteklenir |
Sonraki adımlar
| Görev | Açıklama | Referans |
|---|---|---|
| İlk uygulamanızı dağıtın | Bir PropagationPolicy oluşturmak ve kaynakları ilişkili kümelere dağıtmak için kubectl kullanın; küme başına farklılıklar için bir OverridePolicy ekleyin. |
Getting started with application distribution |
| İlke parametrelerini anlayın | Küme seçimi, çoğaltma zamanlaması ve geçersiz kılma kuralları dahil olmak üzere PropagationPolicy ve OverridePolicy için tam parametre setini öğrenin. |
PropagationPolicy and OverridePolicy |
| Dağıtım ilerlemesini kontrol edin | Bir uygulamanın ilişkili kümelerdeki rollout durumunu sorgulamak için kubectl amc komutunu çalıştırın. |
Use AMC command line |