阅读更多
引用

本文转载自才云科技微信号,欢迎投稿,投稿邮箱weiwei@csdn.net

众所周知,Windows 的应用无法运行在 Linux上,而 Linux 应用也无法运行在 Windows 上。但是,事实上,当 Docker 将容器作为一种显著的打包应用的方法,并且可以在“任意地方”封装它的时候,这里的“任意地方”就已经包含了“Linux”。Windows也有容器,但是要让所有工作都一起运行还是不太可能的。

但是,今天Kubernetes1.5的发布,让Linux和Windows一起运行的梦想能够实现了。

Kubernetes1.5(alpha 版本)支持Windows服务器容器,跟Docker类似,他们共享同一个内核模式;而Hyper-V容器的单核模式则为多租户环境提供了更好的隔离(代价是延迟时间更长了)。最终的结果就是,在你创建的这个Kubernetes集群上,Linux节点可以运行Linux容器,Windows 节点可以运行 Windows 容器;同时,Linux节点也可以运行Windows容器,Windows节点也可以运行Linux容器,真正实现混合集群。比如,单个 service允许Pod使用Windows服务器容器,也允许其它的Pod使用 Linux 容器。

虽然 Kubernetes1.5 功能全面,但是也有它的局限性,比如:

  • Kubernetes 是由Go语言编写的,以至于它带有一定的依赖性,所以 Kubernetes master 必须运行在 Linux 上。如果端口映射到 Windows 也是可以的,但是技术团队更愿意把主要精力放在客户组件上。
  • Windows本地不支持网络叠加功能的容器,所以网络就被限制在了L3。(虽然问题也有其它的解决办法,但是这些办法都不支持本地)。Kubernetes Windows SIG正在跟Microsoft协同工作解决这些问题,希望明年发布的 Kubernetes1.6 版本中,这些问题都能够得到解决。
  • Windows容器间的网络更加复杂,因为每个容器都有自己的网络 namespace,所以推荐使用单个容器pod。
  • 运行在 Windows 服务器上的应用能够以任意 Windows 支持的语言运行。可以在Linux容器中运行 .NET 应用,但是前提是这些应用必须是用.NET Core写的才可以。Nano服务器操作系统也支持.NET core,而且还可以部署在Windows服务器容器上。


这次Kubernetes1.5的发布也支持IIS(目前它占据了网上11.4%的江山)和 ASP.NET。

Apprenda努力开发Kubernetes,就是为了让企业既能够享受Kubernetes 带来的益处,同时还能够有效利用他们已有的 Windows 资源。“我们的策略就是给我们的企业客户提供坚定使用Kubernetes 的理由。要做到这点,没有Windows的支持是不行的。2016 年3 月,我们承诺 Kubernetes 会支持Windows服务器,我们在这次发布的 1.5 版本中做到了。”Apprenda CEO,Sinclair说道,“我们会在编排Windows服务器容器、Hyper-V容器的时候,将全部功能交付到Linux 上,使机构组织者可以为他们的分布式应用获得单个控制面板。”

Kubernetes 1.5(beta 版本)也支持StatefulSets(由 PetSets 改名)。由 Kubernetes 管理的ReplicaSets 和Pods,会变成无状态,所以,如果这些功能不使用,或者用不到的话,就会变成“一次性”应用。但是在某些情况下,比如数据库,集群软件(比如RabbitMQ 集群),或者其它旧的有状态对象,可能性就比较小了。StatefulSets提供更加具体的辨识资源的方法,这样更好维护这些项目之间的联系。

Kubernetes1.5还包括了一些早期所做的努力,比如让Kubernetes 部署符合 OCI 标准的容器等等。

原文链接:Linux and Windows, living together, total chaos! (OK, Kubernetes 1.5)
1
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 学习正则表达式 - 选择、分组和向后引用

    选择操作、选项和修饰符、统计单词出现的行数、子模式、捕获分组和后向引用、命名分组、非捕获分组、原子分组、回溯

  • 正则表达式 ----选择匹配符

    一、选择匹配符 在匹配某个字符串的时候是选择性的,既可以匹配这个,也可以匹配那个。 package com.jun.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 选择匹配符 */ public class RogEX04 { public static void main(String[] args) { String content="zhengyabo 波

  • 正则表达式学习笔记(一)——使用正则表达式的分析方法

    一、使用正则表达式的分析方法 1、用自然语言来表达和说明你的意图 2、考虑数据源及其可能的内容 3、考虑可以使用的正则表达式选项 4、考虑灵敏度和特殊性 5、创建适当的正则表达式 6、对除了简单的正则表达式之外的正则表达式给予说明 7、使用空白区域保持正则表达式说明的清晰 8、测试正则表达式结果 1、使用自然语言来表达和说明你的意图 在人类设计的任何规划工作中,对需

  • 正则表达式

    一、正则表达式概述 正则表达式,又称规则表达式,英文名为 Regular Expression,在代码中常简写为regex、regexp 或 RE,是计算机科学的一个概念。通常被用来检索、替换符合某个模式(规则)的文本。 正则表达式是对字符串和特殊字符(称为“元字符”)操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达...

  • 常用正则表达式最强整理

    一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$

  • 正则表达式:多选项匹配

    元字符 字符 描述 | 当有多个选项的使用,选项之间用”|“进行隔离。例如:匹配abc和DEF中的任意一项:abc|DEF。 () 匹配括号内容的内容。例如:(abc|DEF)可以匹配abc或者DEF。 [] 匹配括号中的任一字符,例如[abc],可以匹配字符"a",或者匹配字符"b",或者匹配字符"c"。 * 匹配前面的子表达式零次或多次。例如,"...

  • 正则表达式匹配

    请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配 class Solution { public: bool match(char* str, ch

  • js正则表达式的选择、分组、引用

    分组:字符串“|”用于分隔供选择的字符 选择的尝试匹配次序是从左到右,直到发现了匹配项,就忽略右边的匹配项,即使它产生了更好的匹配。 "ab".match(/a|ab/) //["a", index: 0, input: "ab"] 上面的匹配即便ab更合适但还是只会匹配a 分组:使用()把单独的项组合成子表达式,以便可以像处理一个独立的单元那样用“|”、“*”、“+”、“?”等来对单元内

  • 正则表达式的多选分支

    一个陌生可以实现横向和纵向的模糊匹配。而多选分支可以支持多个子模式任选其一。例如我们要匹配"good"和"nice"可以使用/good|nice/.但是有一个有意思的,比如我们用/good|goodbye/,去匹配"goodbye"字符串时,结果是"good".如果倒过来呢,用/goodbye|good/去匹配呢?怎么不会匹配后面的goodbye呢?在正则表达式匹配过程中,如果子表达式匹配到的是字...

  • 正则表达式 - - 选择运算 | & 匹配 ip 地址

    正则表达式一、 选择或者关系运算 : |1.1、匹配 ip:192.168.1.35 地址呢?二、匹配 ip 一、 选择或者关系运算 : | 规则: 自左向右匹配,一旦匹配上,就不会回头 直接上代码: console.log(/12|34|56/.exec('1')); console.log(/12|34|56/.exec('3')); console.log(/12|34|56/.exec('12')); console.log(/12|34|56/.exec('56')); consol

  • 正则选择性匹配

    遇到这样一个需求:给定一个关键字,匹配一段话或一篇文章中的文字,把匹配的文字做标红处理。 一开始用php自带的str_replace函数对匹配的关键字做替换: $replace = '' . $keyword . ''; str_replace($replace, $needle, $content); 但是遇到问题是现在内容格式的html格式的,如果html属性中有命中关键字的话,font

  • 正则表达式匹配属性选择器

    他们不存在,但是那不是很爽? 我不知道这会很难实现,或者如何昂贵的解析,但不会是仅仅是炸弹? 比方说,我有一大堆的元素,都具有类似的类名,其中有一些共同的造型也需要个别规则,例如: <ul id="menu"> <li id="menu-home"><a href="/">Home</a></li> <li id="men...

  • 正则表达式反向选择

    有时在用正则表达式筛选数据时,需要匹配不包含某个特殊字段的行,可以使用以下表达式来匹配 ^((?!CSDN).)*$ 以上表达式匹配所有不包括CSDN的行。

  • 基于正则化的特征选择

    此文谨为方便自己后续写作,有更深层需求的读者请参阅相关原始paper。1、特征选择简述降维,有时也可称为子空间学习,可以大致分为特征选择(feature selection)和特征提取(feature extraction)两大类,我们常说的主成分分析(PCA)、线性判别分析(LDA)、流形学习的代表—-局部线性嵌入(LLE)等,都是属于后者。特征提取,通常是将原始数据投影到一个新的空间,对于线性方

  • 正则表达式:选择指定字符以外的字符

    正则表达式:选择指定字符以外的字符 方法:使用正则中的特殊字符^ ^:一般用于匹配输入字符串的开始位置,当用于方括号表达式[]时,则表示不接受该方括号表示中的字符集合。 比如:选择除了英文大小写以外的所有字符,并替换。 import re s = "Hello, 你说:'this is a string'" print(re.sub("[^A-Za-z]","", s)) # Hellothisisastring ...

  • 正则表达式 匹配 用户名/密码/Email/身份证

    通过正则表达式匹配 用户名/密码/Email/身份证 用户名(4到16位,字母数字下划线,减号): /^[-_a-zA-Z0-9]{4,16}$/ 解释:在字符组中表示:匹配若干字符之一,这里就是匹配‘-’ , ‘_’ , 字母,数字其中之一,最后的{4,16}表示匹配4~16个字符组中的字符。 Email: /[a-zA-Z0-9]{1,10}@[a-zA-Z0-9]{1...

  • JavaScript 正则表达式 选择、分组和引用

    JavaScript的正则表达式支持布尔操作,除了作为 选择的“布尔或”操作之外,正则表达式还支持分组和引用。其实选择、分组和引用的作用分别为:指定选择项、对子表达式分组和引用 前一子表达式的特殊字符。 正则表达式的选择:所谓选择即在多个条件里面选择一个,比如说卖水果的大爷说送你个水果,你可以选择“梨”,“苹果”,“西瓜”中的任何一个。当然你会选择西瓜,呵呵。字符”|”用于

Global site tag (gtag.js) - Google Analytics