本文来自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. C++数值计算

    1.序 (1)程序设计分两种: 1.结构化设计(面向过程)——分解算法为模块,将算法的步骤分解为模块. 2.面向对象程序设计——主要是“类”与“对象”. (2)进制的转换 1.二进制转十进制 整数部分 ...

  2. MyEclipse导出war包丢失文件问题解决

    这两天忙于一项目的上线,现总结一下遇到的一个奇怪问题的解决方案. 公司用的是Windows系统的服务器,所以省去了很多linux的繁琐命令.部署工作简单了很多.一切准备结束,放上War包启动服务器后, ...

  3. 自建CDN Xnign产品指标

    Xnign-X1 Xnign-X1 性能参数 参考值 L7 HTTP RPS (128并发请求) 250W QPS L7 HTTP CPS (128并发请求) 110W QPS L7 HTTP RPS ...

  4. mongo 查询 距离 某个点 多少 米距离 感谢 提供的数据。 感谢 mvc的 demo 。反正 就是各种感谢 文档之类的。

    昨天 去面试来着, 问了一下mong . 我记得mong支持 地理位置索引的,说了一下. 然后 面试官说 查询某个点 的 多少米范围, 这个该怎么实现? 我懵逼了.... 回去 查询了一下. 发现有 ...

  5. python笔记05

    python笔记05 数据类型 上个笔记知识点总结: 列表中extend特性:extend,(内部循环,将另外一个列表,字符串.元组添加到extend前的列表中) li.extend(s),将s中元素 ...

  6. BOZJ-2590 优惠券

    BOZJ-2590 优惠券 题目: 约翰需要买更多的奶牛!交易市场上有n头奶牛等待出售,第ii头奶牛的原价是\(p_i\)元,使用优惠券之后,折扣价为\(c_i\)元.约翰有m元钱和k张优惠券.请问约 ...

  7. 分享一下我在mysql5.6+mysql8数据库安装过程中的一些坑!

    Mysql5.6安装 下载好安装包后,在bin目录下用cmd打开,输入mysqld install [服务名]新建个服务 在windows+r输入services.msc即可查看服务 怎样使用mysq ...

  8. NOde.js的安装和简介

    1.nodejs的安装 1.1 检测nodejs的版本 node -v (version:版本) 1.2 path配置nodejs 的环境变量(当前版本都是自动安装配置环境变量)指令: path 1. ...

  9. laravel 操作多数据库总结

    laravel 操作多数据库总结 读写分离 env配置 DB_CONNECTION=mysql DB_HOST=xxxxxx DB_PORT=xxx DB_DATABASE=xx DB_USERNAM ...

  10. PYTHON经典算法-完美平方

    问题描述: 给定一个正整数n,找到若干个完全平方数(例如:1,4,9),使得 它们的和等于n,完全平方数的个数最少. 问题示例: 给出n=12,返回3,因为12=4+4+4:给出n=13,返回2,因为 ...