在任何地方部署Kubernetes

容器技术所提供的解耦能力,让应用程序及其依赖程序不用再和操作系统耦合在一起。和处理虚拟机镜像方式不同,容器技术并不会将操作系统同应用程序打包在一起,这给我们节约了相当多的硬件资源,不管是cpu、内存,还是磁盘空间。同时,容器的下载,更新,部署和迭代的速度,也远比虚拟机镜像要快。因此,容器技术已经在技术圈中引起不小的变革。类似谷歌、微软和亚马逊这样子的公司都已经开始使用这项技术。

容器技术在带来变革的同时,也给容器的编排和管理等需求的实现,带来了相当激烈的竞争。作为谷歌的开源容器编排系统,Kubernetes已经成为了该领域中领先的解决方案。而它之所以能够在这种竞争中领先于Amazon的 ECS 和 Docker Swarm,主要是因为如下三个主要原因。

  • 云原生设计:赋能应用程序的部署和升级
  • 开源的特征:快速创新和兼容性(即避免强依赖于某特定厂商)
  • 可移植性:支持在云端、本地、虚拟机等任意环境的部署

下图表明了Kubernetes在 云原生部署 中扮演的角色:

Kubernetes容器集群管理

我们看到,Kubernetes可以部署、管理包括NGINX,MySQL,Apache等等在内的诸多容器化应用程序。同时它也提供了对容器的布局,缩放,复制,监视等能力。

一旦我们选定想要使用的容器编排平台,就可以开始部署Kubernetes了。正如前面提到的,Kubernetes拥有很好的可移植性。这主要是因为同一个Kubernetes镜像和配置,不管是在笔记本电脑,云端或本地端,都能正常工作。

以下是部署Kubernetes的三种方案。

1. Kubernetes即服务(KaaS)

Platform9StackPoint.io 都属于KaaS这种方案。

KaaS,使我们在能够在各种不同的基础设施中都部署Kubernetes:不管是在公共云中,或者仅仅只是本地的部署。选择这种方法作为Kubernetes集群方案的好处如下:

  1. KaaS供应商所提供的升级、监控和技术支持服务
  2. 混合云或多云环境下可扩展性强
  3. 在单窗格视窗中获取多个集群的信息
  4. 基于负载可弹性伸缩的、高可用多主Kubernetes 集群
  5. 单点登录、命名空间隔离等常见企业级功能的集成,以及通过Helm图表来部署应用程序的能力
  6. 在跨云或跨数据中心混合环境中提供真正无缝的集群联合能力。
KaaS

2.提供Kubernetes服务的云平台

Google Cloud Platform和Microsoft Azure分别通过Google容器引擎(GKE)和Azure容器服务(ACS)来提供Kubernetes 相关的服务。将容器放置在公共云中可以让我们快速启动,但是我们的数据也将因此保存在外网,不受本地防火墙保护。

在诸多云供应商提供的方案中,Google的GKE处于领先地位。谷歌在容器技术的使用上已经有超过十年的经验(来源:TheNextPlatform)。通过其内部的一集群管理系统Borg,谷歌大量的内部项目都用到了容器技术。Microsoft的ACS在这方面和GKE比起来,就要稚嫩得多。而且ACS对于Kubernetes的支持也仅仅是从2017年二月才开始的。尽管如此,ACS也有它自己的优点:它的灵活性要更好。用户可以自助选择想要的容器编排平台(Kubernetes,Docker Swarm,DCOS)

;而且除了Linux之外,ACS也让用户可以在Windows上来部署容器化的应用程序。如下图所示,GKE和ACS完全基于公有云,Kubernetes服务和提供该服务的基础云设施都是由云服务提供商部署和管理的。

如下所示,GKE和ACS完全基于公有云,Kubernetes服务和基础架构由托管提供商部署和管理。

托管Kubernetes的基础设施

3.本地部署

如果要在本地部署Kubernetes,Minikube是首选方案。它支持包括VirtualBox,VMware Fusion,KVM和xhyve

在内的各种虚拟层,也支持包括OSX,Windows和Linux在内的各种操作系统。下面的插图进一步描述了基于Minikube部署Kubernetes的方式

使用Minikube来部署应用

如上所示,用户可以使用Minikube的命令行程序或者Kubernetes的原生命令行来与用于部署的笔记本电脑进行交互。Minikube命令行程序可用于在虚拟机上启动,停止,删除,获取状态以及执行其他操作。一旦Minikube虚拟机启动,Kubectl 命令行程序将在Kubernetes集群上执行操作。以下命令可用于启动现有的Minikube虚拟机并创建NGINX Kubernetes部署:

#  minikube start

# cat > example.yaml<<EOF

apiVersion: apps/v1beta1

kind: Deployment

metadata:

  name: nginx-deployment

spec:

  replicas: 1

  template:

    metadata:

      labels:

        app: nginx

    spec:

      containers:

      - name: nginx

        image: nginx

        ports:

        - containerPort: 80

EOF

# kubectl create -f example.yaml

总结

Kubernetes即服务(KaaS)、Kubernetes托管的基础云平台和Minikube,是仅有的三种部署Kubernetes的方式。请参考以下部署指南,来了解各种不同部署模型,注意事项,优缺点以及对比等更详细的信息。

接下来

本文的版权归 Drew Zhong 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Ken的杂谈

【系统设置】CentOS 修改机器名

18230
来自专栏前端桃园

知识体系解决迷茫的你

最近在星球里群里都有小伙伴说道自己对未来的路比较迷茫,一旦闲下来就不知道自己改干啥,今天我这篇文章就是让你觉得一天给你 25 个小时你都不够用,觉得睡觉都是浪费...

22340
来自专栏钱塘大数据

理工男图解零维到十维空间,烧脑已过度,受不了啦!

让我们从一个点开始,和我们几何意义上的点一样,它没有大小、没有维度。它只是被想象出来的、作为标志一个位置的点。它什么也没有,空间、时间通通不存在,这就是零维度。

34330
来自专栏微信公众号:小白课代表

不只是软件,在线也可以免费下载百度文库了。

不管是学生,还是职场员工,下载各种文档几乎是不可避免的,各种XXX.docx,XXX.pptx更是家常便饭,人们最常用的就是百度文库,豆丁文库,道客巴巴这些下载...

44630
来自专栏怀英的自我修炼

考研英语-1-导学

英二图表作文要重视。总体而言,英语一会比英语二难点。不过就写作而言,英语二会比英语一有难度,毕竟图表作文并不好写。

12110
来自专栏腾讯社交用户体验设计

ISUX Xcube智能一键生成H5

51420
来自专栏FSociety

SQL中GROUP BY用法示例

GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类...

5.2K20
来自专栏腾讯高校合作

【倒计时7天】2018教育部-腾讯公司产学合作协同育人项目申请即将截止!

15920
来自专栏haifeiWu与他朋友们的专栏

复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负...

29940
来自专栏钱塘大数据

中国互联网协会发布:《2018中国互联网发展报告》

在2018中国互联网大会闭幕论坛上,中国互联网协会正式发布《中国互联网发展报告2018》(以下简称《报告》)。《中国互联网发展报告》是由中国互联网协会与中国互联...

13750

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励