云平台 LB(ingress-nginx) 中的HTTP2

在阿里云、AWS等云厂商,如果使用LB方式暴露ingress服务,通常支持在LB层通过注解的方式来配置ALPN策略。

在aws中, LB 通过service.beta.kubernetes.io/aws-load-balancer-alpn-policy 字段,配置 TLS ALPN 策略,支持如下配置:

  • HTTP1Only仅协商 HTTP/1.*。ALPN 首选项列表为 http/1.1、http/1.0。
  • HTTP2Only仅协商 HTTP/2。ALPN 首选项列表为 h2。
  • HTTP2Optional优先使用 HTTP/1.* 而不是 HTTP/2(这对 HTTP/2 测试很有用)。ALPN 的首选列表是 http/1.1、http/1.0、h2。
  • HTTP2Preferred优先使用 HTTP/2,而不是 HTTP/1。*。ALPN 优先列表为 h2、http/1.1、http/1.0。
  • None不协商 ALPN。这是默认设置。

在web端可以查看到配置后的信息。
在这里插入图片描述
配置后通过curl --http2 方式方案,查看协商过程:
当配置采用HTTP2Preferred时,curl协商到的则为http2。
在这里插入图片描述
浏览器访问协议为h2:
在这里插入图片描述

在 Kubernetes 集群中,Service 是一种虚拟的访问入口,用于将请求转发到后端的 Pod。当你创建一个 Service 时,Kubernetes 会为该 Service 创建一个 Cluster IP,用于在集群内部进行访问,而且这个 IP 只能在集群内部进行访问。因此,在默认情况下,如果你通过集群外部的 IP 直接访问 Service,是无法成功的。 如果你希望从集群外部访问 Kubernetes 中的 Service,可以使用 Kubernetes Ingress 或者 NodePort 来实现。其中,Ingress 可以将多个 Service 绑定到同一个域名下,并通过反向代理来转发请求;而 NodePort 可以将 Service 暴露在 Kubernetes Node 的 IP 和一个固定的端口上,从而可以通过 Node 的 IP 和端口来访问 Service。 在腾讯云上部署 Kubernetes 时,你可以使用 TKE Ingress 或者腾讯云负载均衡来实现 Ingress 的功能,也可以使用腾讯云 CLB 来实现 NodePort 的功能。具体来说,你需要在创建 Ingress 或者 Service 时,配置相应的 annotations 或者标签,来指定使用 TKE Ingress、腾讯云负载均衡或者 CLB。例如,你可以使用以下 annotations 来创建一个 Ingress,并通过腾讯云负载均衡来实现 Ingress 的负载均衡功能: ``` apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: example-ingress annotations: ingress.cloud.tencent.com/group-name: "example-group" # 指定负载均衡器的分组名称 ingress.cloud.tencent.com/load-balance-id: "lb-xxxxxxxx" # 指定负载均衡器的 ID spec: rules: - host: example.com http: paths: - path: /foo backend: serviceName: example-service servicePort: 80 ``` 这样,在创建 Ingress 对象时,Kubernetes 会自动创建一个负载均衡器,并将请求转发到后端的 Service 上。需要注意的是,不同的云平台提供的负载均衡器的配置方式和限制可能不同,具体可以参考相应的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值