【译者的话】本文分析介绍了三种主流的Kubernetes部署方式,为广大Kubernetes的使用者提供了很好的参考借鉴。
【烧脑式Kubernetes实战训练营】本次培训理论结合实践,主要包括:Kubernetes架构和资源调度原理、Kubernetes DNS与服务发现、基于Kubernetes和Jenkins的持续部署方案 、Kubernetes网络部署实践、监控、日志、Kubernetes与云原生应用、在CentOS中部署Kubernetes集群、Kubernetes中的容器设计模式、开发Kubernetes原生应用步骤介绍等。
当您转向云原生开发和部署时,让我们来看看Kubernetes所扮演的角色,以及如何从编排中获得更丰富的功能。
容器提供了将应用程序及其依赖关系与操作系统分离的功能。通过一种有别于虚拟机镜像打包操作系统的方式,容器可以节省大量的系统资源:计算,内存和磁盘空间。容器下载,更新,部署和迭代的速度也更快。因此,在技术世界中,容器已经引起了微型革命,并被Google,微软和亚马逊等公司所采纳。
容器微型革命也带来了激烈的竞争,竞争满足了容器编排和管理的需要。作为Google的开源容器编排引擎,Kubernetes已经成为领先的解决方案(包括Amazon ECS和Docker Swarm等),主要原因有三:
- 云原生设计:支持下一代应用程序的部署和运行
- 开源的本质:快速创新,避免供应商锁定
- 高可移植性:无论是在云、本地还是虚拟机环境中都可以部署。
下图展示了Kubernetes在您的云原生部署中可以扮演的角色:
Kubernetes容器编排
如您所见,Kubernetes可以部署和管理您的容器化应用程序,包括NGINX,MySQL,Apache等。它可以为容器提供调度,伸缩,复制,监控和其他功能。
一旦您选择了容器编排平台,下一步就是部署Kubernetes。如前所述,Kubernetes是一种轻量级解决方案。因为Kubernetes使用相同的镜像和配置,它在您的笔记本电脑、云端或本地的工作方式完全相同。
Kubernetes-as-a-Service
这些解决方案提供了在各种基础设施(公有云或内部部署)中部署Kubernetes的能力。Kubernetes集群选择这种方式的优点包括:
- 通过KaaS提供商进行升级、监控和获取支持;
- 混合云或多云环境的轻松扩展
- 多个集群的统一视图
- 高度可用的多master Kubernetes集群,根据工作负载自动扩容缩容
- 通用企业集成,如SSO/隔离命名空间;以及通过Helm charts部署应用程序的能力
- 集群联邦,可在多个云或数据中心之间提供真正无缝的混合环境
Kubernetes-as-a-Service
Kubernetes-as-a-Service解决方案的示例包括Platform9和StackPoint.io。
托管的基础设施
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<
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的三种方式。有关各种部署模型,注意事项,优缺点和逐项比较的详细分析,请参阅以下部署指南。
下一步
- 看看部署Kubernetes的终极指南
- 尝试通过sandbox使用Kubernetes
原文链接:Deploy Kubernetes Anywhere (翻译:付辉)