在 kubernetes 中为 pod 指定一个静态公共 IP,并在服务中指定

在 kubernetes 中为 pod 指定一个静态公共 IP,并在服务中指定

按照关联,我们可以创建具有多个网络的 pod,如果应用程序使用非默认网络 (eth2、3 等) 打开端口,我们如何将其公开为服务?在服务 yaml 中,除了默认之外,我没有找到任何其他公开服务的方法。

答案1

Multus 允许您将网络设备连接到您的 Pod,但我们应该注意这些接口不是我们 Kubernetes 集群 SDN 的一部分。

使用基于 Multus 的设备:您可以为您的 Pod 分配 IP,可以使用 DHCP、静态 IP 等,由您决定。请记住,这些地址独立于您的 Kubernetes SDN。

如果该集群中的其他容器需要连接这些端点,那么它们的流量将离开您的 SDN,通过其通常的默认网关,而默认网关又应该对您的 Multus 地址子网有一定的了解(路由到)。

但是,您仍然可以创建服务,指定 SDN 之外的地址。这可以通过在服务旁边创建一个 Endpoints 对象来完成,例如:

---
apiVersion: v1
kind: Endpoints
metadata:
  name: svc-out-sdn
  namespace: ns
subsets:
- addresses:
  - ip: 10.0.0.1
  ports:
  - name: tcp-80
    port: 80
    protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: svc-out-sdn
  namespace: ns
spec:
  clusterIP: None
  ports:
  - name: tcp-80
    port: 80

相关内容