本文来自Rancher Labs

前  言

实际上,没有一个迁移路径能够适用于将所有传统应用程序迁移到云。这些应用程序通常在物理机、虚拟机或本地。虽然一般情况下是重新设计应用程序架构以适用云原生服务,但这并非是唯一的答案。将一个现有的应用程序的架构重新构建为微服务架构或云原生架构会面临诸多挑战,如重构成本、复杂性以及应用程序的依赖性。

虽然将应用程序的架构现代化有诸多好处,但许多组织仍在Windows 2003 Servers上运行现有服务。而微软不再支持Windows 2003为此带来了一些挑战。首先,人们不得不开始决定要如何处理这些应用程序,特别是Windows 2008的生命周期也即将结束。

许多企业想要迁移到现代架构中,期望以此能让他们的应用程序获得复杂性、安全性和可用性。而容器提供了使应用程序现代化并将其移至云原声服务的灵活性。在本文中,我们将重点介绍能够迁移到容器的应用程序,一般是.Net、Web、SQL和其他没有依赖性但在Windows2003上运行的应用程序。你可以无需更改代码就能将这些应用程序迁移到容器,并且使它们在将来具备可移植性。你将会享受到在Kubernetes上运行容器的好处,如可编排、可用性、更高的弹性伸缩和密度。

请注意:不是所有的应用程序和服务都能运行在容器中。有些应用程序存在核心依赖项(如数据库、存储需求等),这些都需要解决。此外,需要根据业务决定应用程序的持续寿命。

商业层面:迁移到Kubernetes的优势

将这些应用程序迁移到容器有一些关键的业务原因,如:

  • 投资回报率高

  • 传统的基于Web的服务可以获得可移植性

  • 应用程序安全性提升

  • 节省企业重新评估现有应用程序的时间

既然Kubernetes支持Windows的worker节点,那么你可以迁移传统的Windows应用程序到现代架构中。Windows worker和Linux worker可以共存在同一个Kubernetes平台中,也就是说,运维团队可以适用同一套工具、实践以及过程。

Step1:分析从Windows迁移到K8S的过程

将传统应用程序迁移到Kubernetes需要大量的分析和计划。但是,有一些关键的实践是十分必要的,比如:

  • 分解应用程序:将应用程序拆分为原始形式,以了解哪些组件正在运行,它们如何运行以及它们的依赖关系

  • 发现应用程序提供的服务以及在数据、网络等方面产生的调用

  • 从应用程序中解耦出数据层

  • 确定并映射服务依赖项

  • 测试、测试再测试

Step2:规划从Windows到K8S的迁移过程

迁移到容器化、基于.Net的平台是一个复杂的流程,中间会涉及许多步骤。因此,在执行这一流程时需要做出一些关键的决定。以下过程提供了一些有关迁移旧Windows系统以在Kubernetes上运行的要求的指导。

  • 确定你的容器所需要的操作系统——Server Core或Nano Server。这需要根据应用程序的依赖项进行选择。

  • 遵循兼容性准则。运行Windows容器会为主机的OS版本和容器正在运行的基本镜像添加严格的兼容性规则。它们必须运行Windows 2019,因为容器及底层主机共享一个内核。截至成文时,仅支持服务器隔离进程。然而,很快会开始支持Hyper-V隔离(具体时间未知),这将有助于主机和容器的兼容。

  • 打包你的传统应用程序。

  • 使用应用程序包构建基于Docker的初始容器。

  • 在你所选择的仓库中部署一个新的Docker容器

  • 充分利用现有的DevOps工具(CI/CD构建和发布流水线)

  • 部署新的Windows应用程序到你所构建的支持Windows的Kubernetes环境中

  • 测试、测试,再测试

将Windows应用程序迁移至K8S的关键优势

通过从Windows迁移到Kubernetes,你的旧应用程序将享有你现有基于容器的应用程序的优势。此外,你的Windows容器也将会从Kubernetes平台本身获得优势。而且,它们可以使用Kubernetes生态中的工具和系统,包括安全性工具、服务网格、监控/告警等。

这些优势叠加在一起,可以让你处于有利地位,以便于对应用程序做出关键决策并发掘业务用例。对于无法迁移的应用程序,由于缺乏对底层操作系统的支持,因此你不能对此放任不管,仍然需要决定如何处理它们。而且由于没有其他可用的补丁或安全补救措施,因此你的企业容易受到漏洞和攻击,所以应该及时采取行动。

从Windows迁移到K8S的关键要点

  • 基于容器的解决方案可以节省成本

  • 容器减少依赖项并为应用程序提供可移植性

  • Docker已经是运行容器的事实标准,同时Kubernetes是容器编排引擎的事实标准

  • Kubernetes可以托管可伸缩、可靠且具有弹性的基于Windows容器的应用程序以及基于Linux的应用程序

  • 运行Kubernetes平台的组织可以将传统应用程序集成到他们的DevOps文化和工具中

  • 利用原生和基于生态系统的Kubernetes工具可以提高安全性并为传统应用程序增加额外的保护层

在Rancher 2.3中,GA了对Windows容器的支持。通过把Kubernetes的所有优势引入Windows,Rancher 2.3极大降低了企业使用Windows容器的复杂性,并为基于Windows遗留应用程序的现代化提供快捷的途径——无论这些程序是在本地运行还是在多云环境中运行。此外,Rancher 2.3还可以将它们容器化并将其转换为高效、安全和可迁移的多云应用程序,从而省去重写应用程序的工作。

作者简介

Kelly Griffin是基础架构,安全和微服务顾问,在提供企业解决方案方面拥有20多年的经验。他所服务过的企业遍布全球,包括澳大利亚、新加坡、新西兰等。他在使用Docker和Kubernetes的容器化方面有丰富的经验。

关键两步+6个要点,让Windows应用程序享有K8S的绝佳优势的更多相关文章

  1. 齐博x1 APP要实现直播的关键两步

    大家务必要注意,缺少这两步,你的APP将不能实现直播, 也即点击直播按钮无法启动直播推流

  2. 齐博x1APP要实现直播的关键两步

    大家务必要注意,缺少这两步,你的APP将不能实现直播, 也即点击直播按钮无法启动直播推流 https://www.maxdo.tech/

  3. 挑子学习笔记:两步聚类算法(TwoStep Cluster Algorithm)——改进的BIRCH算法

    转载请标明出处:http://www.cnblogs.com/tiaozistudy/p/twostep_cluster_algorithm.html 两步聚类算法是在SPSS Modeler中使用的 ...

  4. 轻松三步教你配置Oracle—windows环境

    最近笔者在学习Oracle的时候,虽然度过了大家所说的安装难题,但是又遇到了一系列的问题,经过多方求教才知道原来是自己仅仅是安装了Oracle,却没有在环境变量中进行相应的配置.笔者也像大家遇到问题时 ...

  5. SecureCRT两步验证自动登录脚本

    简介 用于解决 Google Authenticator 的两步验证登录.涉及到密码,不建议脚本保存到公共环境. 安装oathtool Mac $ brew install oath-toolkit ...

  6. 两步验证杀手锏:Java 接入 Google 身份验证器实战

    两步验证 大家应该对两步验证都熟悉吧?如苹果有自带的两步验证策略,防止用户账号密码被盗而锁定手机进行敲诈,这种例子屡见不鲜,所以苹果都建议大家开启两步验证的. Google 的身份验证器一般也是用于登 ...

  7. Kubernetes 两步验证 - 使用 Serverless 实现动态准入控制

    作者:CODING - 王炜 1. 背景 如果对 Kubernetes 集群安全特别关注,那么我们可能想要实现这些需求: 如何实现 Kubernetes 集群的两步验证,除了集群凭据,还需要提供一次性 ...

  8. 使用bat(批处理文件类型)两步更改笔记本IP

    一.背景 在南农工的第三年里,学校终于给教学区覆盖了无线网NJAUPK,这解决了我在汇贤楼教室上自习没网写web的尴尬处境!经常在9栋和汇贤楼教学区之间来回,遇见了一个大问题:宿舍里无线需要更改IPV ...

  9. 每次Xcode 升级之后 插件失效,两步解决

    以下内容来源:http://www.cocoachina.com/bbs/read.php?tid=296269 每次Xcode 升级之后 插件失效,两步解决 1.打开终端,输入以下代码获取到DVTP ...

随机推荐

  1. cf - 01串的问题

    One beautiful July morning a terrible thing happened in Mainframe: a mean virus Megabyte somehow got ...

  2. hdfs断电报错解决

    一,/home/hadoop/tmp/dfs/name/current 目录下查看文件二,1.stop hadoop所有的服务;2.重新格式化namenode即可: hadoop根目录下: hadoo ...

  3. isStatic:检测数据是不是除了symbol外的原始数据

    function isStatic(value) { return( typeof value === 'string' || typeof value === 'number' || typeof ...

  4. 洛谷p1502窗口的星星 扫描线

    题目链接:https://www.luogu.org/problem/P1502 扫描线的板子题,把每个点看成矩形,存下边(x,y,y+h-1,li)和(x+w-1,y,y+h-1),在按横坐标扫线段 ...

  5. url的分发

    一.分发 补充:通过查看源码:可以通过二级路由include进行二次分发 位置:urls.py urlpatterns = [ path('admin/', admin.site.urls), pat ...

  6. Mklink 转移文件/文件夹

    使用Mklink可以创建一个目录链接,从而完美转移文件/文件夹 MS官方文档 https://docs.microsoft.com/en-us/windows-server/administratio ...

  7. mongo 的 中文社区的 文档还是 挺不错的

    英文文档也奉上: http://api.mongodb.com/csharp/2.2/html/T_MongoDB_Bson_Serialization_Attributes_BsonIdAttrib ...

  8. ogg trail文件序列号不一致

    一.Cause 在某些情况下,对于一个已经running的OGG进程,对已同步的数据(正确的同步或者错误的同步)做修改,修改完之后,需要保持一个一致点,从一致点继续同步. 这时需要人工干涉产生一个新的 ...

  9. 关于SpringMVC未找到类[No qualifying bean of type [...]is defined]问题

    首先,不要慌,出现这个问题肯定是某一个配置注解没写上.. 无非就几个地方: 1.控制层是否添加@Controller or 需要pring管理的类是否添加@Component 2.DAO层是否添加@R ...

  10. 【Java并发工具类】Lock和Condition

    前言 Java SDK并发包通过Lock和Condition两个接口来实现管程,其中Lock用于解决互斥问题,Condition用于解决同步问题.我们需要知道,Java语言本身使用synchroniz ...