在任何地方部署Kubernetes
容器技术所提供的解耦能力,让应用程序及其依赖程序不用再和操作系统耦合在一起。和处理虚拟机镜像方式不同,容器技术并不会将操作系统同应用程序打包在一起,这给我们节约了相当多的硬件资源,不管是cpu、内存,还是磁盘空间。同时,容器的下载,更新,部署和迭代的速度,也远比虚拟机镜像要快。因此,容器技术已经在技术圈中引起不小的变革。类似谷歌、微软和亚马逊这样子的公司都已经开始使用这项技术。
容器技术在带来变革的同时,也给容器的编排和管理等需求的实现,带来了相当激烈的竞争。作为谷歌的开源容器编排系统,Kubernetes已经成为了该领域中领先的解决方案。而它之所以能够在这种竞争中领先于Amazon的 ECS 和 Docker Swarm,主要是因为如下三个主要原因。
- 云原生设计:赋能应用程序的部署和升级
- 开源的特征:快速创新和兼容性(即避免强依赖于某特定厂商)
- 可移植性:支持在云端、本地、虚拟机等任意环境的部署
下图表明了Kubernetes在 云原生部署 中扮演的角色:
我们看到,Kubernetes可以部署、管理包括NGINX,MySQL,Apache等等在内的诸多容器化应用程序。同时它也提供了对容器的布局,缩放,复制,监视等能力。
一旦我们选定想要使用的容器编排平台,就可以开始部署Kubernetes了。正如前面提到的,Kubernetes拥有很好的可移植性。这主要是因为同一个Kubernetes镜像和配置,不管是在笔记本电脑,云端或本地端,都能正常工作。
以下是部署Kubernetes的三种方案。
1. Kubernetes即服务(KaaS)
Platform9和StackPoint.io 都属于KaaS这种方案。
KaaS,使我们在能够在各种不同的基础设施中都部署Kubernetes:不管是在公共云中,或者仅仅只是本地的部署。选择这种方法作为Kubernetes集群方案的好处如下:
- KaaS供应商所提供的升级、监控和技术支持服务
- 混合云或多云环境下可扩展性强
- 在单窗格视窗中获取多个集群的信息
- 基于负载可弹性伸缩的、高可用多主Kubernetes 集群
- 单点登录、命名空间隔离等常见企业级功能的集成,以及通过Helm图表来部署应用程序的能力
- 在跨云或跨数据中心混合环境中提供真正无缝的集群联合能力。
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的命令行程序或者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的方式。请参考以下部署指南,来了解各种不同部署模型,注意事项,优缺点以及对比等更详细的信息。
接下来
- 看看部署Kubernetes的终极指南
- 使用沙箱 来尝试Kubernetes
- 2014上半年国内安卓银行应用隐私泄露和安全隐患研究报告
- Do You Kown Asp.Net Core -- Asp.Net Core 2.0 未来web开发新趋势 Razor Page
- Metasploitable2使用指南
- 在渗透测试中使用fuzz技术(附windows安装指南)
- 黑了记者:写个恶意软件玩玩(二)
- 开源BUG跟踪平台JIRA目录遍历漏洞分析
- 黑了记者:写个恶意软件玩玩(一)
- 使用 Python 工具 Locust 进行负载测试
- 玩转Google的XSS游戏
- iOS基于GPUImage的图像形变设计(简单形变部分)
- 不错的node.js入门
- Sql语句收藏
- View-ForumsGroupView.ascx 读解
- GoAgent漏洞可能导致中间人攻击
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java开发必备 Git 分支开发:规范指南及完全学会Git的24堂课笔记
- 聊聊dubbo-go的failbackCluster
- 视频综合管理平台EasyNVS通道列表如何获得RTMP地址和RTSP地址?
- 【每周一库】 rust-ftp - an FTP client written in Rust
- Mall 电商实战项目发布重大更新,全面支持SpringBoot 2.3.0 !
- Python与Tableau相结合,万字长文搞定传统线下连锁店数据分析
- 社群答疑精选03:拆分数据到新工作表
- 【Rust日报】2020-08-08:用rust制作的一个Taskwarrior终端用户界面
- 【Rust日报】2020-08-09:1Paasword Linux版本
- 聊聊dubbo-go的failfastCluster
- Caused by: java.lang.ClassNotFoundException: Cannot find class: userMap
- 链路聚合实验
- 聊聊dubbo-go的failsafeCluster
- Phenotype : 大规模表型数据处理工具
- 聊聊dubbo-go的registryAwareCluster