我们在 AWS 区域内的 EKS 集群中进行了跨 AZ 部署,其中每个 AZ 都是独立的,这意味着组件不会与不在同一 AZ 中的其他组件通信。
我们使用 Contour 作为我们的入口,并有不同的守护程序集,每个 AZ 一个。因此,我们还为每个守护程序集定义了不同的服务。
将服务部署到 EKS 时,会创建两个不同的 NLB。
我们希望只有一个 NLB 将在服务之间共享。
问题是:它可以实现吗?如果可以,那么如何实现?
我们在 AWS 区域内的 EKS 集群中进行了跨 AZ 部署,其中每个 AZ 都是独立的,这意味着组件不会与不在同一 AZ 中的其他组件通信。
我们使用 Contour 作为我们的入口,并有不同的守护程序集,每个 AZ 一个。因此,我们还为每个守护程序集定义了不同的服务。
将服务部署到 EKS 时,会创建两个不同的 NLB。
我们希望只有一个 NLB 将在服务之间共享。
问题是:它可以实现吗?如果可以,那么如何实现?
是的,您应该能够通过在Service
.
在DaemonSet
您使用的每一个中,您都在 Pod- 中为 pod 设置了标签template
。
例如
template:
metadata:
labels:
app: contour
az: az-1
和
template:
metadata:
labels:
app: contour
az: az-2
现在,在您的负载均衡器服务中,您需要使用 与两个 DaemonSet 上的 Pod 匹配的选择器,例如app: contour
示例服务
apiVersion: v1
kind: Service
metadata:
name: my-service
annotation:
service.beta.kubernetes.io/aws-load-balancer-type: nlb
spec:
selector:
app: contour # this needs to match the Pods in all your DaemonSets
ports:
- protocol: TCP
port: 80
type: LoadBalancer