【发布时间】:2026-02-01 04:50:01
【问题描述】:
场景:
- 我有四 (4) 个 Pod,Payroll,内部,外部,mysql。
- 我希望内部 pod 只能访问:
- 一个。内部 > 8080 端口上的工资单
- 乙。内部 > mysql 在端口 3306 上
请提出缺少的部分?我制定了以下网络策略。但我的吊舱无法与“任何”吊舱通信。 因此它已经实现了给定的目标,但实际上无法访问其他 pod。以下是我的网络政策详情。
master $ k describe netpol/internal-policy
Name: internal-policy
Namespace: default
Created on: 2020-02-20 02:15:06 +0000 UTC
Labels: <none>
Annotations: <none>
Spec:
PodSelector: name=internal
Allowing ingress traffic:
<none> (Selected pods are isolated for ingress connectivity)
Allowing egress traffic:
To Port: 8080/TCP
To:
PodSelector: name=payroll
----------
To Port: 3306/TCP
To:
PodSelector: name=mysql
Policy Types: Egress
政策 YAML
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: internal-policy
namespace: default
spec:
podSelector:
matchLabels:
name: internal
policyTypes:
- Egress
egress:
- to:
- podSelector:
matchLabels:
name: payroll
ports:
- protocol: TCP
port: 8080
- to:
- podSelector:
matchLabels:
name: mysql
ports:
- protocol: TCP
port: 3306 (edited)
【问题讨论】:
-
mysql和payroll上的标签是否正确?
-
负责实施网络策略的 CNI 怎么样?你用的是什么解决方案?
-
是的,pod 标记正确。是的,一些网络策略插件已经到位,这就是为什么在创建此策略后 Pod 无法通信的原因。我访问了 kodekloud.com 中的虚拟 K8s 集群(通过 katakoda)
标签: networking kubernetes policy