《任洪彩-基于多云多集群的基礎設施-Karmada落地實踐.pdf》由會員分享,可在線閱讀,更多相關《任洪彩-基于多云多集群的基礎設施-Karmada落地實踐.pdf(42頁珍藏版)》請在三個皮匠報告上搜索。
1、基于多云多集群的基礎基于多云多集群的基礎設施設施KarmadaKarmada落地實踐落地實踐任洪彩任洪彩個人簡介個人簡介任洪彩任洪彩(RainbowMango)華為云云原生開源團隊Kubernetes項目維護者Karmada項目維護者Go專家編程圖書作者CNCF 官方大使請插入您的照片目錄目錄 多集群資源池是必然趨勢多集群資源池是必然趨勢 運維多集群的挑戰 多集群技術演進路線 Karmada技術架構及設計理念 Karmada核心能力及應用場景 生產實踐案例分享多云、多集群部署已經成為常態多云、多集群部署已經成為常態 超過87%的企業受訪者同時使用多個云服務商的服務。云原生技術和云市場不斷成熟,
2、未來將是編程式多云管理服務的時代。為什么使用多集群為什么使用多集群單集群規模受單集群規模受限限 節點不超過5000 Pod不超過15萬 容器不超過30萬 單節點不超過110 Pod高可用部署需高可用部署需求求 避免單點故障 兩地三中心要求 服務彈性流量多云架構使然多云架構使然 屬地化部署 IDC+公有云彈性 避免廠商綁定 降本增效業務場景隔離業務場景隔離 業務隔離 團隊隔離 開發流程隔離 目錄目錄 多集群資源池是必然趨勢 運維多集群的挑戰運維多集群的挑戰 多集群技術演進路線 Karmada技術架構及設計理念 Karmada核心能力及應用場景 生產實踐案例分享一群孤島一群孤島一致的集群運維一致的
3、應用交付業務割裂,互不感知數據孤島、資源孤島、流量孤島威尼斯水城威尼斯水城統一應用交付(部署運維)統一應用訪問(流量分發)統一資源分配(編排調度)少量、小壓力的跨集群業務訪問大航海時代大航海時代實例、數據、流量:自動調度自由伸縮自由遷移We are here云原生多云多集群的典型階段云原生多云多集群的典型階段集群繁多集群繁多繁瑣重復的集群配置云廠商的集群管理差異碎片化的API訪問入口業務分散業務分散應用在各集群的差異化配置業務跨云訪問集群間的應用同步集群的邊界限制集群的邊界限制資源調度受限于集群應用可用性受限于集群彈性伸縮受限于集群廠商綁定廠商綁定業務部署的“黏性”缺少自動的故障遷移缺少中立的
4、開源多集群編排項目多云容器集群管理的挑戰云原生的多云仍然充滿挑戰云原生的多云仍然充滿挑戰 目錄 多集群資源池是必然趨勢 運維多集群的挑戰 多集群技術演進路線多集群技術演進路線 Karmada技術架構及設計理念 Karmada核心能力及應用場景 生產實踐案例分享2016201520172018201920202021K8s Federation v1啟動開發社區改名 MultiCluster SIGFederation啟動 v2版本開發社區發布多集群服務聲明標準接口MultiCluster Service APIFederation成為K8s獨立子項目K8s 社區成立Federation SIG
5、發布聯邦白皮書6月 華為云MCP公測12月華為云MCP商用華為云MCP全新引擎Karmada啟動研發Karmada項目開源多集群容器編排的前世今生多集群容器編排的前世今生Federation v1主要問題主要問題Federation信息嵌入Annotation,易用性差,并發寫API不安全缺少獨立API對象,難以控制控制版本質量不易擴展(調度、生命周期管理)2016年社區立項,奠定容器混合云基礎架構基于K8s原生API分發應用獨立API server及控制面組件,易于服務化在歐洲核子中心CERN大規模落地Federation v2(Kubefed)主要問題主要問題與單集群API兩張皮,不受業界
6、認可新API易用性差,大量字段需要手動填寫自我定位為提供building blocks,用戶引入后仍要二次開發2017年發起改進模塊化設計獨立Placement策略和Override策略廢掉federation v1,成為社區唯一官方實現K8s原生原生API兼容兼容零改造從單集群升級為多集群無縫集成K8s單集群工具鏈生態開箱即用開箱即用面向多場景的內置策略集:兩地三中心、同城雙活、異地容災開放中立開放中立來自互聯網、金融、制造業、運營商、云廠商等聯合發起豐富的多集群調度豐富的多集群調度集群親和性調度,多顆粒多集群高可用部署:多Region、多AZ、多集群、多供應商告別綁定告別綁定多云平臺支持,
7、自動分配,自由遷移不綁定廠商的商業產品集中式管理集中式管理無需顧慮集群位置支持公有云、私有云、邊緣的集群使用Karmada構建無限可擴展的容器資源池讓開發者像使用一個K8s集群一樣使用多云Karmada:開源的云原生多云容器編排平臺:開源的云原生多云容器編排平臺Karmada:開源的云原生多云容器編排平臺開源的云原生多云容器編排平臺使用Karmada構建無限可擴展的容器資源池讓開發者像使用單個K8s集群一樣使用多云集群生命周期集群發現多集群網絡互通多集群統一認證集群同步應用負載管理多集群流量治理全局數據管理聚合APIServer多集群運維監控日志告警審計多集群調度多集群自動伸縮全域流量調度策略
8、管理統一配置元數據備份CI/CD托管集群私有集群邊緣集群兼容兼容K8s API0代碼改造升級多云架構全網統一管理全網統一管理公有云、混合云統一管理能力開箱即用能力開箱即用內置10+基于行業場景的調度能力插件 目錄 多集群資源池是必然趨勢 運維多集群的挑戰 多集群技術演進路線 Karmada技術架構及設計理念技術架構及設計理念 Karmada核心能力及應用場景 生產實踐案例分享Karmada 架構架構Karmada Cluster Lifecycle ManagementKarmada control planeKarmada API-serverWorkloadControllersExecu
9、tion ControllerKarmada SchedulerKubeEdge ControllerEdge clustersPrivate CloudPublic CloudClusterAgentClusterAgentClusterKarmada AgentClusterKubeEdge AgentClusterKubeEdge AgentClusterKubeEdge AgentClusterClusterClusterK8s Native APIsKarmada PoliciesExecutionSpace 1ExecutionSpace N1244443Karmada 核心理念核
10、心理念Resource TemplateK8s原生API定義,包括CRD無需修改即可創建多集群應用Propagation Policy可重用的應用多集群調度策略Resource Binding通用類型,驅動內部流程Override Policy跨集群可重用的差異化配置策略Work子集群最終資源在聯邦層的映射Karmada API workflowResource BindingWork1:11:mm is the number of assigned member clusters1:nn is number of resource that matchPolicy ControllerBin
11、ding ControllerResource in Member ClustersCentralized Execution ControllerorAgent in member clusters1:1Karmada schedulerFill up binding.clustersPolicy1Policy2Policy3match policy(highest priority)Override1Apply overridesOverride2Override3Resource TemplateK8s native API definitionPropagation PolicyOve
12、rride Policy零改造零改造 使用使用K8s原生原生API部署一個多集群應用部署一個多集群應用apiVersion:policy.karmada.io/v1alpha1kind:PropagationPolicymetadata:name:multi-zone-replicationspec:resourceSelectors:-apiVersion:apps/v1 kind:Deployment labelSelector:matchLabels:ha-mode:multi-zone-replication placement:spreadConstraints:-spreadByF
13、ield:zone maxGroups:3 minGroups:3apiVersion:apps/v1kind:Deploymentmetadata:name:nginx-deployment app:nginx ha-mode:multi-zone-replicationspec:replicas:3 selector:matchLabels:app:nginx template:metadata:labels:app:nginx spec:containers:-name:nginx image:nginx ports:-containerPort:80 使用標準的K8s API定義部署應
14、用kubectl create-f nginx-deployment.yaml示例策略:為所有deployment配置多AZ的HA部署方案原生的單集群API可復用的分發策略Propagation Policy:可重用的應用多集群調度策略可重用的應用多集群調度策略resourceSelector支持關聯多種資源類型支持使用 name 或 labelSelector 進行對象篩選placementclusterAffinity:定義傾向調度的目標集群支持通過 name 或 labelselector 篩選clusterTolerations:類似單集群中Pod tolerations和 node
15、taintsspreadConstraints:定義應用分發的HA策略支持對集群動態分組:按Region、AZ、特性label分組,實現不同層級的HAapiVersion:policy.karmada.io/v1alpha1kind:PropagationPolicymetadata:name:example-policyspec:resourceSelectors:-apiVersion:apps/v1 kind:Deployment name:deployment-1 labelSelector:#standard labelSelector placement:clusterAffini
16、ty:clusterNames:-cluster1 -cluster3 clusterTolerations:#like pod tolerations spreadConstraints:-spreadByLabel:failuredomain.kubernetes.io/zone maxGroups:3 minGroups:3 schedulerName:default Override Policy:跨集群可重用的差異化配置策略跨集群可重用的差異化配置策略resourceSelector支持使用 name 或 labelSelector 進行對象篩選overriders支持多種overr
17、ide插件類型plainTextOverrider:基礎插件,純文本操作替換imageOverrider:針對容器鏡像的差異化配置插件commandOverrider&argsOverrider:針對容器鏡像啟動參數差異化配置插件labelsOverrider&annotationsOverrider:針對資源label和annotation差異化配置插件apiVersion:policy.karmada.io/v1alpha1kind:OverridePolicymetadata:name:example-override namespace:defaultspec:resourceSele
18、ctors:-apiVersion:apps/v1 kind:Deployment overrideRules:-targetCluster:labelSelector:matchLabels:failuredomain.kubernetes.io/region:dc1 overriders:imageOverrider:-component:prefix operator:replace value:dc-1.registry.ioMember Cluster API:用戶自助可查的資源池基本單元用戶自助可查的資源池基本單元syncMode支持使用 Push 或 Pull 模式與集群進行同步
19、secretRef分離Push模式下集群訪問憑據,便于開放 clusters API 供用戶自助查詢taints集群級別taint-toleration機制,支持集群級資源預留及驅逐kubernetesVersion,apiEnablementsK8s版本,集群開啟的API列表,支持基于API依賴的調度resourceSummary集群資源信息(容量、使用量、調度中)apiVersion:cluster.karmada.io/v1alpha1kind:Clustermetadata:name:member-cluster-1spec:syncMode:Push apiEndpoint:http
20、s:/172.17.0.5:6443 secretRef:name:member-cluster-1 namespace:karmada-cluster provider:huaweicloud region:ap-southeast-1 zone:az-1 taints:#just like node taints status:conditions:-message:/healthz responded with ok reason:ClusterReady status:True type:ClusterReady kubernetesVersion:v1.17.0 apiEnablem
21、ents:nodeSummary:resourceSummary:目錄 多集群資源池是必然趨勢 運維多集群的挑戰 多集群技術演進路線 Karmada技術架構及設計理念 Karmada核心能力及應用場景核心能力及應用場景 生產實踐案例分享跨云多集群管理跨云多集群管理兼容主流Kubernetes集群 支持公有云廠商的托管集群 支持私有數據中心中的自建集群標準集群異構集群邊緣集群多集群接入模式 Push模式:Karmada與集群Apiserver直連 Pull模式:agent負責上傳下達多集群調度多集群調度豐富的調度策略ClusterAffinity:基于ClusterName、Label、Fiel
22、d的定向調度Toleration:基于Taint和Toleration的調度 SpreadConstraint:基于集群拓撲的調度ReplicasScheduling:針對有實例工作負載的復制模式與拆分模式差異化配置(OverridePolicy)ImageOverrider:鏡像差異化配置ArgsOverrider:啟動參數差異化配置CommandOverrider:啟動命令差異化配置LabelsOverrider:label差異化配置AnnotationsOverrider:annotation差異化配置PlainText:通用差異化配置多集群精確調度及重平衡多集群精確調度及重平衡精確調度
23、集群資源畫像模擬調度:karmada-estimator調度重平衡Descheduler:驅逐無效實例,重調度應用跨集群故障應用跨集群故障遷移(集群級故障)遷移(集群級故障)集群故障探測邏輯可配置基于taint-tolerration機制的故障判定自動化故障遷移提供優雅故障遷移能力,服務不跌零應用跨集群故障應用跨集群故障遷移(應用級故障)遷移(應用級故障)應用故障判定邏輯可配置自動化故障遷移,遷移行為可配置提供優雅故障遷移能力跨集群彈性伸縮跨集群彈性伸縮HPA(Horizontal Pod Autoscaling)增強應用程序彈性,提高穩定性和可用性 自動化運維,提高效率,降低資源使用成本Ka
24、rmada FederatedHPA 突破集群邊界,提供跨集群彈性能力 進一步提高應用穩定性和可用性 配合企業多云架構,進一步降本增效全局統一資源視圖全局統一資源視圖基于緩存的全局資源檢索聲明式資源緩存(ResourceRegistry)提供基于REST API的檢索支持對接第三方存儲搜索引擎(Elasticsearch或OpenSearch)統一認證鑒權統一認證鑒權碎片化的API訪問入口重復的訪問權限控制割裂的運維體驗(describe/exec/logs)統一的API訪問入口一致的訪問權限控制統一的運維體驗(describe/exec/logs)類型無關的多云資源動態分發類型無關的多云資源
25、動態分發資源解釋器:Built-in InterpreterCustomized Interpreter 聲明式配置 Webhook跨集群服務治理跨集群服務治理 目錄 多集群資源池是必然趨勢 運維多集群的挑戰 多集群技術演進路線 Karmada技術架構及設計理念 Karmada核心能力及應用場景 生產實踐案例分享生產實踐案例分享生產案例生產案例-VIPKID(GitOps)業務收益業務收益 多集群應用的部署速度顯著提升:多集群應用的部署速度顯著提升:應用狀態自動感知 應用的差異控制可開放給開發者:應用的差異控制可開放給開發者:Override策略直接與應用畫像對接 集群的快速拉起集群的快速拉起
26、&對對GitOps適配適配 多集群聚合層統一,縮短交付時間 平臺改造周期短,業務無感知平臺改造周期短,業務無感知生產案例生產案例-vivo(CICD)業務收益業務收益 容器應用管理(輕):容器應用管理(輕):只需管理Karmada分發策略 統一資源池:統一資源池:多云多地部署,統一管理運維,減少重復勞動 動態資源調整,應對業務壓力波動 多云協同:多云協同:統一應用平臺、業務跨云部署和故障轉移 業務快速恢復業務快速恢復 99.99%可用保證生產案例生產案例-中國移動云(中國移動云(MySQL數據庫服務數據庫服務)業務收益業務收益 業務更健壯:業務更健壯:單集群部署平滑低成本遷移多集群部署,業務更
27、穩定,更健壯 資源池利用率提高:資源池利用率提高:接入低利用率K8s集群,提高資源池利用率生產案例生產案例-颶風引擎(低代碼平臺)颶風引擎(低代碼平臺)業務收益業務收益 異構資源集群統一管理異構資源集群統一管理 多地域管理,混合部署:多地域管理,混合部署:支持業務就近、多區域交付,海外數據合規 免修改資源遷移:免修改資源遷移:兼容K8s原生API,降低人力開發成本 多集群調度與編排、監控多集群調度與編排、監控 跨云鏡像同步跨云鏡像同步 多集群多集群GPU資源管理與編排資源管理與編排落地用戶落地用戶Karmada 社區路標社區路標 集群組優先級調度 多調度器實現2023 Q12023 Q3 Ka
28、rmada Application 全局資源視圖(含Event)Multi-cluster Service Mesh Karmada Dashboard ClusterAddon插件管理 多集群任務編排 云資源管理(terraform)Multi-cluster HA scheduling policy2023 Q4 Multi-cluster monitoring Multi-cluster logging Multi-cluster storage Multi-cluster networking Image registry across clouds2023 Q2 應用級故障遷移 多集
29、群彈性伸縮(HPA)Karmada Operator Third-Party resource interpreter Karmada playgroud加入加入Karmada社區社區https:/ (#karmada)https:/karmada.io了解更多技術實踐案例了解更多技術實踐案例麥思博(msup)有限公司是一家面向技術型企業的培訓咨詢機構,攜手2000余位中外客座導師,服務于技術團隊的能力提升、軟件工程效能和產品創新迭代,超過3000余家企業續約學習,是科技領域占有率第1的客座導師品牌,msup以整合全球領先經驗實踐為己任,為中國產業快速發展提供智庫。高可用架構主要關注互聯網架構及高可用、可擴展及高性能領域的知識傳播。訂閱用戶覆蓋主流互聯網及軟件領域系統架構技術從業人員。高可用架構系列社群是一個社區組織,其精神是“分享+交流”,提倡社區的人人參與,同時從社區獲得高質量的內容。