云原生时代的 Kubernetes 部署

Posted DevOps社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生时代的 Kubernetes 部署相关的知识,希望对你有一定的参考价值。


如果你接触到云原生开发和部署,让我们来一起看看 Kubernetes 在其中所扮演的角色,并且学习如何从编排中获得更多的可用功能,今天的文章将向你提供几种方法来部署 Kubernetes。


容器提供了将应用程序及其依赖项与操作系统解耦的能力。因为其不同于虚拟机镜像打包操作系统的方式,容器可以节省大量的系统资源:计算、内存和磁盘空间。同时,容器还可以进行更快的下载、更新、部署和迭代。因此,在技术领域上来说,容器技术引领了一场技术革命,并被谷歌、微软和亚马逊等大佬级公司采用。


同样,由容器技术引领的这场技术革命也带了了激烈的竞争,来满足容器的编排和管理的需求。而 Kubernetes 在这样的竞争中能成为领先的解决方案(包括 Amazon ECS 和 Docker Swarm),主要原因有三:


  • 云原生设计:支持部署和运行下一代应用程序

  • 开源生态:快速创新,避免供应商的锁定

  • 可移植性:无论是在云、内部、虚拟机中,都可以在任意的地方进行部署


下图便显示了 Kubernetes 在你的云原生部署中所发挥的作用:


云原生时代的 Kubernetes 部署


如你所见,Kubernetes 可以部署和管理你的容器应用程序, 这其中包括了nginxmysql、Apache 等等。它可以为容器提供配置、缩放、复制、监听等其他功能。


一旦你选择了容器编排平台之后, 下一步便是部署 Kubernetes。如前所述, Kubernetes 是一个可轻松迁移的解决方案。因为 Kubernetes 使用相同的镜像和配置, 所以它在你的笔记本电脑、云或内部的工作方式完全相同。


Kubernetes-as-a-Service


这些解决方案赋予了在各种基础架构中部署 Kubernetes 的能力: 公有云或内部设施。为 Kubernetes 集群选择此方法的优点有:


1.通过 KaaS 提供的程序进行升级、监听和支持

2.混合云或对多重云环境的轻松扩展

3.多个集群的单窗格视图

4.高可用性、多 Kubernetes 集群可根据工作负载自动放大和缩小

5.通用企业集成,如 SSO /隔离命名空间;以及通过 Helm Chart 部署应用程序的能力

6.集群 Federation在多个云或数据中心之间提供真正的无缝混合环境


云原生时代的 Kubernetes 部署


托管基础架构


Google Cloud Platform 和 Microsoft Azure 分别通过 Google 容器引擎(GKE)和 Azure Container Service(ACS)提供了 Kubernetes 。将容器放在公有云中可进行快速启动,但你的数据将被放置在外围网络和防火墙之外。


Google 的 GKE 引领其他公有云供应商,它通过名为 Borg 的集群管理器,广泛地使用容器内部的项目,并拥有超过十年的经验。相比之下,微软的 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 的部署:

云原生时代的 Kubernetes 部署

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

#  minikube start# cat > example.yaml<<EOFapiVersion: apps/v1beta1kind: Deploymentmetadata:name: nginx-deploymentspec:replicas: 1template:metadata:  labels:    app: nginxspec:  containers:  - name: nginx    image: nginx    ports:    - containerPort: 80EOF# kubectl create -f example.yaml

点击“阅读原文”,可访问原文


这是DevOps实践社区

长按二维码就可以关注哦~

以上是关于云原生时代的 Kubernetes 部署的主要内容,如果未能解决你的问题,请参考以下文章

云原生时代的 YAML 教程

云原生 | Kubernetes篇Kubernetes简介

后云原生时代,Kubernetes:你看我还有机会吗?

Kubernetes 已经成为云原生时代的安卓,这就够了吗?

云原生之kubernetes实战使用docker作为运行时部署Kubernetes集群

云原生之kubernetes实战使用docker作为运行时部署Kubernetes集群