我知道我们可以通过定义负载均衡器来将公共IP设置为静态IP,但是我们能否为服务设置一个静态的集群IP?
例如:
**NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE**
service/my-application-service ClusterIP 10.111.67.245 <none> 80/TCP 11d
我知道我们可以通过定义负载均衡器来将公共IP设置为静态IP,但是我们能否为服务设置一个静态的集群IP?
例如:
**NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE**
service/my-application-service ClusterIP 10.111.67.245 <none> 80/TCP 11d
看起来你可以在ClusterIP类型的服务的spec下指定clusterIP字段。
例如:
apiVersion: v1
kind: Service
metadata:
name: myawesomeservice
namespace: myawesomenamespace
spec:
clusterIP: 10.43.11.51
...
文档中最相关的片段:
"如果手动指定了地址,并且在范围内(根据系统配置),并且未被使用,则将分配该地址给服务;否则创建服务将失败" - https://kubernetes.io/docs/reference/kubernetes-api/services-resources/service-v1/
以下是完整段落。
规范
clusterIP(字符串)
clusterIP 是服务的 IP 地址,通常是随机分配的。如果手动指定一个地址,并且在系统配置中是有效的且未被使用,则将其分配给服务;否则创建服务将失败。除非同时更改类型字段为 ExternalName(需要此字段为空白),或者从 ExternalName 更改类型字段(在这种情况下可以选择指定此字段),否则不能通过更新更改此字段。有效值为 "None"、空字符串("")或有效的 IP 地址。将其设置为 "None" 将创建“无头服务”(没有虚拟 IP),这在直接端点连接优先且不需要代理时非常有用。仅适用于类型 ClusterIP、NodePort 和 LoadBalancer。如果在创建类型为 ExternalName 的服务时指定此字段,将创建失败。将服务更新为 ExternalName 类型时,此字段将被清除。更多信息: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
源代码:https://kubernetes.io/docs/reference/kubernetes-api/services-resources/service-v1/
my-application-service
是一个有效的主机名,指向Service的内部IP地址。您不需要在应用程序设置中复制此行为。 - David Maze