是否可以在 Kubernetes 的命名空间之间共享 Pod?
给定如下设置:
吊舱 | 命名空间 |
---|---|
A | team_1 |
B | team_1 |
C | team_1 |
D | team_1 |
这是我想要实现的:
吊舱 | 命名空间 |
---|---|
A | team_1 |
B | team_1 |
C | team_1 |
D | team_1 |
A | team_1_JIRA-12 |
我想(即时)创建一个新的命名空间, 特定于给定的拉取请求,仅“覆盖”少数 pod, 同时仍然能够与来自父 ns 的 pod 通信。
答案 0 :(得分:0)
Kubernetes 不允许您在 2 个命名空间之间共享一个 pod。但是,您可以为 pod A 定义一个名为服务 A 的服务,并使用 kubernetes DNS 访问另一个命名空间 team_1_JIRA-12
中的服务 A。您可以使用 cURL 访问 team_1
命名空间中的 pod A,使用其服务,如下所示:
kubectl create deployment nginx --image=nginx
kubectl exec -it nginx-6799fc88d8-cx84f -- bash
root@nginx-6799fc88d8-cx84f:/# curl http://A.team_1
答案 1 :(得分:0)
是否可以在 Kubernetes 的命名空间之间共享 Pod?
简短回答:不,这是不可能的。
正如 Malathi 在她的回答中已经提到的,一个 Pod
不能属于多个命名空间。
看看 Network Policies,因为它们似乎是适合您的用例的正确解决方案。正如您在文档中所读到的:
<块引用>如果您想在 IP 地址或端口级别控制流量 (OSI 第 3 或 4 层),那么您可以考虑使用 Kubernetes 集群中特定应用程序的网络策略。 NetworkPolicies 是一种以应用程序为中心的结构,它允许您 指定如何允许 pod 与各种网络通信 “实体”(我们在这里使用“实体”这个词是为了避免重载 更常见的术语,如“端点”和“服务”,它们有 Kubernetes 的特定内涵)通过网络。
Pod 可以与之通信的实体通过 以下 3 个标识符的组合:
允许的其他 pod(例外:pod 不能阻止访问 本身)允许 IP 块的命名空间(例外:流量到 并且始终允许从运行 Pod 的节点,无论 Pod 或节点的 IP 地址)在定义 Pod 时 - 或 基于命名空间的 NetworkPolicy,你使用一个选择器来指定什么 允许进出与选择器匹配的 Pod 的流量。