在任何地方部署Kubernetes

时间:2022-04-22
本文章向大家介绍在任何地方部署Kubernetes,主要内容包括1. Kubernetes即服务(KaaS)、2.提供Kubernetes服务的云平台、3.本地部署、总结、接下来、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

容器技术所提供的解耦能力,让应用程序及其依赖程序不用再和操作系统耦合在一起。和处理虚拟机镜像方式不同,容器技术并不会将操作系统同应用程序打包在一起,这给我们节约了相当多的硬件资源,不管是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的方式。请参考以下部署指南,来了解各种不同部署模型,注意事项,优缺点以及对比等更详细的信息。

接下来