跳转至

华为云原生CCE实战

一 背景

近来和同事共同开发的迁移平台项目想进行容器化改造,顺应大趋势往容器化这边靠,项目前端平台利用Django开发,后端Restful API利用高性能Web框架Tornado完成,Agent端利用Flask开发,各取了几个大Python框架的优势。

之前为自己部署K8s,且需要保证集群高可用性,且要考虑从监控/日志/告警/CI/CD/调用链追逐/服务治理等,且需要提供分布式存储,为K8s集群提供存储类来工有状态引用持久化数据。

1.1 云原生优势

更省:极大的资源利用效率, 最大限度榨取和共享物理资源,多项目更能体现出容器化多优势,节约部署IT成本。

更快:秒级启动,实现业务系统更快的开发迭代 和 交付部署。

弹性:可根据业务负载进行弹性容器伸缩,弹性扩展。

方便:容器化业务部署支持蓝绿/灰度/金丝雀等发布,回滚,更加灵活方便。

灵活:监控底层node节点健康状态,灵活调度至最优节点部署。

强一致性:容器将环境和代码打包在镜像内,保证了测试与生产环境的强一致性。

1.2 挑战

开发人员熟悉Docker虚拟化技术,熟练编写Dockerfile。

熟悉kubernetes容器化编排系统, 熟悉各组件资源清单编写。

开发需要考虑后期容器编排部署的需求来组织结构和编写代码。

部署人员需要熟悉kubernetes资源清单各参数含义,需要总体把控架构中到从上到下架构。

考虑高可用架构和rbac安全策略,外部流量引入及后期扩容伸缩。

1.3 希冀

希望可以有一套高可用开箱即用的容器管理平台,来使得我们更专注于业务的开发,不用过多的去将精力放在底层基建的部署维护上,

云容器引擎(Cloud Container Engine,简称CCE)提供高度可扩展的、高性能的企业级Kubernetes集群,支持运行Docker容器。借助云容器引擎,可以在华为云上轻松部署、管理和扩展容器化应用程序,来为企业释放更多精力,CCE提供一整套完整的最佳容器解决方案,赋能企业专注业务开发。

在此测试CCE功能,为更好将自己业务迁移到CCE,特此记录使用过程。

二 基础环境部署

由于是测试简单应用,基础环境为最小配置,且安全组等规则放行策略较为宽松,正式环境需要进行严格安全组规则配置,仅放行必要K8s组建端口及业务端口。

1.1 安全组配置

  • 创建安全组

  • 针对安全组进行规则配置

1.2 网络配置

配置Node节点网络

  • 创建VPC

  • 创建子网

三 CCE集群创建

云容器引擎(Cloud Container Engine)提供高性能可扩展的容器服务,基于云服务器快速构建高可靠的容器集群,深度整合网络和存储能力,兼容Kubernetes及Docker容器生态。帮助用户轻松创建和管理多样化的容器工作负载,并提供容器故障自愈,监控日志采集,自动弹性扩容等高效运维能力,用户无需过多关注基础设施高可用,将更多精力放在自身业务开发上。

2.1 选择K8s版本

  • 版本选择

为了能够更好地方便您使用容器服务,确保您使用稳定又可靠的Kubernetes版本,云容器引擎CCE推出Kubernetes版本支持机制,将在每半年发布一个版本,每个版本的支持周期为一年,请您务必在维护周期结束之前升级您的Kubernetes集群。

  • dev环境,集群环境可以先设置为50个

此为测试环境,选择集群较小,正式环境可根据业务来进行设置

  • 高可用:
  • 高可用模式开启后将创建多个控制节点,在单个控制节点发生故障后集群可以继续使用,不影响业务功能。
  • 高可用模式开关在集群创建完成后不可变更
  • 商用场景建议选择高可用模式集群。
  • 网络

网络是选择刚基础环境创建的VPC,K8s的Node节点网络就用的VPC内的子网,默认情况下,同一个VPC的所有子网内的弹性云服务器均可以进行通信,不同VPC的弹性云服务器不能进行通信。

  • 网络模型

容器隧道网络下只能添加同一类型的节点,即全部为虚拟机节点或全部为裸金属节点。

基于底层VPC网络,另构建了独立的VXLAN隧道化容器网络,适用于一般场景。VXLAN是将以太网报文封装成UDP报文进行隧道传输。容器网络是承载于VPC网络之上的Overlay网络平面,具有付出少量隧道封装性能损耗,获得了通用性强、互通性强、高级特性支持全面(例如Network Policy网络隔离)的优势,可以满足大多数应用需求。

  • RBAC

开启RBAC能力后,设置了细粒度权限的子用户使用集群下资源将受到权限控制。

2.2 Node云服务器选择

  • 安装插件

在插件着栏,非常关注volcano这块高性能调度器,Volcano是基于Kubernetes的批处理系统,源自于华为云AI容器,Volcano方便AI、大数据、基因、渲染等诸多行业通用计算框架接入,提供高性能任务调度引擎,高性能异构芯片管理,高性能任务运行管理等能力,真多高并发场景做了深入的优化和改进,内置多种算法,提供大数据,AI等应用场景解决方案。

2.3 提交购买

提交后等待集群部署完成。

如果为我们自己部署,考虑的东西非常多,而且可能部署异常,排错非常麻烦,CCE提供简单web界面配置,就可以部署出一个高可用的生成环境,非常的高效快捷。

四 访问

由于目前为配置弹性公务IP,使用web-terminal来访问,其也为一个pod,利用该pod可以通过浏览器打开web终端连接到集群中进行操作。

购买弹性IP

  • 配置本地kubectl

由于我本地之前已经安装贵哦kubectl,只需要下载创建的CCE技巧的kubeconfig.json移动到家目录.kube下面,重命名为config即可。

可以看到目前已经可以正常获取到两个node节点。

  • 创建应用测试

  • 暴露服务

创建svc

  • LB

a

查看service

在此就简单测试了从集群开通到单个应用的部署。后期可以将自己的应用迁移上来,统一管理。

五 反思

后期我们可以将自己的容器做好镜像,上传到SWR中,通过Devcloud中的部署,简单快捷的一键式部署应用至CCE中,同时可以web界面配置访问,非常快捷方便,华为云结合生成环境中经验,将最近解决方案作为服务,为用户提供开箱即用的应用解决方案。

其提供多种网络访问模式,支持四层/七层负载均衡使用不同场景,存储方便除了支持本地存储,提供丰富的存储类,灵魂的伸缩策略,可以应对业务高峰期的流量并发,深度集成K8s工具生态,提供Helm标准,将自己的应用制作成charts,轻松发布进K8s内,同时提供Istio服务治理能力,基础设施下沉到K8s内,提供流量控制,黑白名单,认证鉴权等功能,负载均衡/流量监控/链路追逐/熔断降级。

六 链接