機群管理員會保留 10 個最近使用的版面配置排程原則的記錄,以及所選版面配置的資源版本。 這些政策與資源版本以快照物件形式保存:
- 若是 ClusterResourcePlacement (CRP):
ClusterSchedulingPolicySnapshot和ClusterResourceSnapshot(叢集範圍) - 若是 ResourcePlacement (RP):
SchedulingPolicySnapshot和ResourceSnapshot(命名空間範圍)
在本文中,我們會探索這些物件,以便在您希望使用時能夠了解。
備註
如果你還不熟悉艦隊管理員的資源擺放:
- 關於叢集範圍的資源,請閱讀 ClusterResourcePlacement(CRP)的概念概述。
- 關於命名空間範圍的資源,請閱讀 ResourcePlacement (RP) 的概念概述。
資源快照的建立方式
任何對 CRP 或 RP 資源選擇器範圍內資源的變更,都會在 60 秒內自動觸發新的資源快照建立。
檢視資源快照
聯機到 Fleet Manager 中樞叢集時,您可以使用下列步驟來檢視 Fleet Manager 所持有的資源快照集。
檢視 ClusterResourceSnapshot(適用於 ClusterResourcePlacement)
若是使用 ClusterResourcePlacement 的叢集範圍版面配置,請檢視 ClusterResourceSnapshot 物件。
在這個範例中,我們使用了更新的 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
檢視 ResourceSnapshot (若是 ResourcePlacement)
若是使用 ResourcePlacement 的命名空間範圍,請檢視命名空間內的 ResourceSnapshot 物件。
備註
ResourcePlacement 使用 placement.kubernetes-fleet.io/v1beta1 API 版本,目前正處於預覽階段。
在此範例中,我們在已更新 ConfigMaps 的 ResourcePlacement 命名空間中有 my-app,導致有兩個快照集。
kubectl get resourcesnapshots -n my-app --show-labels
我們看到兩個快照集,其中最近一個快照標示為最新 (kubernetes-fleet.io/is-latest-snapshot=true),資源索引為 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
我們可以檢查 app-configs-rp-1-snapshot 物件的內容,如下所示。
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
使用資源快照集
快照集可做為分段推出的一部分,透過以復原機制執行的更新進行管理。
ClusterResourcePlacement和ResourcePlacement都支援分階段部署,並使用各自的快照類型。
- 若是
ClusterResourcePlacement:使用ClusterResourceSnapshot物件與ClusterStagedUpdateRun - 若是
ResourcePlacement:使用ResourceSnapshot物件與StagedUpdateRun
請參閱 分階段部署策略 ,了解如何為兩種資源配置類型實施分階段部署。
修改快照歷史限制
要改變歷史中持有的物品數量,請在你的放置位置中新增 revisionHistoryLimit 欄位並提供整數值。 預設值為 10。
對於 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%
資源置入
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%