K8s Nginx Ingress Controller 简介

K8s Nginx Ingress Controller 简介

在Kubernetes集群中,Ingress作为集群内服务对外暴露的访问接入点,几乎承载着集群内服务访问的所有流量。

Ingress是Kubernetes中的一个资源对象,用来管理集群外部访问集群内部服务的方式。您可以通过Ingress资源来配置不同的转发规则,从而实现根据不同的规则设置访问集群内不同的Service所对应的后端Pod。

k8s 暴露服务的方式

k8s 暴露服务的方式

将服务的类型设置成NodePort-每个集群节点都会在节点上打 开 一个端口, 对于NodePort服务, 每个集群节点在节点本身(因此得名叫 NodePort)上打开一个端口,并将在该端口上接收到的流量重定向到基础服务。 该服务仅在内部集群 IP 和端口上才可访间, 但也可通过所有节点上的专用端口访问。

K8s 的一些设计理念

K8s 的一些设计理念

分析和理解 K8s 的设计理念可以使我们更深入地了解 Kubernetes 系统,更好地利用它管理分布式部署的云原生应用,另一方面也可以让我们借鉴其在分布式系统设计方面的经验。

K8s 多集群

K8s 多集群

在探讨为什么需要 K8s 多集群之前,我们首先定义一下什么是 K8s 多集群:

所谓 K8s 多集群,顾名思义就是多个 K8s 集群。企业或组织可能根据自身的需求,例如为了满足隔离性、可用性、合规性或使用成本等,将其应用程序运行在任意一个或多个集群中。此外,在更加成熟的 K8s 多集群中,应用程序实际运行的集群能够动态配置,不同集群间的应用程序也应该支持相互访问。

k8s 服务网格(Service Mesh)

k8s 服务网格(Service Mesh)

希腊语言中大概是风帆的意思, 发音 [iːst’iəʊ] ,相当于中文的 伊斯特亿欧。

  • 服务网格并没有给我们带来新功能,它是用于解决其他工具已经解决过的问题,只不过这次是在云原生的 Kubernetes 环境下的实现。
  • MVC 三层 Web 应用程序架构下,服务之间的通讯并不复杂,在应用程序内部自己管理即可,但是在现今的复杂的大型网站情况下,单体应用被分解为众多的微服务,服务之间的依赖和通讯十分复杂,出现了 Twitter 开发的 Finagle、Netflix 开发的 Hystrix 和 Google 的 Stubby 这样的 ”胖客户端“ 库,这些就是早期的服务网格,但是它们都近适用于特定的环境和特定的开发语言,并不能作为平台级的服务网格支持。
  • 在云原生架构下,容器的使用给予了异构应用程序的更多可行性, Kubernetes 增强的应用的横向扩容能力,用户可以快速的编排出复杂环境、复杂依赖关系的应用程序,同时开发者又无须过分关心应用程序的监控、扩展性、服务发现和分布式追踪这些繁琐的事情而专注于程序开发,赋予开发者更多的创造性。

服务网格有如下几个特点: