三种主流的Kubernetes部署方式

【译者的话】本文分析介绍了三种主流的Kubernetes部署方式,为广大Kubernetes的使用者提供了很好的参考借鉴。nginx

【烧脑式Kubernetes实战训练营】本次培训理论结合实践,主要包括:Kubernetes架构和资源调度原理、Kubernetes DNS与服务发现、基于Kubernetes和Jenkins的持续部署方案 、Kubernetes网络部署实践、监控、日志、Kubernetes与云原生应用、在CentOS中部署Kubernetes集群、Kubernetes中的容器设计模式、开发Kubernetes原生应用步骤介绍等。docker

当您转向云原生开发和部署时,让咱们来看看Kubernetes所扮演的角色,以及如何从编排中得到更丰富的功能。设计模式

容器提供了将应用程序及其依赖关系与操做系统分离的功能。经过一种有别于虚拟机镜像打包操做系统的方式,容器能够节省大量的系统资源:计算,内存和磁盘空间。容器下载,更新,部署和迭代的速度也更快。所以,在技术世界中,容器已经引发了微型革命,并被Google,微软和亚马逊等公司所采纳。api

容器微型革命也带来了激烈的竞争,竞争知足了容器编排和管理的须要。做为Google的开源容器编排引擎,Kubernetes已经成为领先的解决方案(包括Amazon ECSDocker Swarm等),主要缘由有三:bash

  • 云原生设计:支持下一代应用程序的部署和运行
  • 开源的本质:快速创新,避免供应商锁定
  • 高可移植性:不管是在云、本地仍是虚拟机环境中均可以部署。

下图展现了Kubernetes在您的云原生部署中能够扮演的角色:
网络


Kubernetes容器编排

如您所见,Kubernetes能够部署和管理您的容器化应用程序,包括NGINX,MySQL,Apache等。它能够为容器提供调度,伸缩,复制,监控和其余功能。架构

一旦您选择了容器编排平台,下一步就是部署Kubernetes。如前所述,Kubernetes是一种轻量级解决方案。由于Kubernetes使用相同的镜像和配置,它在您的笔记本电脑、云端或本地的工做方式彻底相同。app

Kubernetes-as-a-Service

这些解决方案提供了在各类基础设施(公有云或内部部署)中部署Kubernetes的能力。Kubernetes集群选择这种方式的优势包括:工具

  1. 经过KaaS提供商进行升级、监控和获取支持;
  2. 混合云或多云环境的轻松扩展
  3. 多个集群的统一视图
  4. 高度可用的多master Kubernetes集群,根据工做负载自动扩容缩容
  5. 通用企业集成,如SSO/隔离命名空间;以及经过Helm charts部署应用程序的能力
  6. 集群联邦,可在多个云或数据中心之间提供真正无缝的混合环境


Kubernetes-as-a-Service

Kubernetes-as-a-Service解决方案的示例包括Platform9StackPoint.iogoogle

托管的基础设施

Google Cloud Platform和Microsoft Azure分别经过Google容器引擎(GKE)和Azure Container Service(ACS)提供了Kubernetes。将容器放在公共云中能够快速启动,可是您的数据如今将驻留在网络外围和防火墙以外。

Google的GKE引领其余公共云供应商。Google经过名叫Borg的集群管理工具,普遍地在内部的项目中使用容器,并拥有超过十年的经验(来源:TheNextPlatform)。相比之下,微软的ACS是一个更年轻的产品,而Kubernetes的支持仅在2017年2月才推出。然而,ACS提供了灵活性:用户能够选择容器编排平台(Kubernetes,Docker Swarm,DCOS),还能够选择除了Linux以外的Windows上部署容器化应用程序。以下图所示,GKE和ACS彻底基于公有云,Kubernetes服务和基础设施由托管供应商部署和管理。


托管基础设施的Kubernetes

本地部署

Minikube是在本地部署Kubernetes的最流行的方式。它支持各类虚拟机管理程序,包括VirtualBox,VMware Fusion,KVM和xhyve以及OS,包括OSX,Windows和Linux。下图展现了Minikube的部署:


mini Kubernetes

如上所示,用户使用Minikube CLI和Kubectl(Kubernetes的本机CLI)与此笔记本电脑部署进行交互。Minikube CLI可用于启动,中止,删除,获取状态,并在虚拟机上执行其余操做。一旦Minikube虚拟机启动,Kubectl CLI会在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-as-a-service,Kubernetes托管基础设施,Minikube只是部署Kubernetes的三种方式。有关各类部署模型,注意事项,优缺点和逐项比较的详细分析,请参阅如下部署指南

下一步

原文连接:Deploy Kubernetes Anywhere (翻译:付辉)

相关文章
相关标签/搜索