Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Fleet Manager mantiene una cronologia dei 10 criteri di pianificazione del posizionamento usati più di recente, insieme alle versioni delle risorse selezionate. Questi criteri e le versioni delle risorse vengono mantenuti come oggetti snapshot:
- Per ClusterResourcePlacement (CRP):
ClusterSchedulingPolicySnapshoteClusterResourceSnapshot(a livello di cluster) - Per ResourcePlacement (RP):
SchedulingPolicySnapshoteResourceSnapshot(limitato al namespace)
In questo articolo vengono esaminati questi oggetti in modo che sia possibile comprenderli nel caso in cui si desideri usarli.
Annotazioni
Se non si ha già familiarità con il posizionamento delle risorse di Fleet Manager:
- Per le risorse con ambito cluster, leggere la panoramica concettuale di ClusterResourcePlacement (CRP).
- Per le risorse con ambito spazio dei nomi, leggere la panoramica concettuale di ResourcePlacement (RP).For namespace-scoped resources, read the conceptual overview of ResourcePlacement (RP).
Modalità di creazione degli snapshot delle risorse
Qualsiasi modifica alle risorse coperte dall'ambito del selettore di risorse CRP o RP attiverà automaticamente la creazione di un nuovo snapshot di risorsa entro 60 secondi.
Visualizzazione degli snapshot delle risorse
È possibile visualizzare gli snapshot delle risorse mantenuti da Fleet Manager seguendo questa procedura quando si è connessi al cluster hub di Fleet Manager.
Visualizzazione di ClusterResourceSnapshot (per ClusterResourcePlacement)
Per i posizionamenti a livello di cluster tramite ClusterResourcePlacement, visualizza gli oggetti ClusterResourceSnapshot.
In questo esempio viene usato un configmap aggiornato, che porta a due snapshot.
kubectl get clusterresourcesnapshots --show-labels
Vengono visualizzati due snapshot, con quello più recente contrassegnato come più recente (kubernetes-fleet.io/is-latest-snapshot=true), con un indice delle risorse pari a 1 (kubernetes-fleet.io/resource-index=1).
NAME GEN AGE LABELS
example-placement-0-snapshot 1 17m kubernetes-fleet.io/is-latest-snapshot=false,kubernetes-fleet.io/parent-CRP=example-placement,kubernetes-fleet.io/resource-index=0
example-placement-1-snapshot 1 2m2s kubernetes-fleet.io/is-latest-snapshot=true,kubernetes-fleet.io/parent-CRP=example-placement,kubernetes-fleet.io/resource-index=1
È possibile esaminare il contenuto dell'oggetto example-placement-1-snapshot come indicato di seguito.
kubectl get clusterresourcesnapshots example-placement-1-snapshot -o yaml
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourceSnapshot
metadata:
...
labels:
kubernetes-fleet.io/is-latest-snapshot: "true"
kubernetes-fleet.io/parent-CRP: example-placement
kubernetes-fleet.io/resource-index: "1"
name: example-placement-1-snapshot
...
spec:
selectedResources:
- apiVersion: v1
kind: Namespace
metadata:
labels:
kubernetes.io/metadata.name: test-namespace
name: test-namespace
spec:
finalizers:
- kubernetes
- apiVersion: v1
data:
key: value2
kind: ConfigMap
metadata:
name: test-cm
namespace: test-namespace
Visualizzazione di ResourceSnapshot (per ResourcePlacement)
Per i posizionamenti con ambito di spazio dei nomi usando ResourcePlacement, visualizza gli oggetti ResourceSnapshot all'interno dello spazio dei nomi.
Annotazioni
ResourcePlacement usa la versione dell'API placement.kubernetes-fleet.io/v1beta1 ed è attualmente in anteprima.
In questo esempio, è presente un ResourcePlacement nello spazio dei nomi my-app con ConfigMaps aggiornati, con due snapshot.
kubectl get resourcesnapshots -n my-app --show-labels
Vengono visualizzati due snapshot, con quello più recente contrassegnato come più recente (kubernetes-fleet.io/is-latest-snapshot=true), con un indice delle risorse pari a 1 (kubernetes-fleet.io/resource-index=1).
NAME GEN AGE LABELS
app-configs-rp-0-snapshot 1 15m kubernetes-fleet.io/is-latest-snapshot=false,kubernetes-fleet.io/parent-CRP=app-configs-rp,kubernetes-fleet.io/resource-index=0
app-configs-rp-1-snapshot 1 1m3s kubernetes-fleet.io/is-latest-snapshot=true,kubernetes-fleet.io/parent-CRP=app-configs-rp,kubernetes-fleet.io/resource-index=1
È possibile esaminare il contenuto dell'oggetto app-configs-rp-1-snapshot come indicato di seguito.
kubectl get resourcesnapshots app-configs-rp-1-snapshot -n my-app -o yaml
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ResourceSnapshot
metadata:
...
labels:
kubernetes-fleet.io/is-latest-snapshot: "true"
kubernetes-fleet.io/parent-CRP: app-configs-rp
kubernetes-fleet.io/resource-index: "1"
name: app-configs-rp-1-snapshot
namespace: my-app
...
spec:
selectedResources:
- apiVersion: v1
data:
config: updated-value
kind: ConfigMap
metadata:
name: app-config
namespace: my-app
labels:
app: my-application
Usare snapshot delle risorse
Gli snapshot possono essere usati come parte delle implementazioni a fasi gestite tramite le esecuzioni di aggiornamento come meccanismo di rollback. Sia ClusterResourcePlacement che ResourcePlacement supportano implementazioni a fasi con i rispettivi tipi di snapshot:
- Per
ClusterResourcePlacement: usa oggettiClusterResourceSnapshotconClusterStagedUpdateRun - Per
ResourcePlacement: usa oggettiResourceSnapshotconStagedUpdateRun
Per informazioni dettagliate su come implementare implementazioni a fasi per entrambi i tipi di posizionamento delle risorse, vedere Strategia di implementazione a fasi.
Modificare il limite della storia degli snapshot
Per modificare il numero di elementi contenuti nella cronologia, aggiungere un revisionHistoryLimit campo alla posizione e fornire un valore intero. Il valore predefinito è 10.
Per ClusterResourcePlacement
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: crp-example
spec:
revisionHistoryLimit: 20 # keep 20 items in history
resourceSelectors:
- group: ""
kind: Namespace
name: test-namespace
version: v1
policy:
placementType: PickN
numberOfClusters: 2
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- labelSelector:
matchLabels:
fleet.azure.com/location: westus
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 50%
Per ResourcePlacement
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ResourcePlacement
metadata:
name: rp-example
namespace: my-app
spec:
revisionHistoryLimit: 20 # keep 20 items in history
resourceSelectors:
- group: ""
kind: ConfigMap
version: v1
labelSelector:
matchLabels:
app: my-application
policy:
placementType: PickN
numberOfClusters: 2
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- labelSelector:
matchLabels:
fleet.azure.com/location: westus
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 50%
Passaggi successivi
- Definire una strategia di implementazione per l'allocazione delle risorse del cluster.
- Controllare la rimozione e l'interruzione per il posizionamento delle risorse del cluster.
- Usare il posizionamento delle risorse cluster per distribuire i carichi di lavoro in più cluster.
- Usare il posizionamento delle risorse per distribuire risorse di ambito namespace in più cluster.
- Posizionamento intelligente delle risorse Kubernetes tra cluster in base alle proprietà dei cluster membri.