基于集群联邦进行多集群应用分发与管理 步骤一: 创建资源模板 执行如下命令,在联邦控制面中创建资源模板: shell $ kubectl kubeconfig/home/ctyun/.kube/cceonefed.yaml create deployment nginx image nginx replicas3 deployment.apps/nginx created $ kubectl kubeconfig/home/ctyun/.kube/cceonefed.yaml get deployment nginx NAME READY UPTODATE AVAILABLE AGE nginx 0/3 0 0 21s 此时,只是将K8S YAML apply到联邦控制面,还未分发到成员集群;联邦控制面当前也并不会调谐这些workload,也即实际看到的READY副本数会为0; 步骤二:创建差异化策略 差异化策略(OverridePolicy)模板参考如下。若不需要做集群间差异化,则可以略过该步骤。 shell overridepolicy.yaml apiVersion: policy.karmada.io/v1alpha1 kind: OverridePolicy metadata: name: example spec: resourceSelectors: apiVersion: apps/v1 kind: Deployment name: nginx If no namespace is specified, the namespace is inherited from the parent object scope. overrideRules: targetCluster: clusterNames: ccecceonedemo1 overriders: labelsOverrider: operator: add value: cceone.propagationto: ccecceonedemo1 targetCluster: clusterNames: ccecceonedemo2 overriders: labelsOverrider: operator: add value: cceone.propagationto: ccecceonedemo2 将如上YAML文件通过如下命令apply到联邦控制面中: shell $ kubectl kubeconfig/home/ctyun/.kube/cceonefed.yaml apply f overridepolicy.yaml overridepolicy.policy.karmada.io/example created $ kubectl kubeconfig/home/ctyun/.kube/cceonefed.yaml get overridepolicy example NAME AGE example 21s 此时,通过命令查看nginx工作负载,还是未分发状态 shell $ kubectl kubeconfig/home/ctyun/.kube/cceonefed.yaml get deployment nginx NAME READY UPTODATE AVAILABLE AGE nginx 0/3 0 0 61m