问题描述
我正在 kubernetes 中创建一个服务。如何将传统负载均衡器更改为网络负载均衡器?我正在转向它提供的外部客户端 IP 的网络负载平衡器。我使用 AWS。这是我的配置:
apiVersion : apps/v1
kind: Deployment
Metadata:
name: my-web-deployment-multi-pod
labels:
app : my-k8s-deployment
spec:
replicas: 3
selector:
matchLabels:
project: cia
template:
Metadata:
labels:
project: cia
spec:
containers:
- name : my-web
image: adv4000/k8sPHP:latest
ports:
- containerPort: 80 # Port on Pod
- name : not-my-web
image: tomcat:8.5.38
ports:
- containerPort: 8080 # Port on Pod
apiVersion: v1
kind: Service
Metadata:
name: my-multi-pods-service
spec:
type: LoadBalancer
selector:
project: cia
ports:
- name : my-web-app-listener
protocol : TCP
port : 80
targetPort: 80
- name : not-my-web-app-listener
protocol : TCP
port : 8888
targetPort: 8080
解决方法
要在 AWS 上使用网络负载均衡器,请使用注释 service.beta.kubernetes.io/aws-load-balancer-type
,并将值设置为 nlb
。
您的服务最终将如下所示:
apiVersion: v1
kind: Service
metadata:
name: my-multi-pods-service
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
spec:
type: LoadBalancer
selector:
project: cia
ports:
- name : my-web-app-listener
protocol : TCP
port : 80
targetPort: 80
- name : not-my-web-app-listener
protocol : TCP
port : 8888
targetPort: 8080
要进一步阅读,请看:https://kubernetes.io/docs/concepts/services-networking/service/#aws-nlb-support