项目环境搭建【Docker+k8s】十一 || kubernetes Ingress 简介

1、内部访问方式ClusterIp

ClusterIp是Kubernetes的默认访问方式,它给你一个集群内的服务,集群内的其他应用都可以访问该服务,集群外部无法访问它,
何时使用Kubernetes的Proxy模式来访问服务?

  • 由于某些原因,你需要调试你的服务,或者需要直接通过笔记本电脑去访问它们。
  • 容许内部通信,展示内部仪表盘等。

2、三种外部访问方式

2.1、NodePort

NodePort服务是引导外部流量到你的服务的最原始方式。在所有节点(虚拟机)上开放一个特定端口,任何发送到该端口的流量都被转发到对应服务。

NodePort服务特征如下:

  • 每个端口只能是一种服务
  • 端口访问只能是30000-32767(可调),如果不指定端口,系统将选择一个随机端口。
  • 不在YAML配置文件中指定则会分配一个默认端口

注意:不建议在生产环境中使用这种方式暴露服务,如果你运行的服务不要求一直可用,或者对成本比较敏感,你可以使用这种方法。
这样的应用的最佳例子是 demo 应用,或者某些临时应用。大多数时候我们应该让Kubernetes来选择端口。

2.2、LoadBalancer

LoadBalancer服务是暴露服务到internet的标准方式。所有通往你指定的端口的流量都会被转发到对应的服务。
它没有过滤条件,没有路由等。这意味着你几乎可以发送任何种类的流量到该服务,像HTTP,TCP,UDP,WebSocket,gRPC或其他任意种类,
它将给你一个单独的IP地址,转发所有流量到你的服务。这个方式的最大缺点是每一个用LoadBalancer暴露的服务都会有它自己的IP地址。

2.3、Ingress

有别于以上所有例子,Ingress事实上不是一种服务类型。相反,它处于多个服务的前端,扮演着“智能路由”或者集群入口的角色。
你可以用Ingress来做许多不同的事情,各种不同类型的Ingress控制器也有不同的能力。
它允许你基于路径或者子域名来路由流量到后端服务。例如,你可以将任何发往域名 foo.yourdomain.com 的流量转到 foo 服务,将路径 yourdomain.com/bar/path 的流量转到 bar 服务。

Ingress可能是暴露服务的最强大方式,但同时也是最复杂的。Ingress 控制器有各种类型,
包括 Google Cloud Load Balancer, Nginx,Contour,Istio,等等。它还有各种插件,比如 cert-manager,它可以为你的服务自动提供 SSL 证书。
如果你想要使用同一个 IP 暴露多个服务,这些服务都是使用相同的七层协议(典型如 HTTP),那么Ingress 就是最有用的。
如果你使用本地的 GCP 集成,你只需要为一个负载均衡器付费,且由于 Ingress是“智能”的,你还可以获取各种开箱即用的特性(比如 SSL、认证、路由等等)。

3、学习交流QQ群【883210148】

alt QQ群

4、关注微信公众号,免费获取文档及资源

alt 微信公众号

原文地址:https://www.cnblogs.com/kevin-ying/p/12360605.html