Kubernetes 如何重塑虚拟机
Kubernetes 大规模使用过的都说简单,没有用过清一色的都是使用复杂、概念晦涩难懂,因此即使是那些具有一定服务器端知识的人也可能会感到困惑。让我在这里尝试一些不同的东西。与其解释一个不熟悉的问题(如何在 Kubernetes 中运行 Web 服务?)和另一个(你只需要一个清单,三个 sidecar 和一堆 gobbledygook),我将尝试揭示 Kubernetes 技术发展趋势。
如果您已经知道如何使用虚拟机运行服务,希望您会发现最终并没有太大区别。如果您对大规模运营服务完全不熟悉,那么跟随技术的发展可能会帮助您了解当代方法。
像往常一样,这篇文章并不全面。相反,它试图总结我的个人经历以及计算机多年来虚拟化是如何形成的。
如何使用虚拟机部署服务
早在 2010 年,当我刚刚开始我的软件工程师职业生涯时,使用虚拟机(或有时是裸机)部署应用程序非常普遍。
你需要一个临时的 Linux 虚拟机,将 Nginx 或 Apache 反向代理放在它前面,然后在它旁边运行一堆守护进程和 cronjobs。
这样的机器将代表服务的单个实例,打个比方,就类似于一个盒子,而服务本身将只是分布在网络上的一组命名的相同机器。根据您的业务规模,您可能只有几个、几十个、几百个甚至几千个盒子分布在为生产流量提供服务的多个盒子中。
使用虚拟机部署服务带来的挑战
通常,机器群的大小将定义配置(安装操作系统和软件包)、扩展(产生相同的盒子)、服务发现(将一组盒子隐藏在一个名称后面)和部署(运送新版本的代码)的方式到盒子)完成了。
如果你是一个只有几个类似宠物的盒子的公司,您可能会发现自己很少半手动地配置新盒子。这通常意味着总线系数低(由于缺乏自动化)、安全状况差(由于缺乏定期补丁更新)以及可能更长的灾难恢复。从好的方面来说,管理成本会非常低,因为不需要扩展,您的部署会很简单(只需几个盒子来交付代码),而且服务发现会很简单(由于相当静态地址池)。
对于拥有大量盒子的公司来说,现实情况会有所不同。大量机器通常会导致更频繁地需要配置新盒子(更多的盒子意味着更多的破损)。你会投资自动化(投资回报率会很高),最终得到许多牛一样的盒子。作为不断重新创建盒子的副产品,您将增加总线因素并改善安全状况(将自动更新和安装补丁)。在它的反面,会存在低效的扩展(由于每日/每年的流量分布不均匀),过于复杂的部署(很难将代码快速交付到许多机器上),以及脆弱的服务发现(您是否尝试过大规模运行consul或zookeeper?)会导致更高的运营成本。
Amazon Elastic Compute Cloud (EC2) 等早期云产品允许更快地启动(和关闭)机器;使用packer制作并使用cloud-init自定义的机器镜像,使配置稍微容易一些;puppet和ansible等自动化工具支持应用基础架构更改并大规模交付新版本的软件。但是,仍有很大的改进空间。
Docker 容器解决了什么问题
在过去,拥有不同的生产和开发环境是很常见的。这将导致应用程序可能在您安装的 Debian 机器上本地运行,但由于缺少依赖项而无法在生产中的 vanilla CentOS 上启动。相反,在本地安装应用程序的依赖项可能会遇到一些麻烦,但由于资源需求高,为每个服务运行预配置的虚拟机进行开发将是不可行的。
即使在生产中,虚拟机的庞大也是一个问题。每个服务拥有一个虚拟机可能会导致低于最佳资源利用率和/或相当大的存储和计算开销,但是将多个服务放在一个盒子中可能会使它们发生资源抢占冲突。
世界显然需要一个更轻量级的盒子。
这就是容器的用武之地。就像允许将裸机服务器分割成几台更小(更便宜)的机器的虚拟机一样,容器将一个 Linux 机器分割成数十个甚至数百个独立的环境。
在一个容器中,您可能会觉得您拥有自己的虚拟机,以及您最喜欢的 Linux 发行版。好吧,至少乍一看。从外部看,容器只是在主机操作系统上运行并共享其内核的常规进程。
Kubernetes 如何重塑虚拟机相关推荐
- 云计算技术 — OpenStack v.s. Kubernetes
目录 文章目录 目录 Virtual Machine v.s. Container What are the differences with OpenStack and Kubernetes? Vi ...
- 2019年关于VM和Kubernetes的思考 | 技术头条
戳蓝字"CSDN云计算"关注我们哦! 转自:开源云中文社区 近年来,容器已成为云原生应用程序架构的同义词.它们重新定义了打包.分发.部署和管理应用程序的方式.但是,容器本身就是已有 ...
- Kubernetes单机创建MySQL+Tomcat演示程序:《Kubernetes权威指南》第一章demo报错踩坑
欢迎访问我的个人博客:https://midoq.github.io/ 引言 最近做边缘计算项目,因为没有基础,所以首先学习Kubernetes.感觉系统的中文入门资料比较少,只找到<Kuber ...
- 【翻译】Kubernetes的未来--以及为什么开发人员在2022年应该超越Kubernetes的目光...
作者:Michael Vittrup Larsen 2022年3月4日 客串文章,最初发表在Eficode的博客上,作者Michael Vittrup Larsen Kubernetes在容器编排中无 ...
- Kubernetes 是下一代操作系统 | 面向 Kubernetes 编程
此文章适合没有任何 Kubernetes/容器/Docker 经验的同学 - 在不久的将来,你不懂如何操作 Kubernetes 接口,就等于现在的你不懂最普通的 Linux 命令.此文章阅读耗时大概 ...
- 初学者的Kubernetes圣经
在开始撰写本文之前,我想问你几个问题. 你或你的团队是否需要使用Kubernetes进行容器编排?你想学习Kubernetes是否很困惑从哪里开始? 你愿意改变你的组织吗?你想简化容器软件编排吗?然后 ...
- 初学者的Kubernetes圣经 1
在开始撰写本文之前,我想问你几个问题. 你或你的团队是否需要使用Kubernetes进行容器编排?你想学习Kubernetes是否很困惑从哪里开始? 你愿意改变你的组织吗?你想简化容器软件编排吗?然后 ...
- Kubernetes基本入门-名称空间资源(三)
名称空间级资源 名称空间在kubernetes中主要的作用是做资源隔离,因此名称空间级别的资源只在当前名称空间下有效. 工作负载型资源 工作负载(workload)是在Kubernetes上运行的应用 ...
- 【翻译】如何在Nutanix Karbon上并排运行容器和虚拟机
发布日期:2021年10月11日 Nutanix高级系统可靠性工程师Nimal Kunnath的特邀文章 全世界的组织正在以惊人的速度采用Kubernetes和云原生技术.容器已经成为打包应用的新规范 ...
- 初识容器集群管理系统 Kubernetes
什么是 Kubernetes Kubernetes 是 Google 2014 年创建管理的,是 Google 10 多年大规模容器管理技术 Borg 的开源版本. Kubernetes 是容器集群管 ...
最新文章
- 安装APK,启动系统Activity
- 对Julia社区不熟悉?创始人来告诉你
- Problem 58 怎样判断当前程序链接的是多线程版的Glibc还是单线程版的Glibc?
- Cubieboard ARM 集群
- JAVA JDBC连接mysql编程
- HDP 2.6 requires libtirpc-devel
- 计算机检索技术与技巧的检索式为,第四章计算机检索技术和数据库检索方式.ppt...
- DWZ富客户端框架设计思路与学习建议
- UIButton 的简单运用
- ztree在onCheck()方法中防止因触发联动关系导致页面多次渲染而卡死的问题
- TableViewCell的折展(Masonry)
- React小书没提到但是很有用的基础知识
- idea快捷键,可摆脱鼠标
- Lib9的bada版本移植完毕
- Window环境下 Jenkins Master/Slaver模式 + Svn 部署
- 走出NASA,向大地“下战书”,他要用卫星遥感数据改变中国农业
- Java连接数据库通用的增删改操作
- OpenGL with QtWidgets:练习之甜甜圈
- 组合数据类型练习,英文词频统计实例
- 中国互联网还不到躺平的时候!
热门文章
- node 压缩图片_Tinypng - 比ps更厉害的免费图片压缩神器
- 修改图片尺寸包括两种情况
- 实时获取Android手机CPU占用率
- c语言判定条件 i什么意思,c语言 if(!x)中条件!x是什么意思
- 选择阿里云服务器的理由
- org.apache.ibatis.binding.BindingException: Mapper method 'com.hahah.atcrowdfunding.manager.dao.Cert
- 210 Ruby 方法、类和模块【Rails后端开发训练营】
- php ios表情包,php 处理APP emoji表情包 IOS表情包 Mysql保存手机表情
- Android新浪微博分页加载,Android仿新浪微博分页管理界面(3)
- 无需花生壳,阿里云解析实现内网穿透