在Kubernetes 中,Ingress 和 Service 是两个不同的概念,但它们通常一起使用以提供对应用程序的外部访问。以下是它们之间的关系:
-
Service:
- Service 是 Kubernetes 中一种用于暴露应用程序的网络服务的抽象。
- Service 可以将 Pod 组织成一个单一的访问点,并提供负载均衡以确保流量被均匀分配到这组 Pod 中。
- Service 主要用于集群内部的服务发现和负载均衡,通常使用 ClusterIP、NodePort 或 LoadBalancer 类型。
-
Ingress:
- Ingress 是 Kubernetes 中用于公开和管理集群中服务的 API 对象。
- Ingress 允许从集群外部访问集群内部的服务,提供了一种将外部流量路由到集群内 Service 的机制。
- Ingress 定义了规则,指定了外部流量如何映射到后端服务。这些规则可能包括主机名、路径和后端服务的映射关系。
-
关系:
- Ingress 通常与 Service 一起使用,将外部流量引导到 Service。
- Ingress 规则中的后端服务通常是指已在集群内定义的 Service。
- Service 通过 ClusterIP 暴露在集群内,而 Ingress 则负责将流量从集群外部引导到这些 Service 上。
例子:
假设有一个 Service 和一个相应的 Ingress:
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 8080
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /app
pathType: Prefix
backend:
service:
name: myapp-service
port:
number: 80
在这个例子中,myapp-service
是一个 Service,myapp-ingress
是一个 Ingress,规定了将 myapp.example.com/app
的请求路由到 myapp-service
Service 中。流量从 Ingress 进入集群,然后被路由到相应的 Service。
网友评论