来源:http://t.cn/ExaHoL2

最近我们澄清了一些大家在进行Kubernetes实验的时候所见到的常见的误解。其中最大的一个误解就是:在生产环境中运行Kubernetes和开发测试环境并无两样。

答案:是不一样的。

Avi Network公司的联合创始人兼首席技术官Ranga Rajagopalan认为:“对于Kubernetes,容器和微服务来说,实验环境和生产环境有巨大的不同。简单的运行和安全、可靠的运行是不一样的”。

Ranga Rajagopalan的意见中有一个重要的论点:上述问题不仅仅只是存在于Kubernetes,同样也存在于容器和微服务。部署容器相对简单;而在生产环境运维和缩放容器(包括容器化的微服务)是问题复杂的原因。

容器和容器的编排工具通常都是成套出现的。New Stack公司之前进行了一项调查,调查发现当组织为了解决运维所面对的挑战,去寻找更强大的技术的时候,容器反过来推动了Kubernetes的普及。虽然也有其他的工具,Kubernetes还是快速成为了编排工具和选择的代名词。像Rajagopalan说的那样,在沙箱里运行Kubernetes和在生产环境中运行Kubernetes有巨大的不同。

通常IT专业人士和团队运维小规模的Kubernetes环境,当这个环境转向生产环境部署的时候,这些人将有很多东西需要面对和学习。“你肯定想在上生产环境之前扫清这些常见的误解,这里有IT领导者和团队需要了解的知识”。

误区1:在开发测试环境运行Kubernetes能帮你全面了解运维的需求

现实:在开发测试环境运行Kubernetes能帮你走一些捷径,你可以不必面对生产环境所带来的运营负载。

Wei Lien Dang, StackRox的产品副总裁认为“开发测试环境和生产环境的最大不同源自于运维和安全,在运维测试环境你根本不用在乎集群宕机。”

Portworx的联合创始人兼CEO Murli Thirumale将开发测试环境和生产环境的不同与敏捷和可靠,高性能的敏捷做了类比。

“开发团队的目标是在开发和测试新应用和代码的时候实现应用的敏捷;而同时运维人员的目标是应用和数据的可靠性,可伸缩性,安全性和性能。后者需要一个强大的,企业级的,经过测试和验证的平台。”

自动化已经成为了在生产环境中采用Kubernetes(或者通俗所说的容器)的迫切需求。

Coda Global的架构师Ranjan Bhagitrathan认为“生产集群必须通过自动化部署。生产集群一定要具备可复制性,从而实现整体生产环境的一致性,同时可复制性也对灾难恢复有所帮助”。

Bhagitrathan同时也认为版本控制对生产环境运维至关重要,“对所有事情进行版本控制,比如服务部署的配置文件,策略等等,如果可能也包括实现基础架构即代码的代码命令。这能确保你的环境是相同的。同时也要确保容器镜像有版本控制,不要只是用“最新镜像”这样的名字来个镜像打标签,这样很容易引起混乱”。

误区2:你已经得到了可靠性和安全性

现实:如果你只在非生产环境试验过Kubernetes。你可能没获得可靠性和安全性,或者目前没有。

好消息是你最终会做到,因为上生产环境之前,需要做规划和架构设计。

AquaSecurity的联合创始人兼 CTO Amir Jerbi认为“很显然,在生产环境,性能,可伸缩性,高可用性和安全性方面所面对的挑战更严峻。所以在架构阶段规划生产环境需求,并且把安全,伸缩控制,Helm charts集成在Kubernetes部署的定义中是极为重要的”。

Dang分享了一个测试开发环境如何导致过度自信的例子:

“在测试开发环境中开放所有的网络端口是非常不错的,很可能所有的服务都能互相连接。Kubernetes默认设置所有网络连接开放。但这不是一个成熟生产环境所应有的设置,一旦步入生产阶段,停机和大规模攻击会给业务带来风险“。

“当工作转移到容器和微服务的时候,构建高可靠,高可用的系统是非常有价值的工作。编排工具帮你实现这部分工作,但这并不举手可得。安全性也是一样。”

“我们要做很多事情来减少针对Kubernetes的攻击,通过加强网络策略来实施最低权限模型,并且限制服务只和需要的服务连接是非常关键的。”

在生产环境中,容器镜像的安全漏洞可以很快变的很严重,威胁可能是受限的或者根本不在本地。(whereas the threat may be limited or non-existent locally.)

Bhagirathan说,“要注意你的容器镜像采用的基础镜像是什么,尽可能用受信任的官方镜像或者自己动手制作。用未知的镜像也许可以帮你很快的跑起服务,但也带来了安全问题。比如,你肯定不想你的Kubernetes系统给别人挖比特币做贡献。”

红帽公司的安全策略师Kirsten Newcomer鼓励人们通过10个层次来考虑容器安全——包括容器堆栈层(比如容器主机和注册),容器生命周期(API管理)。有关10层的细节信息以及如何应用在Kubernetes这样的容器编排工具,请参阅Newcomer的播客或者白皮书:https://www.redhat.com/en/enga ... yaAAA。

误区3:编排工具让缩放变得易如反掌

事实:虽然很多软件专业人士都认为Kubernetes这样的容器编排引擎对于容器扩展性来说是必不可少的,但是认为编排工具能立即让缩放变得简单是错误的,特别是当你第一次在生产环境中使用它时。

Sumo Logic公司的高级技术产品经理Frank Reno认为“自动缩放改变了一切,数据越来越大,你的监控系统需要根据数据量来扩展。在生产环境运行之前,Kubernetes的所有组件都不能被很好的了解。毕竟确保Kubernetes系统的健康运行,API服务器和其他控制组件能根据需求缩放而不是自动的。”

开发和测试环境让事情变得过于简单,而真正的环境需要这样,或那样的需求,并且需要一直维护。

“在开发测试环境可以非常简单跳过一些基础设置,比如确保你能用到特定的资源,并且限制请求,”Reno说,“如果在生产环境不这样设置,你的好日子就算到头了。”

向上或向下扩展群集是一个很好的例子,当你在本地进行实验时,它可能看起来很简单,但在生产环境中缩放变得明显更具挑战性。

“生产集群,与开发或模拟集群相反,在扩展方面会遇到更多的痛点,”WhiteSource的首席执行官Rami Sass说。 “尽管应用程序的横向扩展在Kubernetes中非常简单,但DevOps[团队]还需要考虑其它方面,特别是保持服务在线的同时扩展基础架构。重要的是确保主要服务,负责漏洞和安全的报警系统分布在群集的节点上,并使之有状态,这样在向下扩展时不会丢失任何数据。”

和其它挑战一样,这是合理规划和利用资源的问题。

“了解你的缩放需求,为它们做计划,更重要的是:做测试!” Coda Global公司的Bhagirathan提出了建议。“你的生产环境应该能承担更高的负荷”。

误区4:Kubernetes在哪运行都没区别

现实:正如同在开发人员的笔记本上运行Kubernetes和生产环境中运行Kubernetes有区别一样,环境会导致差别。

“一个常见的误解是(假设)Kubernetes在本地运行正常,那么它可以在任何地方正常工作,”Bitnami的首席执行官兼联合创始人Daniel Lopez说道,他用云平台之间的差异来应证这个假设的是错误的。 “虽然Kubernetes如果能够有效地提供一致的环境,但供应商之间仍存在显著差异 。”

Lopez还指出,生产环境的部署需要那些不只作用于本地的组件,比如监控,日志和证书管理,以及凭据。你需要考虑这些因素,这也是导致开发/测试和生产环境之间差距扩大的关键问题之一。

这也是综合性问题,不仅Kubernetes需要考虑,也包括容器和微服务,更广泛的来说,在混合云和多云环境也需要考虑。

“公共 - 私有部署比纸面上看起来更棘手,因为许多必要的服务,如负载平衡和防火墙,都是专有的。 在实验室中运行良好的容器在具有不同工具的云环境中运行可能根本不工作——或者至少不安全 ,”Avi Networks的Rajagopalan说。 “这就是为什么像Istio这样的服务网格技术受到如此多关注的原因。 不管容器运行在哪,他们都提供相同的应用程序服务,因此你不必考虑基础架构——这是容器最重要的一点”。

开发环境和运行环境的区别_生产环境 VS 开发环境,关于Kubernetes的四大认识误区...相关推荐

  1. python运行程序的快捷键_在Python集成开发环境中,可使用快捷键()运行程序。...

    在Python集成开发环境中,可使用快捷键()运行程序. 更多相关问题 如何理解创新能力测试与创新能力的关系? 直埋线路与埋式电力电缆电压<35kv平行时最小间距为(). 放射性物品装卸作业时, ...

  2. jmeter进程和线程的区别_接口测试01- Jmeter-线程进程-环境变量

    1.1 概念 JMeter 是 Apache 组织使用 Java 开发的一款测试工具 ,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动态资源,例如静态文件.Java ...

  3. 安卓开发板烧写程序与安装软件的区别_巧用imx6开发板烧写android系统的详细步骤讲解...

    平台:迅为iMX6开发板 iMX6 可以使用 OTG接口烧写镜像,OTG烧写也可以叫 USB 烧写. 1.OTG烧写环境 OTG 烧写只需要在 windows 环境,OTG 烧写方式首先要安装 ADB ...

  4. 初级开发和中级,高级的区别_如何从初级开发人员过渡到中级开发人员

    初级开发和中级,高级的区别 Getting that first developer job is the goal of many new programmers. But I've discove ...

  5. jave与python区别_简述JAVA后端开发与python后端开发的区别

    今天总算闲了一会,趁着这个闲暇来写篇文章. 今天我想以个人观点来简单说说Java后端开发和Python后端开发的区别. Java&Python BackEnd 公众号老粉可能知道公众号以前的名 ...

  6. 敏捷开发中的sprint是什么意思_百度知道

    敏捷开发中的sprint是什么意思_百度知道 敏捷开发中的sprint是什么意思_百度知道 敏捷开发中的sprint是什么意思     未成年RB21 | 浏览 4208 次     推荐于2016- ...

  7. python开发环境和运行环境的区别_Python 初学者必知:Python 运行与开发环境

    http://codingdao.com/wp/post/py-must-know-run-dev-env/ Python 初学者必知:Python 运行与开发环境 2011年2月11日 Breake ...

  8. 为什么jupyterlab运行程序的时候会自动停止_搭建 Julia 轻量级编写环境(VSCode,JupyterLab)

    作为数据科学中的后起之秀,Julia 以其出色的运算速度,受到了不少人媒体的追捧(虽然也不清楚这些写稿的人都用没有).Julia 致力于成为一个全面的数据科学语言,不过由于社区依然不如 Python ...

  9. toolchain安装教程支持_树莓派安装ESP8266_SDK开发环境

    陈拓 chentuo@ms.xab.ac.cn 2020/02/19-2020/03/31 1. 概述 ESP8266的开发工具是在linux系统下运行的,树莓派的官方操作系统是Linux系统.如果你 ...

最新文章

  1. pandas使用query函数删除dataframe中某一列数值等于某一特定值的行(remove dataframe rows baed on column value)
  2. STM32 USB-HID通信移植步骤
  3. oauth2中用户的信息如何动态获取和存储_oAuth2.0 简介
  4. php 模板使用,TMDPHP 模板引擎使用教程
  5. 第五节 19可空数据类型
  6. php设计模式 -- 工厂模式
  7. Java应该是更高级别还是更低级别?
  8. Final Project Proposal ——陈稳霖
  9. datagrid combobox 选择后显示valueField 而不是 textValue解决方法
  10. python编程符号大全-python符号大全
  11. postman通过脚本动态获取token 和cookies
  12. 使用 DiskMaker X 轻松制作 Yosemite 安装 U 盘(引)
  13. 网络计算机干啥用,路由器干什么用?路由器功能详解【图文】
  14. amcharts使用总结
  15. 无损放大图片软件有什么?安利几款放大图片的软件
  16. 无法验证驱动程序的签名_无法验证应用?掉签名打不开应用?没越狱也能解决!...
  17. 0基础学习pythonTASK6——If 、For、While语句
  18. 2019北大计算机夏令营,2019北大清华还有哪些活动?夏令营情况汇总
  19. python 正则使用r“\b\d+\b”匹配纯数字数据
  20. (附源码)springboot+mysql+基于Spring boot开发电子宿舍管理系统 毕业设计132056

热门文章

  1. 1.9 实例:截取新闻标题
  2. CSS入门之【背景图像和渐变】
  3. JMeter初探-安装与使用
  4. MySQL中如何查询数据(上)
  5. MySQL中如何插入数据(DML)
  6. Servlet多个对象共享数据
  7. 计算机组成名词解释移码,自考“计算机组成原理”串讲资料
  8. 利用函数wavread对语音信号进行采样_语音识别第4讲:语音特征参数MFCC
  9. 柱底反力求和lisp软件_AutoLISP详细讲解
  10. uml+oopc嵌入式c语言开发精讲_当前火爆的嵌入式领域,为什么选择C语言作为开发语言?了解一下...