你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

了解 Azure Kubernetes 舰队管理器群集资源放置的快照

舰队管理器保留最近使用的 10 个放置计划策略的历史记录,以及所选放置的资源版本。 这些策略和资源版本分别保留为ClusterSchedulingPolicySnapshotClusterResourceSnapshot对象。

在本文中,我们将探讨这些对象,以便你在想要使用它们时能够了解它们。

注释

如果不熟悉 Fleet Manager 的群集资源放置(CRP),请在阅读本文之前阅读 资源放置的概念概述

查看资源快照

连接到 Fleet Manager 中心群集时,可以使用以下步骤查看 Fleet Manager 持有的资源快照。

在此示例中,我们使用了更新后的 ConfigMap,从而生成两个快照。

kubectl get clusterresourcesnapshots --show-labels

我们看到两个快照,其中最近一个快照标记为最新(kubernetes-fleet.io/is-latest-snapshot=true),资源索引为 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

我们可以按照以下方式检查 example-placement-1-snapshot 对象的内容。

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

使用资源快照

作为回滚机制,可以在通过更新运行管理的 CRP 分阶段推出过程中使用快照

修改快照历史记录限制

若要更改历史记录中保存的项数,请将字段 revisionHistoryLimit 添加到 CRP 并提供整数值。 默认值为 10。

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%

后续步骤