在审查一个项目时,我发现了一个让我很感兴趣的定义:使用 Ingress 和 LoadBalancer 类型的服务,而无需在Kind上安装负载均衡器本身。按照定义,它似乎有效,但我不知道为什么。我说它有效,因为我能够按预期在浏览器上卷曲应用程序。
代码:
apiVersion: apps/v1
kind: Deployment
metadata:
name: server
labels:
app: server
spec:
replicas: 1
selector:
matchLabels:
app: server
template:
metadata:
labels:
app: server
spec:
containers:
- name: server
image: localhost:5000/server:2.0
---
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: server
name: server
spec:
type: LoadBalancer
selector:
app: server
ports:
- port: 8080
targetPort: 8080
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: server
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: server
port:
number: 8080
我认为先点击 Ingress,然后再点击 LoadBalancer 会导致一些重定向问题。我对这种情况的选择是一个简单的 ClusterIP,这个答案同意。如果集群上没有安装 MetalLB,LoadBalancer 在这里做什么? 这可能需要这样的东西,但据我所知,负载均衡器本身就是集群外部的资源,即:云提供商负载均衡器。