什么是云原生
可以简单看做就是K8S。将项目全部都通过K8S部署。
实际上,云原生是一条最佳路径或者最佳实践。更详细的说,云原生为用户指定了一条低心智负担的、敏捷的、能够以可扩展、可复制的方式最大化地利用云的能力、发挥云的价值的最佳路径。
因此,云原生其实是一套指导进行软件架构设计的思想。按照这样的思想而设计出来的软件:首先,天然就“生在云上,长在云上”;其次,能够最大化地发挥云的能力,使得我们开发的软件和“云”能够天然地集成在一起,发挥出“云”的最大价值。
所以,云原生的最大价值和愿景,就是认为未来的软件,会从诞生起就生长在云上,并且遵循一种新的软件开发、发布和运维模式,从而使得软件能够最大化地发挥云的能力。说到了这里,大家可以思考一下为什么容器技术具有革命性?
其实,容器技术和集装箱技术的革命性非常类似,即:容器技术使得应用具有了一种“自包含”的定义方式。所以,这样的应用才能以敏捷的、以可扩展可复制的方式发布在云上,发挥出云的能力。这也就是容器技术对云发挥出的革命性影响所在,所以说,容器技术正是云原生技术的核心底盘。
什么是 Service Mesh
如果用一句话来解释什么是 Service Mesh,可以将它比作是应用程序或者说微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控。对于编写应用程序来说一般无须关心 TCP/IP 这一层(比如通过 HTTP 协议的 RESTful 应用),同样使用 Service Mesh 也就无须关心服务之间的那些原来是通过应用程序或者其他框架实现的事情,比如 Spring Cloud、OSS,现在只要交给 Service Mesh 就可以了。
Kubernetes 中的服务发现和负载均衡
微服务中最基础的服务注册发现功能来说,其方式分为客户端服务发现和服务端服务发现两种,Java 应用中常用的方式是使用 Eureka 和 Ribbon 做服务注册发现和负载均衡,这属于客户端服务发现,而在 Kubernetes 中则可以使用 DNS、Service 和 Ingress 来实现,不需要修改应用代码,直接从网络层面来实现。
Kubernetes 中的应用将作为微服务运行,但是 Kubernetes 本身并没有给出微服务治理的解决方案,比如服务的限流、熔断、良好的灰度发布支持等。而Service Mesh可以做到这些。
使用 Service Mesh 将可以有效的治理 Kubernetes 中运行的服务,当前开源的流行的 Service Mesh 有:
- Linkerd:由最早提出 Service Mesh 的公司 Buoyant 开源,创始人来自 Twitter
- Envoy:由 Lyft 开源,可以在 Istio 中使用 Sidecar 模式运行以作为数据平面,也可以基于它来构建自己的服务网格
- Istio:由 Google、IBM、Lyft 联合开发并开源
Kubernetes、Service Mesh、Serviceless 三者之间的关系:
- Kubernetes 负责应用的生命周期管理,最小的治理单元是 Pod;
- Service Mesh 解决服务间的流量治理,最小的治理单元是 Service(可以类比为 Kubernetes 中 Service 资源);
- 而 Serviceless 是更高一层的抽象,最小的治理单元是 APP;
Dubbo,SpringCloud和K8S横向对比
Cloud Foundry
Cloud Foundry是一个开源的平台即服务(PaaS),它提供给开发者自由的去选择云平台、开发框架和应用服务。Cloud Foundry最初由VMware发起,得到了业界广泛的支持,它使得开发者能够更快更容易的开发测试、部署和扩展应用。Cloud Foundry是一个开源项目,用户可以使用多种私有云发行版,也可以使用公共云服务,包括CoudFoundry.com。
Pivotal Cloud Foundry (PCF) 是一种可以直接部署开发人员写好的应用(如Jar或是War包)或已经构建的容器镜像的完整平台,基于Cloud foundry社区版。它可提供完整的调度能力实现这些应用负载,还可提供平台辅助服务,如负载均衡、高可用性、自动扩展、统一的日志记录等。
登录地址为登录页面,
可以看到,现在也已经停用了
Cloud Foundry 和 K8S
Cloud Foundry的优势在于:
- 成熟的身份验证系统UAA,用户组和multi-tenancy的支持
- 方便快捷的cf push
- 自带负载均衡Router
- 强大的日志和metrics整合
- 成熟的部署工具BOSH
Kubernetes的优势在于:
- 大量社区和第三方支持,提供强大的扩展性
- 完善的容器生命周期和自动伸缩管理
- 方便快捷的容器化应用部署
- 良好、多样的持久层支持
- 多种开源UI支持
Docker和K8S的爱恨情仇
Docker与k8s的恩怨情仇(一)—成为PaaS前浪的Cloud Foundry
Docker与k8s的恩怨情仇(二)—用最简单的技术实现“容器”
Docker与k8s的恩怨情仇(三)—后浪Docker来势汹汹
Docker与k8s的恩怨情仇(四)-云原生时代的闭源落幕
Docker与k8s的恩怨情仇(五)——Kubernetes的创新
Docker与k8s的恩怨情仇(六)—— “容器编排”上演“终结者”大片
Docker与k8s的恩怨情仇(七)—— “服务发现”大法让你的内外交互原地起飞
Docker与k8s的恩怨情仇(八)——蓦然回首总览Kubernetes
阿里云的云原生产品矩阵
参考
CNCF 官方大使张磊:什么是云原生?
什么是Service Mesh(服务网格)?
聊聊Cloud Foundry开源PaaS云平台
Spring Boot入门(10)利用Cloud Foundry Platform部署Spring Boot应用
Cloud Foundry和Kubernetes结合的过去与未来
Pivotal和谷歌共建Kubernetes(K8S)生态(上篇)
什么时候选Cloud Foundry而不是Kubernetes