Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
✔️ Dotyczy Fleet Manager z klastrem hubowym
Zarządzanie zasobami platformy Kubernetes w wielu klastrach stanowi istotne wyzwanie zarówno dla administratorów platformy, jak i deweloperów aplikacji. Ponieważ organizacje skalują infrastrukturę Kubernetes poza pojedynczy klaster, często napotykają złożoność związaną z dystrybucją zasobów, spójnością i ręcznym obciążeniem związanym z zarządzaniem. Tradycyjne podejście do zarządzania poszczególnymi klastrami niezależnie tworzy silosy operacyjne, które stają się coraz trudniejsze do utrzymania w miarę wzrostu wielkości floty.
Administratorzy platformy często muszą wdrażać zasoby kubernetes w wielu klastrach z różnych powodów, w tym:
- Zarządzanie kontrolą dostępu przy użyciu ról i powiązań ról w wielu klastrach.
- Uruchamianie aplikacji infrastruktury, takich jak Prometheus lub Flux, które muszą znajdować się we wszystkich klastrach.
Deweloperzy aplikacji często muszą wdrażać zasoby Kubernetes w wielu klastrach z różnych powodów, w tym:
- Wdrażanie aplikacji obsługującej wideo w wielu klastrach w różnych regionach na potrzeby oglądania z małym opóźnieniem.
- Wdrażanie aplikacji koszyka zakupów w dwóch sparowanych regionach, dzięki czemu klienci mogą nadal robić zakupy podczas awarii w jednym regionie.
- Wdrażanie aplikacji obliczeniowej wsadowej w klastrach z dostępnymi niedrogimi pulami węzłów typu spot.
Ręczne tworzenie, aktualizowanie i śledzenie zasobów Kubernetes w wielu klastrach jest żmudne i wiąże się z ryzykiem błędów.
W tym artykule dowiesz się, jak korzystać z funkcji inteligentnego rozmieszczania zasobów w usłudze Fleet Manager do zarządzania rozmieszczaniem zasobów Kubernetes o zakresie klastra i przestrzeni nazw między klastrami członkowskimi we flocie.
Możliwość umieszczania zasobów w usłudze Fleet Manager jest oparta na projekcie KubeFleet CNCF.
Omówienie procesu umieszczania zasobów
Aby użyć inteligentnego umieszczania zasobów usługi Fleet Manager, wykonaj następujące kroki:
- Przygotuj zasoby w klastrze centralnym: użyj ciągłego wdrażania, GitOps lub podobnej metody, aby zastosować manifesty do rozmieszczania zasobów w centralnym klastrze Fleet Managera.
- Utwórz rozmieszczenie zasobu: utwórz manifest rozmieszczenia, który wybiera zasób i definiuje zasady określające, które klastry członkowskie otrzymają ten zasób.
- Zastosuj rozmieszczenie zasobów w klastrze centralnym: zastosuj manifest rozmieszczenia w klastrze centralnym, aby rozpocząć dystrybucję zasobu.
- Fleet Manager planuje zasoby: Fleet Manager obserwuje rozmieszczenie zasobów i wybrany zakres oraz wykonuje dystrybucję zasobów.
- Obserwuj dystrybucję za pomocą funkcji ResourcePlacement: sprawdź obiekt ResourcePlacement w klastrze centralnym, aby monitorować stan zasobu w miarę jego wdrażania.
Fleet Manager ma doświadczenie portalowe Azure do rozmieszczania zasobów, które zapewnia bardziej wizualne przedstawienie wdrożenia.
Wprowadzenie do rozlokowania zasobów w klastrze
Użyj obiektu ClusterResourcePlacement (CRP), aby rozmieścić określony zestaw zasobów na poziomie klastra lub całe przestrzenie nazw z klastra centralnego Fleet Manager do jednego lub większej liczby klastrów członkowskich.
Kluczowe cechy:
- Zakres całego klastra: wybiera zasoby z zakresu całego klastra lub przestrzenie nazw.
-
Deklaratywny: używa tych samych zasad rozmieszczania co
ResourcePlacement, aby zapewnić spójne działanie.
Za pomocą protokołu CRP można wykonywać następujące czynności:
- Wybierz zasoby kubernetes do dystrybucji. Te zasoby mogą być zasobami Kubernetes o zakresie całego klastra zdefiniowanymi za pomocą odwołań Kubernetes Group Version Kind (GVK) albo przestrzenią nazw, co powoduje rozprowadzenie tej przestrzeni nazw i wszystkich jej zasobów.
- Określ zasady lokalizacji, aby wybrać klastry członkowskie. Te zasady mogą jawnie wybierać klastry według nazw lub dynamicznie wybierać klastry na podstawie etykiet i właściwości klastra.
- Określ strategie wdrażania, aby bezpiecznie wdrożyć wszystkie aktualizacje wybranych zasobów Kubernetes w wielu klastrach docelowych.
- Wyświetl postęp wdrażania dla każdego klastra docelowego.
W przypadku scenariuszy wymagających precyzyjnej kontroli nad indywidualnymi zasobami w obrębie przestrzeni nazw, zobacz rozmieszczanie zasobów w obrębie przestrzeni nazw, co umożliwia dystrybucję określonych zasobów zamiast całych przestrzeni nazw.
Przedstawienie umieszczania zasobów ograniczonych do przestrzeni nazw
Użyj elementu ResourcePlacement (RP), aby dystrybuować dany zestaw zasobów w ramach określonej przestrzeni nazw z klastra centrum Fleet Manager na co najmniej jeden klaster członkowski. ResourcePlacement zapewnia szczegółową kontrolę nad tym, jak każdy z zasobów w przestrzeni nazw jest rozmieszczany wśród klastrów członkowskich.
Kluczowe cechy:
-
Zakres przestrzeni nazw: zarówno
ResourcePlacementjak i zasoby, które wybiera, istnieją w tej samej przestrzeni nazw. - Selektywne: wybiera określone zasoby w przestrzeni nazw według typu, nazwy lub etykiet, a nie całych przestrzeni nazw.
-
Deklaratywne: używa tych samych zasad umieszczania co
ClusterResourcePlacementdla jednolitego zachowania.
Kiedy należy używać usługi ResourcePlacement
ResourcePlacement jest idealnym rozwiązaniem w scenariuszach wymagających precyzyjnej kontroli nad zasobami w zakresie przestrzeni nazw:
- Selektywna dystrybucja zasobów: wdrażanie określonych map konfiguracji, wpisów tajnych lub usług bez wpływu na całą przestrzeń nazw.
- Środowiska wielodzierżawne: umożliwiają różnym zespołom niezależne zarządzanie zasobami we współdzielonych przestrzeniach nazw.
- Zarządzanie konfiguracją: dystrybuuj konfiguracje specyficzne dla środowiska w różnych środowiskach klastra.
- Zgodność i ład: zastosuj różne zasady do różnych typów zasobów w ramach tej samej przestrzeni nazw.
- Progresywne wdrażanie: bezpieczne wdrażanie aktualizacji zasobów w klastrach przy użyciu strategii bez przestojów.
W środowiskach wieloklastrowych obciążenia często składają się zarówno z zasobów o zakresie klastra, jak i zasobów o zakresie przestrzeni nazw, które należy dystrybuować w różnych klastrach. Chociaż ClusterResourcePlacement (CRP) skutecznie obsługuje zasoby o zakresie klastra, zarządza również całą przestrzenią nazw i ich zawartością. Jednak niektóre scenariusze wymagają bardziej szczegółowej kontroli nad zasobami o zakresie przestrzeni nazw w istniejących przestrzeniach nazw.
ResourcePlacement (RP) rozwiązuje tę lukę, zapewniając:
- Zarządzanie zasobami przestrzeni nazw: celowanie w konkretne zasoby w przestrzeni nazw bez wpływu na całą przestrzeń.
- Elastyczność operacyjna: umożliwia zespołom niezależne zarządzanie różnymi zasobami w ramach tej samej przestrzeni nazw.
- Funkcje uzupełniające: praca z CRP w celu zapewnienia kompletnego rozwiązania do zarządzania zasobami wieloklastrowymi.
Uwaga / Notatka
Można używać ResourcePlacement w połączeniu z ClusterResourcePlacement w trybie obsługującym tylko przestrzenie nazw. Na przykład użyj CRP do wdrożenia przestrzeni nazw, a RP do precyzyjnego zarządzania określonymi zasobami, takimi jak mapy ConfigMap specyficzne dla środowiska lub obiekty Secrets w obrębie tej przestrzeni nazw.
Składniki alokacji zasobów
Umieszczanie zasobów, niezależnie od zakresu (klastra lub przestrzeni nazw), składa się z następujących składników:
-
Selektory zasobów: wybierz zasoby, które chcesz uwzględnić za pomocą
resourceSelectors. -
Zasady rozmieszczania: określa sposób wybierania klastrów za pomocą
placementTypeprzy użyciu jednego z typówPickAll,PickFixedlubPickN. -
Strategia wdrażania: kontroluj sposób wdrażania zasobów w wybranych klastrach za pomocą opcjonalnego
strategy.
Ten przykładowy zasób ClusterResourcePlacement (CRP) rozmieszcza przestrzeń nazw my-app we wszystkich klastrach w flocie. Jeśli nie zdefiniujesz jawnej strategii, proces używa elementu RollingUpdate.
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: namespace-only-crp
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: my-app
version: v1
policy:
placementType: PickAll
Ten przykładowy zasób ResourcePlacement (RP) umieszcza obiekt ConfigMap oznaczony app=my-application w przestrzeni nazw my-app, umieszczając go w odpowiadającej przestrzeni nazw na dwóch nazwanych klastrach. Jeśli nie zdefiniujesz jawnej strategii, proces używa elementu RollingUpdate.
apiVersion: placement.kubernetes-fleet.io/v1
kind: ResourcePlacement
metadata:
name: app-configs-rp
namespace: my-app
spec:
resourceSelectors:
- group: ""
kind: ConfigMap
version: v1
labelSelector:
matchLabels:
app: my-application
policy:
placementType: PickFixed
clusterNames:
- cluster1
- cluster2
Selektory zasobów
Wybierz zasoby, używając co najmniej jednego elementu resourceSelectors w rozmieszczeniu. Każdy selektor zasobów może określać:
- Grupa, wersja, rodzaj (GVK): typ zasobu Kubernetes do wybrania.
- Nazwa: nazwa określonego zasobu.
- Selektory etykiet: etykiety pasujące do wielu zasobów.
Zakres wyboru przestrzeni nazw
Jeśli używasz rozmieszczania o zakresie klastra do wybrania całej przestrzeni nazw, użyj pola selectionScope, aby określić, czy uwzględnić wszystkie zasoby podrzędne w tej przestrzeni nazw, czy umieścić tylko pustą przestrzeń nazw.
-
Zachowanie domyślne (gdy
selectionScopenie zostanie określone): dystrybuuje przestrzeń nazw i wszystkie zasoby w niej. -
NamespaceOnly: dystrybuuje tylko zasób przestrzeni nazw, bez żadnych zasobów zawartych w przestrzeni nazw. Ta opcja jest przydatna, gdy chcesz ustanowić przestrzenie nazw w klastrach, zarządzając poszczególnymi zasobami oddzielnie przy użyciu poleceniaResourcePlacement.
W tym przykładzie pokazano, jak dystrybuować tylko przestrzeń nazw bez jej zawartości.
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: namespace-only-crp
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: my-app
version: v1
selectionScope: NamespaceOnly
policy:
placementType: PickAll
Takie podejście umożliwia przepływ pracy, w którym administratorzy platformy używają ClusterResourcePlacement do ustanawiania przestrzeni nazw, podczas gdy zespoły aplikacji używają ResourcePlacement do dokładnej kontroli nad konkretnymi zasobami w tych przestrzeniach nazw.
Polityka dotycząca rozmieszczania
Rozmieszczanie zasobów usługi Fleet Manager obsługuje następujące typy zasad rozmieszczania, które określają sposób wybierania klastrów:
- PickFixed umieszcza zasoby w klastrach członkowskich przy użyciu ich nazw klastrów.
- Wybierzwszystkie umieszcza zasoby we wszystkich klastrach członkowskich lub wszystkich klastrach członkowskich spełniających kryteria. Te zasady są przydatne w przypadku umieszczania obciążeń infrastruktury, takich jak aplikacje do monitorowania klastra lub raportowania.
- PickN to najbardziej elastyczna opcja umieszczania. Umożliwia wybrać klastry na podstawie afinity lub ograniczeń rozkładu topologii. Użyj tych zasad podczas rozmieszczania obciążeń w wielu podobnych klastrach, aby zapewnić utrzymanie dostępności.
Typ umiejscowienia PickFixed
Użyj PickFixed polecenia , aby wybrać klastry według nazwy. Podaj nazwy w tablicy clusterNames .
W tym przykładzie pokazano, jak dystrybuować przestrzeń nazw test-deployment na klastry członkowskie cluster1 i cluster2.
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: crp-fixed
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: test-deployment
version: v1
policy:
placementType: PickFixed
clusterNames:
- cluster1
- cluster2
Ten przykładowy zasób ResourcePlacement (RP) umieszcza obiekt ConfigMap oznaczony app: my-application w przestrzeni nazw my-app, umieszczając go w odpowiadającej przestrzeni nazw na dwóch nazwanych klastrach.
apiVersion: placement.kubernetes-fleet.io/v1
kind: ResourcePlacement
metadata:
name: app-configs-rp
namespace: my-app
spec:
resourceSelectors:
- group: ""
kind: ConfigMap
version: v1
labelSelector:
matchLabels:
app: my-application
policy:
placementType: PickFixed
clusterNames:
- cluster1
- cluster2
PickAll - rodzaj umieszczania
Służy PickAll do dystrybuowania zasobów we wszystkich klastrach członkowskich lub wszystkich klastrach spełniających określone kryteria.
Podczas tworzenia tego typu rozmieszczenia określ następujące typy powinowactwa klastra:
- requiredDuringSchedulingIgnoredDuringExecution: ponieważ ta zasada jest wymagana podczas planowania, filtruje klastry na podstawie określonych kryteriów.
W tym przykładzie pokazano, jak dokonać repartycji przestrzeni nazw prod-deployment oraz wszystkich jej zasobów podrzędnych we wszystkich klastrach członkowskich oznaczonych etykietą environment: production.
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: crp-pickall
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: prod-deployment
version: v1
policy:
placementType: PickAll
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- labelSelector:
matchLabels:
environment: production
Ten przykładowy element ResourcePlacement (RP) umieszcza obiekt ConfigMap oznaczony app: my-application w przestrzeni nazw my-app do pasującej przestrzeni nazw we wszystkich klastrach oznaczonych etykietą environment: production:
apiVersion: placement.kubernetes-fleet.io/v1
kind: ResourcePlacement
metadata:
name: app-configs-rp-pickall
namespace: my-app
spec:
resourceSelectors:
- group: ""
kind: ConfigMap
version: v1
labelSelector:
matchLabels:
app: my-application
policy:
placementType: PickAll
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- labelSelector:
matchLabels:
environment: production
Typ rozmieszczenia pickN
Użyj PickN do dystrybucji zasobów na konfigurowalną liczbę klastrów, uwzględniając zarówno preferencje koligacji, jak i ograniczenia dotyczące rozproszenia topologii.
Podczas tworzenia tego typu rozmieszczenia określ następujące typy powinowactwa klastra:
- requiredDuringSchedulingIgnoredDuringExecution: ponieważ ta zasada jest wymagana podczas planowania, filtruje klastry na podstawie określonych kryteriów.
- preferredDuringSchedulingIgnoredDuringExecution: jako że zasady te są preferowane, ale nie są wymagane podczas planowania, klasyfikuje klastry na podstawie określonych kryteriów.
Można ustawić zarówno wymagane, jak i preferowane preferencje. Wymagane koligacje uniemożliwiają umieszczanie w klastrach, które nie są zgodne. Preferowane powiązania określają kolejność dopasowanych klastrów.
PickN z powiązaniami
Korzystanie z affinity z zasadą rozmieszczania PickN działa tak samo jak korzystanie z affinity z harmonogramowaniem podów w pojedynczym klastrze Kubernetes.
W poniższym przykładzie pokazano, jak wdrożyć zasób w trzech klastrach. Tylko klastry z etykietą critical-allowed: "true" są prawidłowymi miejscami docelowymi umieszczania, a preferencje są przekazywane klastrom z etykietą critical-level: 1:
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: crp-pickn-critical-preferences
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: prod-deployment
version: v1
policy:
placementType: PickN
numberOfClusters: 3
affinity:
clusterAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
weight: 20
preference:
- labelSelector:
matchLabels:
critical-level: 1
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- labelSelector:
matchLabels:
critical-allowed: "true"
apiVersion: placement.kubernetes-fleet.io/v1
kind: ResourcePlacement
metadata:
name: app-configs-rp-pickn-critical-preferences
namespace: my-app
spec:
resourceSelectors:
- group: ""
kind: ConfigMap
version: v1
labelSelector:
matchLabels:
app: my-application
policy:
placementType: PickN
numberOfClusters: 3
affinity:
clusterAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
weight: 20
preference:
- labelSelector:
matchLabels:
critical-level: 1
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- labelSelector:
matchLabels:
critical-allowed: "true"
PickN z ograniczeniami rozprzestrzeniania topologii
Użyj ograniczeń rozkładu topologii, aby wymusić rozmieszczanie między domenami topologicznymi w celu spełnienia wymagań dotyczących dostępności.
Można skonfigurować zachowanie ograniczeń rozprzestrzeniania topologii, używając właściwości whenUnsatisfiable.
- DoNotSchedule: jeśli nie można spełnić ograniczenia, nie powiodło się żądanie umieszczenia.
- ScheduleAnyway: jeśli nie można spełnić ograniczenia, i tak umieść zasoby.
Poniższy przykład pokazuje, jak rozmieścić zasoby w wielu regionach platformy Azure, oraz jak próbować planować rozmieszczanie w klastrach członkowskich mających różne dni aktualizacji przy użyciu etykiety niestandardowej updateDay.
Gdy nie można zapewnić rozproszenia między regionami platformy Azure, rozmieszczenie kończy się niepowodzeniem. Jeśli ograniczenie updateDay nie zostanie spełnione, umieszczenie i tak nastąpi.
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: crp-pickn-locations-updates
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: prod-deployment
version: v1
policy:
placementType: PickN
topologySpreadConstraints:
- maxSkew: 2
topologyKey: fleet.azure.com/location
whenUnsatisfiable: DoNotSchedule
- maxSkew: 2
topologyKey: updateDay
whenUnsatisfiable: ScheduleAnyway
apiVersion: placement.kubernetes-fleet.io/v1
kind: ResourcePlacement
metadata:
name: app-configs-rp-pickn-locations-updates
namespace: my-app
spec:
resourceSelectors:
- group: ""
kind: ConfigMap
version: v1
labelSelector:
matchLabels:
app: my-application
policy:
placementType: PickN
topologySpreadConstraints:
- maxSkew: 2
topologyKey: fleet.azure.com/location
whenUnsatisfiable: DoNotSchedule
- maxSkew: 2
topologyKey: updateDay
whenUnsatisfiable: ScheduleAnyway
Aby uzyskać więcej informacji, zobacz dokumentację rozwiązania KubeFleet dotyczącą ograniczeń rozprzestrzeniania się topologii.
Wybieranie klastrów przy użyciu etykiet i właściwości
Inteligentne rozmieszczanie zasobów w usłudze Fleet Manager oferuje zestaw zaawansowanych kryteriów, których można użyć przy określaniu sposobu wyboru klastrów podczas korzystania z typów rozmieszczania PickN i PickAll. W tej sekcji dowiesz się, jak używać tych opcji do tworzenia zasad odpowiadających Twoim potrzebom.
Opcje polityki umieszczania
Poniższa tabela przedstawia dostępne pola zasad harmonogramowania dla każdego typu rozmieszczenia.
| Dziedzina polityki | PickFixed | PickAll | PickN |
|---|---|---|---|
placementType |
✅ | ✅ | ✅ |
affinity |
❌ | ✅ | ✅ |
clusterNames |
✅ | ❌ | ❌ |
numberOfClusters |
❌ | ❌ | ✅ |
topologySpreadConstraints |
❌ | ❌ | ✅ |
Etykiety klastrów członkowskich
Możesz nadać etykietę zasobowi MemberCluster w klastrze centralnym, tak jak każdemu zasobowi Kubernetes.
Ponadto usługa Fleet Manager automatycznie dodaje następujące etykiety tylko do odczytu do wszystkich klastrów członkowskich.
| Etykieta | Opis |
|---|---|
| fleet.azure.com/location | Region Azure klastra (westus) |
| fleet.azure.com/resource-group | Grupa zasobów Azure dla klastra (rg_prodapps_01) |
| fleet.azure.com/subscription-id | Identyfikator subskrypcji Azure, w którym znajduje się klaster. Sformatowany jako UUID/GUID. |
| fleet.azure.com/cluster-name | Nazwa klastra skojarzonego z zasobem klastra członkowskiego Fleet. |
| fleet.azure.com/member-name | Nazwa klastra członkowskiego Fleet Manager, która odpowiada temu klastrowi. |
Właściwości klastra
Użyj następujących właściwości jako części zasad rozmieszczania.
| Nazwa właściwości | Opis |
|---|---|
| kubernetes-fleet.io/node-count | Dostępne węzły w klastrze członkowskim. |
| resources.kubernetes-fleet.io/total-cpu | Łączna liczba jednostek zasobów procesora CPU klastra. |
| resources.kubernetes-fleet.io/allocatable-cpu | Jednostki zasobów CPU klastra możliwe do przydzielenia. |
| resources.kubernetes-fleet.io/dostępne-cpu | Dostępne jednostki zasobów procesora klastra. |
| resources.kubernetes-fleet.io/total-memory | Łączna jednostka zasobów pamięci klastra. |
| resources.kubernetes-fleet.io/allocatable-memory | Przydzielalne jednostki zasobów pamięci klastra. |
| resources.kubernetes-fleet.io/dostępna-pamięć | Dostępne jednostki zasobów pamięci klastra. |
| kubernetes.azure.com/per-koszt-jednego-rdzenia-cpu (koszt na rdzeń CPU) | Koszt na rdzeń procesora w klastrze. |
| kubernetes.azure.com/per-gb-memory-cost | Koszt pamięci klastra na GiB. |
| kubernetes.azure.com/vm-sizes/{vm-sku-name}/count | Dostępna liczba istniejących węzłów typu vm-sku-name w klastrze*. Przykładowa nazwa SKU maszyny wirtualnej: NV16as_v4. * W wersji zapoznawczej za pośrednictwem interfejsu API v1beta1. |
| kubernetes.azure.com/vm-sizes/{vm-sku-name}/capacity | Liczba potencjalnych nowych węzłów typu vm-sku-name w regionie platformy Azure klastra*. Przykładowa nazwa SKU maszyny wirtualnej: NV16as_v4. * W wersji zapoznawczej za pośrednictwem interfejsu API v1beta1. |
Jednostki zasobów platformy Kubernetes reprezentują właściwości procesora CPU i pamięci. Aby uzyskać więcej informacji, zobacz Resource units in Kubernetes (Jednostki zasobów na platformie Kubernetes).
Właściwości kosztowe to liczby dziesiętne, które określają koszt za godzinę w dolarach amerykańskich zasobów obliczeniowych platformy Azure używanych przez węzły w klastrze. Koszt oparty jest na publicznych cenach Azure.
Kryteria dopasowania wyboru
W przypadku używania właściwości klastra w kryteriach zasad określ:
Nazwa: nazwa właściwości, która jest jedną z właściwości wymienionych w tym artykule.
Operator: Operator, który wyraża warunek między ograniczeniem lub żądaną wartością a obserwowaną wartością w klastrze. Obecnie obsługiwane są następujące operatory:
-
Gt(Większe niż): obserwowana wartość danej właściwości klastra musi być większa niż wartość warunku, zanim będzie można ją wybrać do umieszczania zasobów. -
Ge(Większe lub równe): obserwowana wartość danej właściwości klastra musi być większa lub równa wartości w warunku, zanim będzie można ją wybrać do umieszczania zasobów. -
Lt(Mniej niż): obserwowana wartość danej właściwości klastra musi być mniejsza niż wartość warunku, zanim będzie można ją wybrać do umieszczania zasobów. -
Le(Mniejsze niż lub równe): obserwowana wartość danej właściwości klastra musi być mniejsza lub równa wartości w warunku, zanim będzie można ją wybrać do umieszczania zasobów. -
Eq(Równe): obserwowana wartość danej właściwości klastra musi być równa wartości w warunku, zanim będzie można ją wybrać do umieszczania zasobów. -
Ne(Nie równa się): obserwowana wartość danej właściwości klastra nie może być równa wartości określonej w warunku, zanim klaster będzie mógł zostać wybrany do rozmieszczenia zasobów.
Jeśli używasz operatora
Gt, ,Ge,LtLe,EqlubNe, lista wartości w warunku powinna mieć dokładnie jedną wartość.-
Wartości: lista wartości, które są możliwymi wartościami właściwości.
Fleet ocenia każdy klaster na podstawie właściwości, które określisz w warunku. Jeśli klaster nie spełnia warunków wymienionych w obszarze requiredDuringSchedulingIgnoredDuringExecution, flota wyklucza klaster z umieszczania zasobów.
Uwaga / Notatka
Jeśli klaster członkowski nie ma właściwości wyrażonej w warunku, automatycznie nie spełnia tego warunku.
Oto przykładowe zasady umieszczania, aby wybrać tylko klastry z co najmniej pięcioma węzłami.
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: crp-pickall-five-nodes
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: prod-deployment
version: v1
policy:
placementType: PickAll
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- propertySelector:
matchExpressions:
- name: "kubernetes-fleet.io/node-count"
operator: Ge
values:
- "5"
apiVersion: placement.kubernetes-fleet.io/v1
kind: ResourcePlacement
metadata:
name: app-configs-rp-pickall-five-nodes
namespace: my-app
spec:
resourceSelectors:
- group: ""
kind: ConfigMap
version: v1
labelSelector:
matchLabels:
app: my-application
policy:
placementType: PickAll
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- propertySelector:
matchExpressions:
- name: "kubernetes-fleet.io/node-count"
operator: Ge
values:
- "5"
Jak działa klasyfikacja właściwości
Gdy używasz preferredDuringSchedulingIgnoredDuringExecution, wszystkie klastry we flocie są uszeregowane według ich wartości w kolejności rosnącej lub malejącej. Wagi używane do zamawiania są obliczane na podstawie określonej wartości.
Sorter właściwości składa się z:
- Nazwa: nazwa właściwości klastra.
-
Kolejność sortowania: kolejność sortowania może mieć wartość
AscendinglubDescending. W przypadku używaniaAscendingkolejności preferowane są klastry składowe z niższymi obserwowanymi wartościami. W przypadku używaniaDescendingkolejności preferowane są klastry członkowskie o wyższej obserwowanej wartości.
Aby uzyskać więcej informacji, zobacz dokumentację platformy KubeFleet dotyczącą planowania opartego na właściwościach.
Konfigurowanie strategii wdrażania
Umieszczanie zasobów w usłudze Fleet Manager używa domyślnej RollingUpdate strategii do kontrolowania sposobu dystrybucji zasobów do klastrów członkowskich.
W poniższym przykładzie wdrażanie odbywa się sekwencyjnie do każdego z klastrów członkowskich, odczekując co najmniej unavailablePeriodSeconds między klastrami.
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: crp-pick-all-rolling
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: prod-deployment
version: v1
policy:
placementType: PickAll
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
unavailablePeriodSeconds: 60
apiVersion: placement.kubernetes-fleet.io/v1
kind: ResourcePlacement
metadata:
name: app-configs-rp-pickall-rolling
namespace: my-app
spec:
resourceSelectors:
- group: ""
kind: ConfigMap
version: v1
labelSelector:
matchLabels:
app: my-application
policy:
placementType: PickAll
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
unavailablePeriodSeconds: 60
Stan wdrożenia jest uznawany za pomyślny, jeśli wszystkie zasoby są poprawnie stosowane do klastra. Ten stan nie uwzględnia statusu zasobów podrzędnych, dlatego nie potwierdza, że zasobniki utworzone przez wdrożenie w klastrze członkowskim osiągną stan gotowości.
Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą strategii wdrażania.
Używanie tolerancji
Możesz taintować klastry członkowskie, tak jak taintujesz węzły w klastrze.
Rozmieszczenie zasobów umożliwia wykorzystanie tolerancji, w których każda tolerancja składa się z następujących pól:
-
key: klucz tolerancji. -
value: wartość tolerancji. -
effect: Efekt tolerancji, taki jakNoSchedule. -
operator: operator tolerancji, taki jakExistslubEqual.
Każda tolerancja jest stosowana do tolerowania jednego lub więcej konkretnych niedoskonałości zastosowanych na węźle MemberCluster. Po tolerowaniu wszystkich zakłóceń Fleet Manager może dystrybuować zasoby do klastra członkowskiego.
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
name: test-ns
spec:
policy:
placementType: PickAll
tolerations:
- key: app-team-a
operator: Exists
resourceSelectors:
- group: ""
kind: Namespace
name: test-ns
version: v1
revisionHistoryLimit: 10
strategy:
type: RollingUpdate
apiVersion: placement.kubernetes-fleet.io/v1
kind: ResourcePlacement
metadata:
name: app-configs-rp-pickall-rolling
namespace: my-app
spec:
resourceSelectors:
- group: ""
kind: ConfigMap
version: v1
labelSelector:
matchLabels:
app: my-application
policy:
placementType: PickAll
tolerations:
- key: app-team-a
operator: Exists
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
unavailablePeriodSeconds: 60
Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą tolerancji.
Korzystanie z zasobów koperty
Klaster centrum Fleet Manager jest również klastrem Kubernetes. Najpierw wdroż w klastrze centralnym dowolny zasób, który chcesz dystrybuować. Takie podejście może prowadzić do:
Niezamierzone skutki uboczne: Konfiguracje ValidatingWebhookConfigurations, MutatingWebhookConfigurations lub Kontrolery Admission stają się aktywne w klastrze hub, potencjalnie przechwytując i wpływając na operacje tego klastra.
Zagrożenia bezpieczeństwa: zasoby RBAC (Roles, ClusterRoles, RoleBindings, ClusterRoleBindings) przeznaczone dla klastrów członkowskich mogą nadawać lub ograniczać uprawnienia w klastrze centralnym.
Ograniczenia zasobów: elementy ResourceQuotas, FlowSchema lub LimitRanges zdefiniowane dla klastrów członkowskich obowiązują w klastrze centralnym.
Aby uniknąć niepotrzebnych skutków ubocznych, usługa Fleet Manager udostępnia niestandardowe zasoby kopert (ClusterResourceEnvelope i ResourceEnvelope) w celu opakowania obiektów i uniknięcia tych potencjalnych problemów.
Stosujesz zasób koperty do klastra centralnego, ale zawarte w nim zasoby są z niego wyodrębniane i stosowane, gdy dotrą do klastrów członkowskich.
Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą obiektów koperty.
Określanie stanu umieszczania
Umieszczanie zasobów w systemie Fleet Manager oferuje dwa sposoby wyświetlania stanu w zależności od poziomu dostępu do klastra centralnego i wymagań:
-
Stan rozmieszczenia ClusterResourcePlacement: wyświetl stan rozmieszczenia bezpośrednio w zasobie o zasięgu klastra
ClusterResourcePlacement. Użyj, gdy masz uprawnienia na poziomie klastra i musisz wyświetlić status dowolnego umiejscowienia w całej flocie.
-
Status rozmieszczenia zasobów: Wyświetl stan lokalizacji bezpośrednio w zasobie z zakresem przestrzeni nazw
ResourcePlacement. Użyj tej funkcji, jeśli masz uprawnienia na poziomie przestrzeni nazw i musisz wyświetlić stan rozmieszczenia w zakresie przestrzeni nazw w całej flocie.
Wyświetlanie stanu rozmieszczenia zasobów klastra
Użyj polecenia , kubectl describe resourceplacement <rp-name> aby wyświetlić te informacje.
kubectl describe resourceplacement place-cmap-1
-
ClusterResourcePlacementStatus (wersja zapoznawcza): wyświetlanie stanu umieszczania za pośrednictwem zasobu o zakresie
ClusterResourcePlacementStatusprzestrzeni nazw. Użyj tego zasobu, gdy użytkownicy ograniczeni do przestrzeni nazw muszą wyświetlać stan rozmieszczenia bez przyznawania uprawnień na poziomie klastra. Aby uzyskać więcej informacji, zobacz sekcję ClusterResourcePlacementStatus.
Oba podejścia zawierają następujące informacje:
- Warunki, które obecnie mają zastosowanie do umiejscowienia, w tym to, czy zostało ono pomyślnie zakończone.
- Sekcja dotycząca stanu rozmieszczenia dla każdego klastra członkowskiego, która pokazuje stan wdrożenia w tym klastrze.
Użyj statusu ClusterResourcePlacement
Poniższy przykład pokazuje wyświetlanie stanu bezpośrednio w ClusterResourcePlacement, który wdrożył przestrzeń nazw test i obiekt ConfigMap test-1 w dwóch klastrach członkowskich przy użyciu PickN. Umieszczanie zostało ukończone pomyślnie, a zasoby zostały umieszczone w klastrach aks-member-1 i aks-member-2.
Użyj polecenia , kubectl describe clusterresourceplacement <crp-name> aby wyświetlić te informacje.
kubectl describe clusterresourceplacement crp-1
Name: crp-1
Namespace:
Labels: <none>
Annotations: <none>
API Version: placement.kubernetes-fleet.io/v1
Kind: ClusterResourcePlacement
Metadata:
...
Spec:
Policy:
Number Of Clusters: 2
Placement Type: PickN
Resource Selectors:
Group:
Kind: Namespace
Name: test
Version: v1
Revision History Limit: 10
Status:
Conditions:
Last Transition Time: 2023-11-10T08:14:52Z
Message: found all the clusters needed as specified by the scheduling policy
Observed Generation: 5
Reason: SchedulingPolicyFulfilled
Status: True
Type: ClusterResourcePlacementScheduled
Last Transition Time: 2023-11-10T08:23:43Z
Message: All 2 cluster(s) are synchronized to the latest resources on the hub cluster
Observed Generation: 5
Reason: SynchronizeSucceeded
Status: True
Type: ClusterResourcePlacementSynchronized
Last Transition Time: 2023-11-10T08:23:43Z
Message: Successfully applied resources to 2 member clusters
Observed Generation: 5
Reason: ApplySucceeded
Status: True
Type: ClusterResourcePlacementApplied
Placement Statuses:
Cluster Name: aks-member-1
Conditions:
Last Transition Time: 2023-11-10T08:14:52Z
Message: Successfully scheduled resources for placement in aks-member-1 (affinity score: 0, topology spread score: 0): picked by scheduling policy
Observed Generation: 5
Reason: ScheduleSucceeded
Status: True
Type: ResourceScheduled
Last Transition Time: 2023-11-10T08:23:43Z
Message: Successfully Synchronized work(s) for placement
Observed Generation: 5
Reason: WorkSynchronizeSucceeded
Status: True
Type: WorkSynchronized
Last Transition Time: 2023-11-10T08:23:43Z
Message: Successfully applied resources
Observed Generation: 5
Reason: ApplySucceeded
Status: True
Type: ResourceApplied
Cluster Name: aks-member-2
Conditions:
Last Transition Time: 2023-11-10T08:14:52Z
Message: Successfully scheduled resources for placement in aks-member-2 (affinity score: 0, topology spread score: 0): picked by scheduling policy
Observed Generation: 5
Reason: ScheduleSucceeded
Status: True
Type: ResourceScheduled
Last Transition Time: 2023-11-10T08:23:43Z
Message: Successfully Synchronized work(s) for placement
Observed Generation: 5
Reason: WorkSynchronizeSucceeded
Status: True
Type: WorkSynchronized
Last Transition Time: 2023-11-10T08:23:43Z
Message: Successfully applied resources
Observed Generation: 5
Reason: ApplySucceeded
Status: True
Type: ResourceApplied
Selected Resources:
Kind: Namespace
Name: test
Version: v1
Kind: ConfigMap
Name: test-1
Namespace: test
Version: v1
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal PlacementScheduleSuccess 12m (x5 over 3d22h) cluster-resource-placement-controller Successfully scheduled the placement
Normal PlacementSyncSuccess 3m28s (x7 over 3d22h) cluster-resource-placement-controller Successfully synchronized the placement
Normal PlacementRolloutCompleted 3m28s (x7 over 3d22h) cluster-resource-placement-controller Resources have been applied to the selected clusters
Korzystanie z zasobu ClusterResourcePlacementStatus (wersja zapoznawcza)
Zasób ClusterResourcePlacementStatus jest ograniczony do przestrzeni nazw i udostępnia stan rozmieszczenia dla odpowiadającego mu obiektu ClusterResourcePlacement o zakresie klastra. Ten zasób umożliwia użytkownikom przestrzeni nazw bez uprawnień na poziomie klastra odczytywanie stanu.
Ważna
Zasób ClusterResourcePlacementStatus oraz pole StatusReportingScope są dostępne jako funkcja zapoznawcza w wersji interfejsu API placement.kubernetes-fleet.io/v1beta1. Nie są dostępne w interfejsie API placement.kubernetes-fleet.io/v1.
Aby użyć tego podejścia, skonfiguruj element ClusterResourcePlacement za pomocą statusReportingScope: NamespaceAccessible, korzystając z interfejsu API v1beta1.
Gdy ustawisz statusReportingScope na NamespaceAccessible, możesz określić tylko jeden selektor zasobów przestrzeni nazw i nie możesz go zmienić po utworzeniu.
Konfigurowanie Statusu Rozmieszczenia Zasobów Klastra
Aby użyć tej funkcji, określ wersję interfejsu v1beta1 API w pliku ClusterResourcePlacement:
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
name: crp-with-status-reporting
spec:
statusReportingScope: NamespaceAccessible
resourceSelectors:
- group: ""
kind: Namespace
name: my-app
version: v1
policy:
placementType: PickAll
Wyświetlanie parametru ClusterResourcePlacementStatus
Stan można wyświetlić za pomocą kubectl describe polecenia :
kubectl describe clusterresourceplacementstatuses.v1beta1.placement.kubernetes-fleet.io crp-with-status-reporting -n my-app
Dane wyjściowe zawierają te same informacje o stanie co ClusterResourcePlacement, ale są dostępne dla użytkowników posiadających uprawnienia na poziomie przestrzeni nazw.
Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą sposobu zrozumienia wyniku umieszczania.
Wyzwalacze zmiany położenia
Mechanizm harmonogramowania Fleet Manager traktuje priorytetowo stabilność istniejących przydziałów zasobów. Ten priorytet ogranicza liczbę zmian polegających na usunięciu zasobu i ponownym zaplanowaniu go.
Następujące scenariusze mogą wyzwalać zmiany rozmieszczenia:
- Zmiany zasad umieszczania zasobów (
ClusterResourcePlacementlubResourcePlacement) mogą wyzwalać usuwanie i ponowne rozmieszczanie zasobu.- Operacje skalowania w poziomie (zwiększanie
numberOfClustersbez żadnych innych zmian) powodują, że obciążenia robocze są umieszczane wyłącznie w nowych klastrach i nie wpływają na istniejące rozmieszczenie.
- Operacje skalowania w poziomie (zwiększanie
- Zmiany klastra członkowskiego, w tym:
- Nowy klaster członkowski, który staje się uprawniony i spełnia zasady rozmieszczania, na przykład politykę
PickAll. - Usunięcie klastra członkowskiego z floty. W zależności od polityki, scheduler próbuje umieścić wszystkie objęte zasoby w pozostałych klastrach, nie wpływając na istniejące umiejscowienie.
- Nowy klaster członkowski, który staje się uprawniony i spełnia zasady rozmieszczania, na przykład politykę
Aktualizacja wybranych zasobów (na przykład modyfikacja elementu Deployment) lub aktualizacja elementu resourceSelector w rozmieszczeniu zasobów powoduje, że Fleet Manager stopniowo wdraża istniejące rozmieszczenia, ale nie powoduje ponownego planowania zasobu (to znaczy zmiany wybranych klastrów).
Praca z ResourcePlacement i ClusterResourcePlacement razem
Chociaż ClusterResourcePlacement zakłada się, że przestrzenie nazw reprezentują granice aplikacji, wzorce użycia w świecie rzeczywistym są często bardziej złożone. Organizacje często używają przestrzeni nazw jako granic zespołu, a nie granic aplikacji. Takie podejście prowadzi do kilku wyzwań, na które ResourcePlacement bezpośrednio odpowiada:
Przestrzenie nazw wielu aplikacji: w wielu organizacjach jedna przestrzeń nazw zawiera wiele niezależnych aplikacji należących do tego samego zespołu. Te aplikacje mogą mieć następujące zastosowania:
- Różne wymagania dotyczące cyklu życia. Na przykład jedna aplikacja może wymagać częstych aktualizacji, podczas gdy inna pozostaje stabilna.
- Różne potrzeby dotyczące lokalizacji klastra. Na przykład aplikacje programistyczne i produkcyjne.
- Niezależne wymagania dotyczące skalowania i zasobów.
- Oddzielne wymagania dotyczące zgodności lub zarządzania.
Indywidualne decyzje dotyczące planowania: wiele obciążeń, szczególnie zadań sztucznej inteligencji/uczenia maszynowego, wymaga indywidualnych decyzji dotyczących planowania:
- Zadania sztucznej inteligencji: obciążenia uczenia maszynowego często składają się z krótkoterminowych zadań intensywnie korzystających z zasobów, które muszą być zaplanowane na podstawie dostępności zasobów klastra, dostępności procesora GPU lub lokalizacji danych.
- Obciążenia wsadowe: różne zadania wsadowe w tej samej przestrzeni nazw mogą być przeznaczone dla różnych typów klastrów na podstawie wymagań obliczeniowych.
Pełna kontrola zespołu aplikacji: ResourcePlacement zapewnia zespołom aplikacji bezpośrednią kontrolę nad umieszczaniem zasobów bez konieczności interwencji zespołu platformy:
- Operacje samoobsługowe: zespoły mogą zarządzać własnymi strategiami dystrybucji zasobów.
- Niezależne cykle wdrażania: różne aplikacje w przestrzeni nazw mogą mieć niezależne harmonogramy wdrażania.
- Szczegółowe możliwości przesłonięcia: Zespoły mogą dostosowywać konfiguracje zasobów dla klastra bez wpływu na inne aplikacje w przestrzeni nazw.
To szczegółowe podejście gwarantuje, że ResourcePlacement można dostosować się do różnych struktur organizacyjnych i wzorców obciążeń przy zachowaniu prostoty i mocy struktury planowania Floty.
Kluczowe różnice między ResourcePlacement a ClusterResourcePlacement
W poniższej tabeli przedstawiono kluczowe różnice między elementami ResourcePlacement i ClusterResourcePlacement:
| Aspekt | ResourcePlacement (RP) | ClusterResourcePlacement (CRP) |
|---|---|---|
| Scope | Tylko zasoby w zakresie przestrzeni nazw | Zasoby w zakresie klastra (zwłaszcza przestrzenie nazw i ich zawartość) |
| Zasób | Obiekt API ograniczony do przestrzeni nazw | Obiekt interfejsu API o przestrzeni zakresu klastra |
| Granica zaznaczenia | Ograniczone do zasobów w tej samej przestrzeni nazw co rp | Może wybrać dowolny zasób w zakresie klastra |
| Typowe przypadki użycia | Zadania AI/ML, poszczególne obciążenia robocze, konkretne ConfigMaps/Secrets, które wymagają niezależnych decyzji dotyczących rozmieszczania | Pakiety aplikacji, całe przestrzenie nazw, zasady obejmujące cały klaster |
| Własność zespołu | Właściciele przestrzeni nazw i programiści | Operatory platformy |
Oba ResourcePlacement i ClusterResourcePlacement posiadają te same podstawowe możliwości we wszystkich innych aspektach, których nie wymieniono w tabeli różnic.
Przykładowy scenariusz korzystający z rozwiązania ResourcePlacement i ClusterResourcePlacement
ResourcePlacement współpracuje z ClusterResourcePlacement (CRP) w celu zapewnienia kompletnego rozwiązania do zarządzania zasobami wieloklastrowymi. Zrozumienie tej relacji ma kluczowe znaczenie dla efektywnego zarządzania flotą.
Ważna
ResourcePlacement może umieszczać tylko zasoby o zasięgu przestrzeni nazw w klastrach, które mają już docelową przestrzeń nazwową. Użyj ClusterResourcePlacement do ustanawiania przestrzeni nazw.
Typowy przepływ pracy:
-
Administratorzy platformy: użyjcie
ClusterResourcePlacement, aby wdrażać przestrzenie nazw w całej flocie. -
Zespoły aplikacyjne: używajcie
ResourcePlacement, aby zarządzać określonymi zasobami w tych utworzonych przestrzeniach nazw.
Poniższe przykłady pokazują, jak skoordynować CRP i RP.
Administrator platformy: utwórz przestrzeń nazw przy użyciu polecenia ClusterResourcePlacement:
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: app-namespace-crp
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: my-app
version: v1
selectionScope: NamespaceOnly # only namespace itself is placed, no resources within the namespace
policy:
placementType: PickAll # If placement type is not PickAll, the application teams needs to know what are the clusters they can place their applications.
Zespół aplikacji: zarządzanie określonymi zasobami w przestrzeni nazw przy użyciu polecenia ResourcePlacement:
apiVersion: placement.kubernetes-fleet.io/v1
kind: ResourcePlacement
metadata:
name: app-configs-rp
namespace: my-app
spec:
resourceSelectors:
- group: ""
kind: ConfigMap
version: v1
labelSelector:
matchLabels:
app: my-application
policy:
placementType: PickFixed
clusterNames:
- cluster1
- cluster2
Najlepsze praktyki dla ResourcePlacement i ClusterResourcePlacement
Korzystając z ResourcePlacement z ClusterResourcePlacement, postępuj zgodnie z tymi najlepszymi praktykami:
-
Najpierw ustanów przestrzenie nazw: zawsze wdrażaj przestrzenie nazw za pośrednictwem protokołu CRP przed utworzeniem
ResourcePlacementobiektów. - Monitorowanie zależności: użyj monitorowania floty, aby upewnić się, że listy CSP na poziomie przestrzeni nazw są w dobrej kondycji przed wdrożeniem zależnych adresów IP.
- Skoordynuj zasady: Uzgodnij zasady rozmieszczania CRP i RP, aby uniknąć konfliktów. Jeśli na przykład CRP umieszcza przestrzeń nazw w klastrach A, B i C, RP może być kierowany do dowolnego podzbioru tych klastrów.
- Granice zespołowe: użyj CRP dla zasobów zarządzanych przez platformę (przestrzeni nazw, RBAC) i RP dla zasobów zarządzanych przez aplikację (konfiguracji aplikacji, sekrety).
Skoordynowane podejście zapewnia, że ResourcePlacement dostarcza zespołom potrzebną elastyczność, jednocześnie utrzymując podstawową infrastrukturę zarządzaną przez operatorów platformy.
Wybieranie, umieszczanie i wdrażanie zasobów
ResourcePlacement używa tych samych wzorców umieszczania co ClusterResourcePlacement:
-
Zasady umieszczania: Zasady
PickAll,PickFixediPickNdziałają identycznie dla obu interfejsów API. - Strategia wdrażania: kontrolowanie sposobu propagacji aktualizacji między klastrami przy użyciu tych samych mechanizmów aktualizacji stopniowej.
-
Stan i możliwość obserwowania: Monitorowanie postępu wdrażania przy użyciu polecenia
kubectl describe resourceplacement <name> -n <namespace>. - Funkcje zaawansowane: używaj tolerancji, przesłonięć zasobów, ograniczeń rozprzestrzeniania topologii i reguł koligacji.
Kluczową różnicą jest zakres wyboru zasobów . Podczas gdy ClusterResourcePlacement zazwyczaj wybiera całe przestrzenie nazw i ich zawartość, ResourcePlacement zapewnia szczegółową kontrolę nad poszczególnymi zasobami w zakresie przestrzeni nazw.
Następne kroki
- Użyj rozmieszczania zasobów usługi Fleet Manager do wdrażania obciążeń roboczych w wielu klastrach.
- Wdrażanie zasobów o zakresie przestrzeni nazw przy użyciu ResourcePlacement.
- Inteligentne umieszczanie zasobów kubernetes między klastrami na podstawie właściwości klastrów członkowskich.
- Sterowanie ewikcją i zakłóceniami podczas rozmieszczania zasobów.
- Określanie strategii wdrożenia dla rozmieszczenia zasobów.
- Często zadawane pytania dotyczące umieszczania zasobów w usłudze Fleet Manager.