Sdílet prostřednictvím


Pochopení snímků pro umístění prostředků ve službě Azure Kubernetes Fleet Manager

Správce vozového parku uchovává historii 10 naposledy použitých zásad plánování umístění spolu s verzemi prostředků, která byla vybrána. Tyto verze politik a prostředků jsou uchovávány jako snímky:

  • Pro ClusterResourcePlacement (CRP): ClusterSchedulingPolicySnapshot a ClusterResourceSnapshot (v rozsahu clusteru)
  • Pro ResourcePlacement (RP): SchedulingPolicySnapshot a ResourceSnapshot (obor názvů)

V tomto článku tyto objekty prozkoumáme, abyste jim porozuměli, pokud s nimi chcete pracovat.

Poznámka:

Pokud ještě neznáte, jak Správce flotily umisťuje prostředky:

Jak se vytvářejí snímky prostředků

Všechny změny prostředků, na které se vztahuje rozsah výběru zdrojů CRP nebo RP, automaticky aktivují vytvoření nového snímku prostředku během 60 sekund.

Zobrazení snímků prostředků

Snímky prostředků uchovávané Správcem flotily můžete zobrazit pomocí následujícího postupu při připojení ke clusteru centra Fleet Manager.

Zobrazení ClusterResourceSnapshot (pro ClusterResourcePlacement)

Pro umístění ve shluku pomocí ClusterResourcePlacement, zobrazit objekty ClusterResourceSnapshot.

V této ukázce použijeme aktualizovanou mapu ConfigMap, která vede ke dvěma snímkům.

kubectl get clusterresourcesnapshots --show-labels

Vidíme dva snímky, s tím nejnovějším označeným jako poslední (kubernetes-fleet.io/is-latest-snapshot=true), s indexem zdrojů 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

Obsah objektu example-placement-1-snapshot můžeme zkontrolovat následujícím způsobem.

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

Zobrazení ResourceSnapshot (pro ResourcePlacement)

Pro umístění s oborem názvů pomocí ResourcePlacement zobrazte objekty ResourceSnapshot v tomto oboru názvů.

Poznámka:

ResourcePlacement používá rozhraní API verze placement.kubernetes-fleet.io/v1beta1 a je momentálně v testovací verzi.

V této ukázce máme ResourcePlacement v my-app oboru názvů s aktualizovanými objekty ConfigMap, což vede ke dvěma snímkům.

kubectl get resourcesnapshots -n my-app --show-labels

Vidíme dva snímky, s tím nejnovějším označeným jako poslední (kubernetes-fleet.io/is-latest-snapshot=true), s indexem zdrojů 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

Obsah objektu app-configs-rp-1-snapshot můžeme zkontrolovat následujícím způsobem.

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

Použití snímků prostředků

Snímky lze použít jako součást postupného nasazování, které je řízeno prostřednictvím běhů aktualizací a slouží jako mechanismus pro vrácení zpět. Oba ClusterResourcePlacement i ResourcePlacement podporují postupné zavádění s jejich příslušnými typy snímků.

  • Pro ClusterResourcePlacement: Používá ClusterResourceSnapshot objekty s ClusterStagedUpdateRun
  • Pro ResourcePlacement: Používá ResourceSnapshot objekty s StagedUpdateRun

Podrobnosti o implementaci fázovaných zavedení pro oba typy umístění prostředků najdete v tématu Strategie postupného zavedení .

Úprava limitu historie snímků

Pokud chcete změnit počet položek uložených v historii, přidejte revisionHistoryLimit do umístění pole a zadejte celočíselnou hodnotu. Výchozí hodnota je 10.

Pro 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%

Pro umístění zdrojů

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%

Další kroky