为什么默认负载均衡端口80和443被认为是TCP端口?我想通过yaml文件或通过亚马逊网络服务控制台测试粘性,如aws docs中所示。
我正在使用nginx入口,并转移到默认负载均衡器来测试粘性,但我看到了错误Stickiness options not available for TCP protocols

我甚至尝试指定协议https,但它不接受。它只允许"SCTP", "TCP", "UDP"。
apiVersion: v1
kind: Service
metadata:
name: httpd
labels:
app: httpd-service
namespace: test-web-dev
spec:
#type: LoadBalancer
selector:
app: httpd
ports:
- name: port-80
port: 80
targetPort: 80
- name: port-443
port: 443
targetPort: 443
- name: port-1234
port: 1234
protocol: TCP
targetPort: 1234当我尝试入口时,我禁用了上面的服务类型Loadbalancer
nginx-ingress-lb-service.yml
apiVersion: v1
kind: ConfigMap
metadata:
name: tcp-services
namespace: ingress-nginx
data:
1234: "test-web-dev/httpd:1234"
---
kind: Service
apiVersion: v1
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
externalTrafficPolicy: Local
type: LoadBalancer
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- name: http
port: 80
protocol: TCP
targetPort: http
- name: https
port: 443
protocol: TCP
targetPort: https
- name: port-1234
port: 1234
protocol: TCP
targetPort: 1234
---发布于 2020-12-10 14:14:59
Stickiness需要运行在OSI model的layer 7中的listener,如果是负载均衡,则由http和https listener提供。
由于您使用的是在layer 3中运行的TCP listener,因此不支持粘性。因此,如果您想使用粘滞会话,则必须将侦听器更改为 http或https 。
UDP和SCTP是无效的负载均衡监听器。仅支持TCP、HTTP、HTTPS和SSL。
https://stackoverflow.com/questions/65229226
复制相似问题