gpt4 book ai didi

Kubernetes Headless Service 解析为多接口(interface) Pod 的特定接口(interface)

转载 作者:行者123 更新时间:2023-12-02 11:47:08 25 4
gpt4 key购买 nike

我有一个 Deployment使用多个接口(interface) CNI-Genie :

apiVersion: "apps/v1"
kind: Deployment
metadata:
name: my-shiny-app
labels:
app: shiny-app
spec:
replicas: 1
selector:
matchLabels:
app: shiny-app
template:
metadata:
labels:
app: shiny-app
annotations:
cni: "weave, flannel"
spec:
containers:
<---snip--->

我可以看到确实在 pod 中创建了两个接口(interface)并为其分配了 IP 地址。
$ kubectl describe pod my-shiny-app-65c97dfdb9-crl7q
<---snip--->
Annotations: cni: weave, flannel
multi-ip-preferences: {"multi_entry":2,"ips":{"ip1":{"ip":"10.36.0.12","interface":"eth0"},"ip2":{"ip":"10.244.1.53","interface":"eth1"}}}
Status: Running
IP: 10.36.0.12
<---snip--->

现在我想将这两个接口(interface)用于不同类型的流量。例如, eth0 HTTP 流量和 eth1 的接口(interface)将是 UDP 流量。我的应用程序将绑定(bind)并监听这些接口(interface)上的相应类型的流量。

到现在为止还挺好!

现在我想用两个 Headless Services用于向我的应用程序发送流量。像这样:
apiVersion: v1
kind: Service
metadata:
name: shiny-app-http-service
spec:
selector:
app: shiny-app
ports:
- protocol: TCP
port: 8080
name: shiny-app-http
clusterIP: None
---
apiVersion: v1
kind: Service
metadata:
name: shiny-app-udp-service
spec:
selector:
app: shiny-app
ports:
- protocol: UDP
port: 8805
name: shiny-app-udp
clusterIP: None

但是,这两个服务都解析为 eth0 的 IP 地址。应用程序的界面。
是否有任何可能的机制可以让 Headless Service 可靠地解析为多接口(interface) pod 的特定接口(interface)?

最佳答案

部署定义正确。你能告诉我输出:

kubectl exec -it my-shiny-app -- ip addr

它将显示接口(interface)是否正确创建,每个接口(interface)都在其 CNI 的子网内。

我正在考虑的是创建一个没有任何选择器的服务:
apiVersion: v1
kind: Service
metadata:
name: shiny-app-http-service
spec:
ports:
- protocol: TCP
port: 80
targetPort: 9376

由于该 Service 没有选择器,因此不会自动创建相应的 Endpoint 对象。您可以通过手动添加 Endpoint 对象,手动将服务映射到其运行的网络地址和端口:
apiVersion: v1
kind: Endpoints
metadata:
name: shiny-app-http-service
subsets:
- addresses:
- ip: 10.36.0.12
ports:
- port: 9376

在没有选择器的情况下访问服务的工作方式与使用选择器相同。在上面的示例中,流量被路由到 YAML 中定义的单个端点:10.36.0.12:9376 (TCP)。

因此,您可以使用两个 IP 地址创建两个服务和两个端点文件,第一个 IP 来自 Weave (10.36.0.12),第二个来自 Flannel (10.244.1.53)。

有关没有选择器的服务的更多信息,您可以找到 here .

关于Kubernetes Headless Service 解析为多接口(interface) Pod 的特定接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57254091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com