en

【龙芯有云第三话】龙芯平台kuberentes适配最新进展-网上捕鱼网络版

loongson news

栏目导航

【龙芯有云第三话】龙芯平台kuberentes适配最新进展

发布时间:2020-10-30    已阅读:次

kubernetes 是 google 于 2014 年 6 月基于其内部使用的 borg 系统开源出来的容器编排调度引擎,google 将其作为初始和核心项目贡献给 cncf(云原生计算基金会),近年来逐渐发展出了云原生生态。kubernetes 作为云原生应用的基石,相当于一个云操作系统。

在paas资源编排层面,kubernetes已经成为了业界公认的事实标准,领先优势非常明显,正呈现出跨领域融合发展趋势。以kubernetes中心的技术、生态日臻成熟和完善。根据云原生产业联盟的2020年调查数据显示,kubernetes在受访人群的采纳率高达63%,在容器编排领域扮演非常重要的角色。kubernetes的编排对象持续丰富不断扩展,以容器为基础编排对象逐渐延展至虚拟机、函数等,理论上所有可编程、有api、可抽象成资源的对象,都在成为kubernetes的编排对象。

应用侧围绕kubernetes生态加速演进,以kubernetes为核心的的云原声技术栈将推广到更多的应用场景。在大数据领域,spark和kubernetes的集成已经非常普遍;在机器、深度学习方面,kubernetes和tensorflow等框架深度集成,用kubernetes去编排机器、深度学习的工作流已取得业界的广泛共识。

kubernetes介绍以及在龙芯平台移植

简介

kubernetes借鉴了borg的设计理念,比如pod、service、label和单pod单ip等。kubernetes的整体架构跟borg非常像,如下图所示:

kubernetes主要由以下几个核心组件组成:

1、etcd保存了整个集群的状态;

2、apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、api注册和发现等机制;

3、controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;

4、scheduler负责资源的调度,按照预定的调度策略将pod调度到相应的机器上;

5、kubelet负责维护容器的生命周期,同时也负责volume(csi)和网络(cni)的管理;

6、container runtime负责镜像管理以及pod和容器的真正运行(cri);

7、kube-proxy负责为service提供cluster内部的服务发现和负载均衡;

除了核心组件,还有一些推荐的插件,其中有的已经成为cncf中的托管项目:

coredns负责为整个集群提供dns服务

ingresscontroller为服务提供外网入口

prometheus提供资源监控

dashboard提供gui

federation提供跨可用区的集群

龙芯平台kubernetes

kubernetes 官方目前支持众多 cpu 架构诸如 x86, arm/arm64, ppc64le, s390x 等。然而目前还不支持 mips 架构,始终是一个遗憾。随着云原生技术的广泛应用,mips 架构下的用户始终对 kubernetes on mips 有着迫切的需求,故龙芯云计算团队积极投入kubernetes社区,自主研发移植kubernetes,成功完成了kubernetes以及相关组件的迁移适配,搭建出了高可用的mips集群,同时完成了kubernetes源代码单元测试,集成测试,e2e测试以及e2e node测试,并完成修复相关bug修复,已达到x86水平。

紧跟社区节奏,目前已经移植kubernetes1.15.9和kubernetes1.18.3,并将1.18.3作为lts版本。

迁移适配完成的主要工作内容:

1、对mips64le系统架构的支持

2、golang系统调用syscall兼容性

3、sysacall.stat_t 32位与64位类型转换

4、epollevent修正位缺失

5、制作k8s.gcr.io仓库基础镜像

6、完成源代码相关的测试和bug修复

相关镜像以及二进制、相关发布信息详见龙芯社区 (loongnix.org)

http://www.loongnix.org/index.php/kubernetes

龙芯平台kubernetes周边项目

在完成kubernetes迁移之后,龙芯团队也围绕kuberntes完成周边项目:容器网络(calico,flannel),分布式存储ceph,监控平台prometheus granafa,服务暴露ingress,日志方案loki granafa等项目也迁移至龙芯平台,功能进行了验证。相关镜像可通过dockerhub仓库loongnixk8s获取。

龙芯平台kubernetes实践

基于龙芯平台搭建的kubernetes集群

使用kubeadm calico进行部署,部署后所有服务和pod均运行正常,如下图所示。

环境使用的龙芯服务器搭建,目前集群运行良好。

详情查看:http://doc.loongnix.org/web/#/71?page_id=232

基于龙芯平台kubernetes搭建的loki日志系统

架构图如下所示:

通过loki查询相关日志:

详细查看:http://doc.loongnix.org/web/#/74?page_id=248

基于龙芯平台kubernetes搭建的监控系统

监控系统架构:

搭建好的监控查看prometheus数据:

详情查看:http://doc.loongnix.org/web/#/76?page_id=231

基于龙芯平台kubernetes搭建的ingress服务暴露

服务访问流程:

创建ingress对象以及通过ingress访问nginx服务:

如下访问到nginx的页面表示部署成功。

详情查看:http://doc.loongnix.org/web/#/72?page_id=233

基于龙芯平台kubernetes搭建的微服务治理方案istio

istio架构图:

在龙芯平台搭建好的istio组件服务:

目前相关部署文档正在整理中,后续会发布到龙芯社区,详情可查看龙芯社区相关介绍。

龙芯平台kubernetes未来规划

在完成迁移kubernetes以及周边项目之后,极大的增强了我们对于推进kubernetes支持龙芯平台架构的信心,后续我们一方面将对kubernetes做更高质量的要求,完成性能摸底和分析,完成性能与x86的对齐,另一方面积极地向社区贡献我们的工作经验以及成果,提交pr以及相关patch,希望能够有更多来自社区的力量加入进来,共同推进kubernetes for loongnix更快发展。