amazon-web-services - AWS/Kubernetes - 粘性选项不适用于 TCP 协议
问题描述
为什么默认负载均衡器端口 80 和 443 被视为 TCP 端口?我想通过 yaml 文件或通过 aws 控制台测试aws 文档中显示的粘性。
我正在使用 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
---
解决方案
粘性需要在 OSI 模型的第 7 层中运行的侦听器,在CLB的情况下,它由侦听器提供。http
https
由于您使用的是在layer 3TCP
中运行的侦听器,因此不支持粘性。因此,如果您想使用粘性会话,则必须更改为或侦听器。 http
https
UDP
并且SCTP
是 CLB 的无效侦听器。它仅支持TCP
、HTTP
和。HTTPS
SSL
推荐阅读
- colors - THREE.js 使用 lerpColors 制作渐变
- java - 为什么我的 leetcode 递归回溯方法使用这样的参数是错误的?
- python - 在 Matplotlib 中绘制 K-Means:ValueError:x 和 y 必须具有相同的第一维,但具有形状 (10,) 和 (1,)
- r - 在 R 中保存指定环境的语法是什么?
- tensorflow - 神经网络回归的 NaN 泊松损失值
- swift - NSFont.TextStyleOptionKey 中可以使用哪些值
- python - 如何防止版主在 discord.py 中互相使用版主命令?
- azure - 证书 VerifyNoRevocation() 在 Azure APIM 中返回 false - 幕后发生了什么?
- laravel - Laravel 8 - 没有数据库连接的资源路由
- pydantic - 如何使用 pydantic 创建 MappingModel?