按照关联,我们可以创建具有多个网络的 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