如果你配置了 Service,你可以选择 Kubernetes 支持的任何网络协议。
Kubernetes Service 支持以下协议
在定义 Service 时,还可以指定其使用的应用协议。
本文档详细介绍了一些特殊情况,它们通常都使用 TCP 作为传输协议。
Service 的端口 protocol 有 3 个有效值
SCTPKubernetes v1.20 [稳定]当使用支持 SCTP 流量的网络插件时,你可以对大多数 Service 使用 SCTP。对于 type: LoadBalancer 类型的 Service,SCTP 的支持取决于云服务提供商是否提供该功能。(大多数提供商不支持)。
运行 Windows 的节点不支持 SCTP。
对多宿主 SCTP 关联的支持要求 CNI 插件能够支持为 Pod 分配多个接口和 IP 地址。
多宿主 SCTP 关联的 NAT 需要在相应的内核模块中有特殊的逻辑支持。
TCP你可以对任何类型的 Service 使用 TCP,它是默认的网络协议。
UDP你可以对大多数 Service 使用 UDP。对于 type: LoadBalancer 类型的 Service,UDP 的支持取决于云服务提供商是否提供该功能。
如果云服务提供商支持,你可以使用处于 LoadBalancer 模式的 Service 来配置 Kubernetes 集群之外的负载均衡器,在一种特殊模式下,云服务提供商的负载均衡器可以实现 HTTP / HTTPS 反向代理,并将流量转发到该 Service 的后端端点。
通常,你需要将 Service 的协议设置为 TCP,并添加一个(通常是云服务提供商特定的)注解,配置负载均衡器以处理 HTTP 级别的流量。此配置可能还包括提供 HTTPS 服务(基于 TLS 的 HTTP)并将纯 HTTP 反向代理到你的工作负载。
你可能还想指定连接的应用协议为 http 或 https。如果从负载均衡器到你工作负载的会话是无 TLS 的 HTTP,请使用 http;如果会话使用 TLS 加密,请使用 https。
如果云服务提供商支持,你可以将 Service 设置为 type: LoadBalancer,以配置 Kubernetes 外部的负载均衡器,该均衡器会转发封装了 PROXY 协议 的连接。
负载均衡器随后会发送一组初始八位字节,用于描述传入的连接,类似于以下示例(PROXY 协议 v1)
PROXY TCP4 192.0.2.202 10.0.42.7 12345 7\r\n
在 PROXY 协议序言之后的数据是来自客户端的原始数据。当任一侧关闭连接时,负载均衡器也会触发连接关闭,并在可行的情况下发送任何剩余的数据。
通常,你可以定义一个协议为 TCP 的 Service。你还需要设置一个特定于云服务提供商的注解,配置负载均衡器将每个传入的连接封装在 PROXY 协议中。
如果云服务提供商支持,你可以将 Service 设置为 type: LoadBalancer,以此方式设置外部反向代理,其中从客户端到负载均衡器的连接是 TLS 加密的,且负载均衡器是 TLS 服务器对等端。从负载均衡器到你工作负载的连接也可以是 TLS,或者可以是纯文本。你可以使用的确切选项取决于你的云服务提供商或自定义的 Service 实现。
通常,你需要将协议设置为 TCP 并设置一个(通常特定于云服务提供商的)注解,将负载均衡器配置为充当 TLS 服务器。你可以使用特定于云服务提供商的机制来配置 TLS 身份(作为服务器,以及可能的作为连接到你工作负载的客户端)。