• 豫都门户网
  • 您的位置:首页 >> 热点专题 >> 正文

    基于Kubernetes构建.NETCore的技术体系

    发表时间:2019-10-16 信息来源:www.st2888.cn 浏览次数:1317

     

    许多公司的技术支持职位,例如配置域名,部署环境,修改重置配置,重新启动服务,扩展容量,梳理和改进监控,根据开发需求搜索日志等,等等。外部网络域名,内部网络域名是什么,A名称,C名称,如何设置防火墙规则,操作系统以及其他基本环境都需要依靠。由于许多研发人员不了解运维的术语和知识点,因此导致沟通困难和效率低下。而且,仍然存在许多这样的需求,并且操作和维护压力几乎被占用了几乎所有时间,但是开发需求可能仍然被延迟。

    该公司可能遇到以下问题:

    系统架构过旧,性能和可靠性无法满足现有需求;原始的IT体系结构不灵活,新的或更改的业务模块带来了巨大的成本压力;系统复杂,结构混乱,定制的代码与系统的耦合度极高;服务种类繁多,技术栈泛滥。人员流动没有完全转移,新聘的团队不了解部署环境,只能进行周围的维修,不敢迁移。

    我该如何解决?答案是过程,标准化,自动化和平台化。

    处理

    主动组合运维任务,形成标准化的运维流程,特别是对于需要多个人协作的任务,例如应用程序部署和部署,将流程整合到流程平台系统中,以确保每个人都可以遵循该流程是严格执行的,不会缺少任何链接,并且每个人都可以看到当前的流程状态。很明显,谁在处理,并且处理程序将更主动地尽快完成任务。

    标准化

    根据应用程序类别开发应用程序部署标准,例如Web类型的应用程序,面向服务的应用程序(我们的内部.NET Core)或更新的微服务应用程序(.NET Core等)。部署脚本和工具根据商定的规格(基于Kubernetes)设计和开发平台,由于应用程序种类繁多,降低了工具和平台的复杂性。

    自动化

    早期,许多公司编写了许多脚本。在要执行的服务器之间执行了任务执行机器的无SSH密钥认证,并且根据需要批量执行了命令。随着服务器规模和应用程序数量的扩展,脚本的快速执行方式已无法满足业务发展的需要。很难理解。多个具有相同任务类型的脚本共存,存在误操作,并且没有清晰的操作历史和回滚机制,甚至没有随后替换配置管理工具(如Puppet,Saltstack和Ansible)的问题,但根本的问题尚未解决。

    平台化

    平台化必须建立在前三个基础上。如果没有清晰的流程和明确的标准,那么平台的建设仅仅是自动化工具的集成,无法解决公司的核心问题。

    以下基于平台的内容主要是PaaS平台,即主要从应用程序和中间件的角度,此处不讨论IaaS内容。

    PasS平台将问题的重点从基本资源提升到了应用程序级别。目标是提供一个平台,以帮助开发人员运行和管理应用程序,使用户可以更加关注运行代码(业务逻辑)。

    PaaS可以解决问题:

    应用程序聚合:如果开发需要Redis,则直接启动Redis容器以进行服务发现,快速扩展,状态管理和其他服务监视,恢复,灾难恢复安全管理:无论在什么平台上,安全性都非常重要,例如一个应用程序可以访问B,B不允许访问A和安全审核。快速部署。

    随着Docker容器技术的出现,我们拥有了更合适的工具来构建PaaS平台,并能够基于应用程序构建服务。在Docker容器调度框架上,我们自然选择了Kubernetes平台。 Kubernetes具有资源调度,服务发现,服务编排,资源逻辑隔离,服务自我修复,安全配置管理,作业任务支持,自动回滚,内部域名服务,运行状况检查,状态支持,运营监控/日志记录,容量扩展和减少体积。负载平衡,灰度升级,灾难恢复,应用程序HA等。Kubernetes的核心是如何自动化容器化应用程序的部署,扩展和管理。

    以下图像是最小的PaaS架构图:

    基于Kubernetes 构建.NET Core 的技术体系

    最重要的Ingress服务类似于传统的负载平衡器。它提供了请求分配的功能。它分为两类:提供API服务的API网关和提供外部服务的站点。外部API网关使用Ocelot。开发中,Ocelot完成了Kubernetes的集成,此功能已经在我们的平台上工作了一段时间,上个月将代码合并到Ocelot中继中,可以通过Nuget包下载,请参见Kubernetes客户端KubeClient的使用和常用使用过的Api。该服务等效于后端Pod的代理服务器。该服务需要传递Ingress服务,以供外部客户端访问。该服务提供服务注册和服务发现。 Pod相当于传统服务。最小化PaaS平台还使用DNS组件。内部服务启动并运行后,我们将通过DNS组件分配内部域名以进行访问。

    Kubernetes选择了腾讯云TKE。默认情况下,TKE服务在集群中基于腾讯云负载均衡器启用l7-lb-controller。它支持HTTP和HTTPS,还支持nginx-ingress类型。根据业务需要可以不同。入口类型。

    平台关键功能的描述

    应用程序不断部署,该平台可实现快速,可视和自动部署。支持快速,直观地部署应用程序。用户只需要在界面中选择相应的映像和组件,填写简单的配置信息,单击部署按钮,就可以完成整个应用程序的安装或升级。应用弹性缩放以构建具有需求预测和容器按需供应功能的弹性缩放子系统。它具有根据基于应用程序的负载和资源条件灵活地进行伸缩的能力,以应对Internet用户的高并发性并应对流量影响。其中,容器具有弹性伸缩,物理机械具有弹性伸缩功能。从整个应用程序的角度来看,容器和组件的统一管理,平台不仅管理镜像和容器,还管理应用程序中涉及的所有组件。通过统一管理与系统相关的组件和容器,可以实现该平台。全局统一部署,配置,升级/回滚,监视和故障处理。可靠性高,容器故障恢复能力强,当服务器宕机时,平台系统会自动重启其他服务器上的容器并为其分配资源,从而实现二级启动和恢复业务。保证业务不掉落,运行可靠性高;应用程序Docker软件包,系统支持以下常见应用程序:NET Core,Jexus,Nginx,Redis,Mongodb等。

    PaaS平台功能

    在实现中,主要需要开发几个基本组件:

    镜像管理,实际运行的应用程序映像由“基本中间件映像” +“应用程序包” +“配置”,Visual Studio 2017/2019和Visual Studio Code以及Microsoft Open Source Helm,Draft,Through通过自动构建通过标准化的内部培训,开发人员可以快速了解镜像的概念以及开发过程的镜像; DNS管理,公司内部使用的自定义DNS管理平台,对公司DNS的统一管理;服务管理,需要自定义一组Kubernetes在此模板中定义了从Ingress到Service再到RC的部署模板,以方便容器的扩展,减少和删除。服务中的Pod管理属于Kubernetes自己的范围。检查Pod操作状态和服务中的Pod。日志输出等功能;日志管理,将日志输出到公司的日志平台(例如ELK平台),对接研发人员进行故障排除,数据掩埋点使用;

    尽管我们属于一家初创公司,但我们相信技术的力量。技术可以帮助我们实现业务的可持续健康发展。从开发的早期阶段,我们就避免了许多公司的一些困难。中小企业完成此操作后,可以大大减少日常运维工作的数量,两到三个人就可以完成日常应用运维工作。如果您有兴趣,可以挑战它。当然,这样做之后,它只是一个小的PaaS平台。我们基于腾讯云的TKE平台构建了一个如此小的PaaS平台。

    如果是再复杂一点的PaaS平台,应该还有哪些要继续做的呢?环境管理:即一套平台管理多套不同的Kubernetes集群、安全管理、流程管理、计费管理等功能模块。还有因为规模增加和更高的可靠性要求,对应的网络,IO等各种优化。其实还有很多功能就不一一列举了,可以根据自己的实际情况添加功能模块,设计有自己公司特色的PaaS平台。

    ——

  • 热门标签

  • 日期归档

  • 友情链接:

    豫都门户网 版权所有© www.st2888.cn 技术支持:豫都门户网 | 网站地图