关键两步+6个要点,让Windows应用程序享有K8S的绝佳优势
本文来自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的容器化方面有丰富的经验。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
springboot实现热部署
一、前言 在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。对于一个后端开发者来说,重启过程确实很难受。在java开发领域,热部署一直是一个难以解决的问题,目前的java虚拟机只能实现方法体的热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。 二、原理 深层原理是使用了两个ClassLoader,一个ClassLoader加载那些不会改变的类(第三方jar包),另一个ClassLoader加载会改变的类,称为restartClassLoader,这样在有代码更改的时候,原来的restartClassLoader被丢弃,重新创建一个restartClassLoader,由于需要加载的类相对少,所以实现了较快的重启时间。 三、springboot实现热部署的三种方式 (一)Spring Loaded Spring Loaded是一个用于在JVM运行时重新加载类文件更改的JVM代理,Spring Loaded允许你动态的新增、修改、删除某个方法、字段、构造方法,同样可以修改作用在类、方法、字段、构造方法...
- 下一篇
Apache DolphinScheduler 1.2.1 发布,分布式工作流任务调度系统
Apache DolphinScheduler 于2020年2月24日正式发布 1.2.1 版,发布内容如下: 新特性: [#1497] 通过 API 创建的工作流在前端展示时自动调整布局。 [#747] Worker server 运行日志脱敏。 [#1635]配置文件适当合并。 [#1547]节点内容编辑支持全屏缩放。 增强: [#184] 被工作流引用的 worker 不能被删除。 [#1441] 可创建包含 "."的用户名。 [#839] 可切换 Spark 版本。 [#1511]前后端编译文件合并。 [#1509]去除 Master 和 Worker 监听端口(5566,7788)。 [#1575]去除 kazoo ,简化部署。 [#1300]邮件内容可右对齐。 [#1599]增加前端部署的 nginx 配置文件。 支持 Mac 进行开发和 debug。 Bug 修复: 特定情况下弹出框不能关闭。 [#1399]日志信息中字段顺序错误。 [#1379] sql 任务节点日期转换错误。 [#1477]特定情况下,数据库延迟的时候,任务会一直执行。 [#1514]队列关联用户后...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8