写点什么

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

2020 年 5 月 25 日

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

前言

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


虽然将应用程序的架构现代化有诸多好处,但许多组织仍在 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 的容器化方面有丰富的经验。


2020 年 5 月 25 日 16:41168

评论

发布
暂无评论
发现更多内容

不是吧?阿里“百万级”性能优化小册居然能让系统运行得这么快

程序员小毕

Java MySQL 架构 性能优化 JVM

Redis 学习笔记 09:数据库

架构精进之路

redis 七日更 28天写作

《认识产品经理》课后总结

DB

产品经理训练营

场外OTC交易系统开发|场外OTC交易软件APP开发

开發I852946OIIO

系统开发

19年末我从外包辞职了,10000+小时后,走进字节跳动拿了offer

Java架构追梦

Java 架构 字节跳动 面试题 面试经历

android高级开发面试!面试中Handler这些必备知识点你都知道吗?面试真题解析

欢喜学安卓

android 程序员 面试 移动开发

Spring 源码学习 16:单例 Bean 创建

程序员小航

Java spring 源码

亲历者说 | 完整记录一年多考拉海购的云原生之路

阿里巴巴云原生

阿里云 容器 微服务 云原生 dubbo

Soul网关源码阅读(九)插件配置加载初探

Java 源码阅读 网关

数字货币交易所APP开发|数字货币交易所软件系统开发

开發I852946OIIO

系统开发

Spring Boot 中集成Redis

武哥聊编程

Java redis springboot SpringBoot 2 28天写作

安卓开发视频教程!2021年Android常见面试题,附面试题答案

欢喜学安卓

android 程序员 面试 移动开发

python+requests接口测试基础

测试人生路

软件测试

1121212

熙羽1

华为云登顶HotpotQA多跳知识推理问答评测

华为云开发者社区

深度学习 华为 华为云

即将爆火的Java突击手册,全面详细对标P7岗,github已标星81.6k

Crud的程序员

Java 架构

Seata RPC 模块的重构之路

阿里巴巴云原生

阿里云 开源 云原生 RPC seata

HTML(五)——建立表格

程序员的时光

程序员 前端 七日更 28天写作

区块链高水平专业人才稀缺成发展掣肘

CECBC区块链专委会

区块链人才

【Http】- Http之状态码

双木之林

网络 HTTP

中金数据集团与腾讯云合力拓展信息安全、区块链业务领域

CECBC区块链专委会

区块链产业

Git神作!2021年Java春招高级面试指南,吃透至少P7

比伯

Java 编程 架构 面试 计算机

双仓合约量化交易系统开发搭建

薇電13242772558

区块链 数字货币

DBA 的效率加速器——CloudQuery v1.3.2 上线!

CloudQuery社区

数据库 运维 开发日志 dba 数据库管理工具

数字人民币带来更好支付体验 没有网络时也能使用

CECBC区块链专委会

数字人民币

一周信创舆情观察(1.11~1.17)

统小信uos

Java 程序经验小结:接口优先于反射机制

后台技术汇

28天写作

MySQL锁机制

程序员小毕

MySQL sql 线程 优化

TARS 染色日志|收集记录特定日志

TARS基金会

微服务 运维 日志 日志分析 TARS

阿里用5大核心技术+10大高级框架+200个经典案例全面解答了并发网络编程

996小迁

编程 架构 面试 笔记 亿级流量

Elasticsearch document id 生成方式

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

关键两步+6个要点,让Windows应用程序享有K8S的绝佳优势-InfoQ