《王澤鋒-Karmada開源的云原生多云容器編排平臺-v0.2(GOTC上海會場)(17頁).pdf》由會員分享,可在線閱讀,更多相關《王澤鋒-Karmada開源的云原生多云容器編排平臺-v0.2(GOTC上海會場)(17頁).pdf(17頁珍藏版)》請在三個皮匠報告上搜索。
1、王澤鋒王澤鋒 Kevin Wang 2021年年07月月10日日開源云原生計算時代論壇開源云原生計算時代論壇Karmada:開源的云原生多云容器編排平臺About Me華為云 云原生開源負責人CNCF中國大使、技術監督委員會貢獻者 Kubernetes社區資深MaintainerKubeEdge、Volcano、Karmada項目創始人2012年加入華為2013年起參與容器平臺研發2015年起參與Kubernetes上游社區成為國內最早的一批Kubernetes Maintainer20152018期間主導Kubernetes社區多項高級調度特性及多個子項目設計研發2018年:作為聯合發起人主
2、導KubeEdge開源項目2019年:作為聯合發起人主導Volcano開源項目2021年:作為發起人主導Karmada開源項目多云、多集群部署已經成為常態93%多云部署Enterprise Cloud Strategy%of enterprise respondents6%單一公有云1%單一私有云多公有云6%混合云87%1 Source:Flexera 2021 State of the Cloud Report2 N=750調查顯示,超過93%的企業正同時使用多個云廠商的服務。云原生技術和云市場不斷成熟,未來將是編程式多云管理服務的時代。云原生多云多集群的典型階段一群孤島一群孤島一致的集群運
3、維一致的應用交付業務割裂,互不感知數據孤島、資源孤島、流量孤島威尼斯水城威尼斯水城統一應用交付(部署運維)統一應用訪問(流量分發)統一資源分配(編排調度)少量、小壓力的跨集群業務訪問大航海時代大航海時代實例、數據、流量:自動調度自由伸縮自由遷移We are here云原生的多云仍然充滿挑戰集群繁多集群繁多繁瑣重復的集群配置 云廠商的集群管理差異 碎片化的API訪問入口業務分散業務分散應用在各集群的差異化配置 業務跨云訪問集群間的應用同步集群的邊界限制集群的邊界限制資源調度受限于集群 應用可用性受限于集群 彈性伸縮受限于集群廠商綁定廠商綁定業務部署的“黏性”缺少自動的故障遷移缺少中立的開源多集群
4、編排項目多云容器集群管理的挑戰多集群容器編排的前世今生20162015201720202021K8s Federationv1啟動開發社區改名 MultiCluster SIGFederation啟動 v2版本開發社區發布多集群 服務聲明標準接口 MultiCluster Service APIFederation成為 K8s獨立子項目K8s 社區成立Federation SIG發布聯邦白皮書201820196月 華為云MCP公測12月華為云MCP商用華為云MCP全新引擎Karmada啟動研發Karmada 項目開源Karmada:開源的云原生多云容器編排引擎使用Karmada構建無限可擴展的
5、容器資源池 讓開發者像使用單個K8s集群一樣使用多云集群生命周期集群發現多集群網絡互通多集群統一認證集群同步聚合APIServer應用負載管理多集群流量治理全局數據管理多集群 運維 監控 日志 告警 審計多集群調度多集群自動伸縮全域流量調度策略管理統一配置元數據備份CI/CD托管集群私有集群邊緣集群兼容兼容K8s API0代碼改造升級多云架構全網統一管理全網統一管理公有云、混合云統一管理能力開箱即用能力開箱即用內置10+基于行業場景的調度能力插件聯合發起單位https:/ 使用K8s原生API部署一個多集群應用apiVersion:policy.karmada.io/v1alpha1kind:
6、PropagationPolicymetadata:name:multi-zone-replication spec:resourceSelectors:-apiVersion:apps/v1 kind:Deployment labelSelector:matchLabels:ha-mode:multi-zone-replicationplacement:spreadConstraints:-spreadByField:zonemaxGroups:3minGroups:3apiVersion:apps/v1 kind:Deployment metadata:name:nginx-deploym
7、entapp:nginxha-mode:multi-zone-replication spec:replicas:3 selector:matchLabels:app:nginx template:metadata:labels:app:nginx spec:containers:-name:nginx image:nginx ports:-containerPort:80使用標準的K8s API定義部署應用kubectl create-f nginx-deployment.yaml示例策略:為所有deployment配置多AZ的HA部署方案https:/ Policy:可重用的應用多集群調度
8、策略resourceSelector支持關聯多種資源類型支持使用 name 或 labelSelector 進行對象篩選placementclusterAffinity:定義傾向調度的目標集群支持通過 names 或 labelselector 篩選clusterTolerations:類似單集群中Pod tolerations和 node taintsspreadConstraints:定義應用分發的HA策略支持對集群動態分組:按Region、AZ、特性label分組,實現不同層級的HAapiVersion:policy.karmada.io/v1alpha1kind:Propagation
9、Policymetadata:name:example-policy spec:resourceSelectors:-apiVersion:apps/v1 kind:Deployment name:deployment-1labelSelector:#standard labelSelectorpropagateDependensies:falseplacement:clusterAffinity:clusterNames:-cluster1-cluster3clusterTolerations:#like pod tolerationsspreadConstraints:-spreadByL
10、abel:failuredomain.kubernetes.io/zonemaxGroups:3minGroups:3schedulerName:defaultOverride Policy:跨集群可重用的差異化配置策略resourceSelector支持使用 name 或 labelSelector 進行對象篩選overriders支持多種override插件類型plainTextOverrider:基礎插件,純文本操作替換imageOverrider:針對容器鏡像的差異化配置插件apiVersion:policy.karmada.io/v1alpha1kind:OverridePolicy
11、 metadata:name:example-override namespace:default spec:resourceSelectors:-apiVersion:apps/v1kind:DeploymenttargetCluster:labelSelector:matchLabels:failuredomain.kubernetes.io/region:dc1overriders:imageOverrider:-component:prefix operator:replace value:dc-1.registry.ioClusters API:用戶自助可查的資源池基本單元syncM
12、ode支持使用 Push 或 Pull 模式與集群進行同步secretRef分離Push模式下集群訪問憑據,便于開放 clusters API 供用戶自助查詢taints集群級別taint-toleration機制,支持集群級資源預留及驅逐kubernetesVersion,apiEnablementsK8s版本,集群開啟的API列表,支持基于API依賴的調度resourceSummary集群資源信息(容量、使用量、調度中),apiVersion:cluster.karmada.io/v1alpha1 kind:Clustermetadata:name:member-cluster-1spec
13、:syncMode:PushapiEndpoint:https:/172.17.0.5:6443 secretRef:name:member-cluster-1 namespace:karmada-cluster provider:huaweicloudregion:ap-southeast-1zone:az-1taints:#just like node taints status:conditions:-message:/healthz responded with okreason:ClusterReadystatus:Truetype:ClusterReady kubernetesVe
14、rsion:v1.17.0 apiEnablements:nodeSummary:resourceSummary:Karmada工作原理Karmada 架構Karmada Cluster Lifecycle ManagementKarmada control planeKarmada API-serverWorkloadControllersKubeEdge ControllerEdge clustersPrivate CloudPublic CloudAgentClusterAgentClusterClusterKarmada AgentKubeEdge AgentClusterKubeEd
15、ge AgentClusterClusterKubeEdge AgentClusterClusterClusterK8s Native APIsKarmada PoliciesExecutionSpace N12KarmadaScheduler4Execution Controller4443 ExecutionSpace 1 https:/ 工作原理ResourceBindingPropagation Work1:11:mm is the number of assigned memberclusters1:nn is number of resource that matchPolicy
16、ControllerBinding ControllerResource inMember ClustersCentralized Execution ControllerorAgent in member clusters1:1Karmada schedulerFill upbinding.clustersPolicy1Policy2Policy3match policy(highest priority)Override1 Apply overridesOverride2Override3Resource TemplateK8s native API definitionPropagati
17、on PolicyOverride PolicyKarmada 社區路標 K8s原生API部署多集群應用 多集群應用狀態聚合 多集群部署時,應用配置差異化 針對集群的親和性調度 多集群高可用調度策略 納管集群 集群目錄2021 Q12021 Q3 多集群服務發現 多集群外部流量接入 多集群的應用自動伸縮 多集群的資源重平衡 更多高可用調度策略:多Region/多AZ/多廠商 聚合API訪問2021 Q4 多形態下多集群容器網絡 多集群服務治理 多集群監控 多集群日志收集 GitOps支持2021 Q2 多集群的應用故障遷移 根據多種策略動態拆分應用實例數 針對集群的Taint Toleration 多種集群同步模式:Push,Pull 集群生命周期管理Take Away多云已成必然云原生技術與多云訴求相互促進多云的三個階段標準技術棧,互操作的多個孤島統一平臺,云間統一調度,統一彈性多云無縫合一云原生多云的典型挑戰集群繁多業務分散、碎片化K8s集群造成的邊界廠商綁定Karmada項目核心價值K8s原生API兼容,豐富云原生生態內嵌策略,開箱即用豐富的多集群調度支持集群資源空間隔離多種模式集群同步,屏蔽地域、網絡限制Karmada后續計劃整體技術棧Q4成型