华为容器在K8S上的技术实践之路黄毽华为云PaaS产品部容器服务架构师•容器发展趋势•华为PaaS发展历程•华为云容器服务技术全栈•华为云CCE容器服务关键特性•华为云CCI容器实例服务技术展望容器惊人的发展速度2015Q12015Q32016Q22017Q12017Q31亿10亿40亿120亿240亿数据来源:Docker镜像下载量容器的三大好处,为应用而生资源隔离与利用率提升秒级弹性环境一致性,简化交付Cloud2.0Cloud1.0KVMVMXENVM虚拟机资源服务以应用为中心提供能力服务容器化、微服务化开放互通的混合云IoT视频…Istio容器与微服务是企业云战略转型的关键Kubernetes成为容器编排事实标准ServiceMesh成为微服务新热点Serverless在公有云应用渐宽Istio容器是云原生技术发展的第一波热潮2014201320182016华为PaaS项目启动基于CloudFoundry构建PaaS平台华为PaaS项目二期(FusionStage)切换至Kubernetes平台,并大力投入K8S与CNCF华为云容器引擎服务发布国内首家基于Kubernetes的公有云容器服务,提供企业级保障华为云容器实例服务发布全球首家基于Kubernetes的公有云Serverless容器服务,容器免运维、按需使用Kubernetes华为云容器实践历程WhychooseKubernetes?容器服务的目标就是打造CloudNative应用的运行环境容器存储容器引擎容器网络集群部署自动化镜像仓库镜像安全秘密管理编排调度服务发现服务治理数据库服务消息及实时流服务源码管理应用管理与镜像构建持续集成与交付应用运维日志监控事件告警调用链容器服务的目标就是打造CloudNative应用的运行环境华为云K8S全栈容器服务应用编排→交付→运维→治理全生命周期应用运维管理丰富可定制的容器应用立体化运维容器镜像服务容器镜像一站式构建、存储与交付应用编排服务应用云上自动化编排与设施管理云容器实例基于K8S的Serverless容器服务云容器引擎企业级高可靠、高性能K8S服务服务网格K8S原生ServiceMesh华为云容器服务:构建公有云上Kubernetes最佳实践典型行业:互联网应用,游戏、生物基因等云容器引擎CCE国内首发裸金属容器全球首发基于K8S容器实例CCI国内首发Windows容器企业级增强,高性能,高可用业务响应效率提高两倍无服务器容器服务,极致按需使用海量Windows应用上云GPU/FPGA硬件加速专属硬件加速开源、开放、全面生态•原生支持Kubernetes与docker生态•提供K8S生态工具:Istio、Helm、Prometheus•提供原生API,支持原生命令行Kubectl、istioctl•提供图形化控制台,端到端完整用户体验增强的商用化特性•通过自动化配置、构建、部署提升业务上线效率•通过跨可用区高可用和控制面HA提升业务可靠性•通过物理共享集群提供敏捷可靠的容器适应业务多样性高性能、异构基础设施•主流OS支持:Windows、Redhat/Centos/Ubuntu•异构机型:虚拟机、物理机、ARM/GPU/FPGA服务器•异构存储:云硬盘、对象存储、文件存储•全面公私网络:VPC私网、EIP公网、L4/L7ELB、NAT网关华为云容器引擎CCE:高性能、高可靠的企业级Kubernetes服务图形化控制台K8SNativeAPIMonitoringLoggingAuto-ScalingEvents容器运维管理应用管理容器编排K8SClusterManagementK8SContainerOrchestrationHelmPackageManagementHelmApplicationCatalogK8S集群1华为云计算/网络/存储服务(ECS,EVS,OBS,SFS,VPC,ELB,NAT,BMS,…)…Node1K8S集群NPod1ContainerContainerContainerPodNContainerContainerContainer…NodeNPod1…NContainerContainerContainer…Node1…NPod1…NContainerContainerContainer服务治理IstioServiceMeshServiceReleaseManagement通过HELM来驱动自动化部署困惑:镜像不会用,配置复杂•不知道容器需要配置那些端口?•需要书写KubernetesMainfest,学习门槛高?•应用由Deployment,Service等多个K8S对象组成,无法一键部署。最佳伴侣Charts.yamlKubernetesPaaSonPaaS的实践华为的PaaS服务完全运行在Kubernetes之上,通过AOS+HELM+K8S实现自动化运维,效率显著提升。云管理面AOS应用编排系统应用包管理Kuberentes管理集群AOM应用运维系统管理面镜像仓库运维人员CCE容器引擎服务CCI容器实例服务SWR容器镜像仓库DCS缓存服务……服务Package:AOSBlueprintsHelmChartsBaseImages应用层Image(去重)通过HELM构建应用市场简化用户上手难度支持GPU异构计算•加速计算应用程序容器化,部署在公有云容器服务。•将指定的GPU资源分配给容器,支持多容器共享GPU卡,后继支持GPU虚拟化与池化。•与华为云各类GPU服务器与GPU实例垂直整合,支持丰富的GPU加速应用场景。主流DL框架KubernetesICAN容器网络北向标准接口南向网络模式CNIOverlayL2UnderlayL2VPCRouterIPVlanDPDKOverlayL3UnderlayL3Neutron公司私有云客户场景多样化,华为ICAN容器网络北向支持CNI网络接口,南向插件化支持对接多种网络模型。Kubernetes服务IPVS负载均衡规则线性匹配时延KUBE-SERVICES链挂了一长串KUBE-SVC-*链;访问每个service,要遍历每条链直到匹配,时间复杂度O(N)Service基数1500020000Rules基数840000160000增加1条Iptables规则50us11min5hours增加1条IPVS规则30us50us70usMetricsnumberofserviceIPVSIptablesMemoryUsage1000386MB1.1G5000N/A1.9G10000542MB2.3G15000N/AOOM500001272MBOOMCPUUsage10000%N/A500050%-85%1000050%-100%15000N/A50000N/A可用性后端实例扩容,服务会话保持时间更新等都会导致连接断开。可扩展性当系统存在大量iptables规则链时,增加/删除规则会出现kernellockAnotherappiscurrentlyholdingthextableslock.Perhapsyouwanttousethe-woption?规则更新时延非增量式Kubernetes原Service的Iptables方案无法支持大规模容器集群,集群的Scalability遇到较大挑战。内存消耗大随着service变多,内存消耗巨大。Kubernetes服务IPVS负载均衡KubernetesService的IPVS模式已经贡献到社区1.8版本Alpha1.9版本Beta1.11版本GA如果你的集群规模较大,Service较多,建议您选择IPVS模式。Kubernetes容器&Istio服务网络Kube-APIServerEtcdistioctl/kubectlPilotEnvoySVCPodNodeEnvoySVCPodNodeEnvoySVCPodlist/watch(Service,Endpoints,Pod)用户HelmKubernetes与Istio完美融合,提供微服务的一体化的部署及治理体验Kubernetes容器&Istio服务网络微服务部署运维微服务治理•调用链追踪•动态路由•熔断限流•负载均衡•服务发现•扩缩容•运维•部署KubernetesIstio微服务容器IstioK8s治理运行编排融合业界已经有哪些容器实例服务?ContainerInstance→ServerlessContainerAzureACICCI:ServerlessKubernetes,让弹性与成本可以兼得K8S-NativeServerlessContainer•原生支持KubernetesAPI与命令行•无需用户感知K8S集群及物理资源,设施免运维•提供图形化控制台,端到端完整用户体验Hypervisor-BasedSecureContainer•原生支持KataContainer,Docker生态兼容•内核虚拟化技术,全面的安全隔离与防护•自有硬件虚拟化加速技术,更高的安全容器性能高性能、异构基础设施•异构服务器:X86、ARM服务器•异构芯片加速:GPU、FPGA加速芯片•华为云高速网络与存储集成:EVS、OBS、VPC、ELB…AIWebAppCI/CDFunction…K8S集群联邦华为云网络、存储服务(EVS,OBS,SFS,VPC,ELB,NAT,…)K8S集群1…Node1K8S集群NPod1ContainerContainerKataContainerPodNContainerContainerKataContainer…NodeNPod1…NContainerContainerKataContainer…Node1…NPod1…NContainerContainerKataContainerGPU加速型服务器FPGA加速型服务器统一资源池管理X86服务器ARM64服务器Genomics以Kubernetes为基础打造CCI容器实例服务CCIConsole(用户)(容器API及联邦)CCIAPIServer/CCIFederation(容器编排)CCIKubernetesMaster物理机物理机物理机KubeletiCanFUXIDockerKataCRICNIFlexVolume(容器网络)iCanMasterIaaS(容器存储)ContainerStorageMgrVPC网络IAM(监控Agent)ICAgentAOM应用运维管理iClusterManagerCCIOMConsole(管理员)……EVS块存储&SFS文件存储增强Kubernetes实现统一用户认证与隔离租户AProject1Project2NameSpace1NameSpace2NameSpace3NameSpace4租户BProject3Project4NameSpace5NameSpace6NameSpace7NameSpace81:N1:N1:N1:N1:N1:N1:1VPCA1:1VPCB1:1VPCC1:1VPCC1:1VPCD1:1VPCE1:1VPCF1:1VPCFCCI对接IAM支持多租户能力,支持单租户下有多个Project,每个Project下可以建立多个KubernetesNamespace,每个Namespace当前可以独立关联IaaSVPC.通过Kata容器实现多租户容器强隔离HardwareLinuxKernelVirtualMachineGuestOSdockerenginePod/containerAPPmiddlewareHypervisorPod/containerAPPmiddlewareVirtualMachineGuestOSdockerenginePod/containerAPPmiddlewarePod/containerAPPmiddlewareHardwareLinuxKernelKataContainerLinuxKernelPod/containerAPPmiddlewareHypervis