同一个DaemonSet K8s有两个不同的服务



我想知道是否有一种方法可以在特定节点上为pod创建服务。例如:

假设我有一个有4个工作节点的集群[compute-0…]计算3].

节点"compute-0"one_answers";compute-1"有一个标签"app= firstapplication">

节点"compute-2"one_answers";compute-3"有一个不同的标签"app=secondApplication">

我有一个守护进程在所有4个节点上运行。

我想创建2个服务,每一对节点一个。这可能吗?

谢谢!

编辑

我们尝试这样做的原因是我们有一个Openshift4.6集群,出于安全原因,我们在两组节点之间封锁了VXLAN端口。当pod尝试使用默认DNS服务(172.30.0.10)解析DNS查询时,有时它们会访问被阻塞节点上的DNS pod。

不,这是不可能的!由于服务通过标签引用它们的pod,并且守护进程中的所有pod都有相同的标签,因此不能这样做。当然,您可以在创建pod后给它贴上标签,但由于在重新创建守护进程后会丢失标签,所以我不会这么做。

你可以把你的守护进程分成几个部分,并使用节点选择器或亲和性来控制节点上pod的分布。

如果你指定了一个。spec.template.spec。nodeSelector,那么DaemonSet控制器将在匹配该节点选择器的节点上创建pod。同样,如果您指定.spec.template.spec。然后,DaemonSet控制器将在与该节点亲和性匹配的节点上创建pod。

这样,每个守护进程就可以有自己的Service。

您只需要修补现有的pod。把这些标签加到你的豆荚里。也许你需要另找一个接线员。操作人员的工作是首先拿到吊舱。然后检查欲望标签是否存在。如果不存在,请修补pod的标签。这就像kubectl补丁。在kubeclient的帮助下,如果标签不存在于pod中,只需更新标签。做一些关于kubeclient的研究。kubernetes中也有一个示例控制器。这是链接:

ref

如果pod中有一些额外的标签,请将它们添加到选择器中。

---
kind: Service
apiVersion: v1
metadata:
name: first-svc
labels:
app: firstApplication
spec:
selector:
app: firstApplication
ports:
- name: http 
port: 8080
targetPort: 8080
---
kind: Service
apiVersion: v1
metadata:
name: second-svc
labels:
app: secondApplication
spec:
selector:
app: secondApplication
ports:
- name: http 
port: 8080
targetPort: 8080
---

相关内容

  • 没有找到相关文章

最新更新