030 云原生之交付部署
我们将使用比较流行的开源工具 Minikube 来安装 Kubernetes,因为 Minikube 是基于虚拟机技术来搭建集群的,所以可以在 Windows10 或者 iOS 系统上运行它来搭建集群,也可以利用它在虚拟机上搭建单节点集群(因为虚拟机无法支持嵌套)。这里主要想阐述原理,因此仅以最简单的方式讨论单节点集群问题,而不讨论多节点集群的问题,也就是说当前主机即是集群的管理节点,并且也是工作节点。作为工作节点,Kubernetes 要求安装 Docker,因为默认情况下 Kubernetes 是通过 Docker 来控制容器创建的。
在生产系统中部署 Kubernetes,通常可以采用 Kubespray,它是基于 Ansible 开发的自动部署脚本,该项目是一个开源项目,代码仓库位于 GitHub,参见链接https://github.com/kubernetes-sigs/kubespray。
Nodeport:NodePort 服务是引导外部流量到你的服务的最原始方式。NodePort 在所有节点(虚拟机)上开放同一个特定端口,如图所示,如端口 36000,任何从客户端发送到该端口的流量都被转发到对应服务,然后通过服务转发给 Pod,Pod 完成实际的功能并沿相反路径返回结果。从客户端而言,必须知道不同虚拟机的网络地址。
Load Balancer: Load Balancer 是将服务发布到互联网上的标准方式,它会启动一个 Network Load Balancer,并提供一个独立的网络 IP 地址,将发送到该地址的所有流量转发到内部的服务。如图所示,所有来自客户端的请求都会首先到达 Load Balancer,然后由 Load Balancer 转发请求到服务端点,服务端点再将请求下发到实际的 Pod,由 Pod 实际处理业务,然后返回结果。Load Balander 的特点是会无条件转发所有的流量,这种方式有一个最大的优点也是缺点,那就是每个使用 Load Balancer 的服务都会有一个网络地址,所以每个用到 Load Balance 的服务都是要付费的。
Ingress:Ingress 不止为一个服务提供外部入口,而是为多个服务提供外部入口,因此它具有智能路由的功能,它可以根据路径或者子域名来路由流量到后端服务,如图所示,所有 alltasks 相关的流量都会被转发给相关的服务,而所有 addtask 相关的流量也会转发给另外一个 addtask 相关的服务,这样多个服务可以共享同一个 Load Balancer 服务。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/018b8599a33433396e6fa64cc】。文章转载请联系作者。
评论