我正在使用google spark-operator和一些calico网络策略来保护命名空间。
Spark 驱动程序 pod 需要能够与命名空间中的kubernetes
服务通信default
才能与 api-server 对话。
这就是我得到的:
Operation: [get] for kind: [Pod] with name: [xx] in namespace: [xx] failed.
问题是:
使用任何类型的网络策略都会阻止与默认命名空间的通信。恢复连接是可能的,但选择kubernetes.default
服务仍然是不可能的,因为它是一个特定的服务(没有选择器)......所以你不能与之通信!
我尝试打开与default
+kube-system
命名空间中所有 pod 的通信。它适用于所有服务,但 kubernetes.default
仍然无法访问!
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: mynetpol
spec:
selector: all()
types:
- Egress
egress:
# Allows comm to kube-system namespace
- action: Allow
destination:
selector: all()
namespaceSelector: ns == 'kube-system'
- action: Allow
source:
selector: all()
namespaceSelector: ns == 'kube-system'
# Allows comm to default namespace
- action: Allow
destination:
selector: all()
namespaceSelector: ns == 'default'
- action: Allow
source:
selector: all()
namespaceSelector: ns == 'default'
出于某些原因kubernetes.default.svc.cluster.local:443
,尽管所有通信都是开放的,但会出现冰壶超时事件。