前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在任何地方部署Kubernetes

在任何地方部署Kubernetes

作者头像
Drew Zhong
发布2018-01-18 10:12:53
1.5K0
发布2018-01-18 10:12:53

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

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

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

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

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
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来部署应用

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

代码语言:txt
复制
#  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的方式。请参考以下部署指南,来了解各种不同部署模型,注意事项,优缺点以及对比等更详细的信息。

接下来

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Kubernetes即服务(KaaS)
  • 2.提供Kubernetes服务的云平台
  • 3.本地部署
  • 总结
  • 接下来
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档