是否可以在Kubernetes中的命名空间之间共享pod?
下面是一个例子:
| 命名空间| namespace |
| - -----| ------------ |
| 团队_1| team_1 |
| 团队_1| team_1 |
| 团队_1| team_1 |
| 团队_1| team_1 |
这就是我想要达到的目标:
| 命名空间| namespace |
| - -----| ------------ |
| 团队_1| team_1 |
| 团队_1| team_1 |
| 团队_1| team_1 |
| 团队_1| team_1 |
| team_1_JIRA-12| team_1_JIRA-12 |
我想创建(动态)一个新的命名空间,特定于一个给定的pull请求,它只“覆盖”少数pod,同时仍然能够与来自父ns的pod通信。
3条答案
按热度按时间yptwkmov1#
是否可以在Kubernetes中的命名空间之间共享pod?
**简短回答:**不可能。
正如Malathi在她的回答中已经提到的,一个
Pod
不能属于多个名称空间。看看Network Policies,因为它们似乎是适合您的用例的解决方案。正如你在docs中看到的:
如果你想在IP地址或端口级别(OSI第3层或第4层)控制流量,那么你可以考虑为集群中的特定应用程序使用Kubernetes NetworkPolicies。NetworkPolicies是一个以应用程序为中心的结构,允许您指定如何允许pod通过网络与各种网络“实体”(我们在这里使用“实体”一词,以避免过载更常见的术语,如“端点”和“服务”,它们具有特定的Kubernetes内涵)进行通信。
Pod可以与之通信的实体通过以下3个标识符的组合来识别:
允许的其他pod(例外:pod无法阻止对其自身的访问)允许IP阻止的命名空间(例外:无论Pod或节点的IP地址如何,始终允许来自或去往运行Pod的节点的流量)在定义基于Pod或基于命名空间的NetworkPolicy时,您使用选择器来指定允许来自或去往与选择器匹配的Pod的流量。
rdlzhqv92#
Kubernetes不允许你在两个命名空间之间共享一个pod。但是,您可以为pod A定义一个名为service A的服务,并使用kubernetes DNS访问其他命名空间
team_1_JIRA-12
中的服务A。您可以使用cURL访问team_1
命名空间中的pod A,使用其服务,如下所示:niwlg2el3#
有一个kubernetes的插件叫做hierarchical namespaces,我认为这可以解决这个问题。有一个github和这个博客谈论它。
https://kubernetes.io/blog/2020/08/14/introducing-hierarchical-namespaces/