簡體   English   中英

Kube.netes.network 策略拒絕所有策略不阻止基本通信

[英]Kubernetes network policy deny-all policy not blocking basic communication

我正在運行 GKE 集群版本 1.17.13-gke.1400。

我在我的集群中應用了以下網絡策略 -

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress

這應該阻止所有與默認命名空間上的 pod 之間的通信。 然而,事實並非如此。 從這個測試中可以明顯看出 -

$ kubectl run p1 -it  --image google/cloud-sdk
root@p1:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=114 time=1.14 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=114 time=1.21 ms
^C
root@p1:/# curl www.google.com 
<!doctype html><html itemscope=" ...

文檔來看,這個應用程序似乎應該非常簡單。 任何幫助理解我做錯了什么,或進一步排除故障的提示,將不勝感激。

謝謝,寧錄,

要使網絡策略生效,您的集群需要運行一個網絡插件來執行它們。 Project CalicoCilium是這樣做的插件。 這不是創建集群時的默認設置!

因此,首先,您應該檢查您的集群是否按照Google Cloud Network Policies 文檔中的說明進行了相應設置。 這在--enable-network-policy標志后面以某種方式抽象出來。

如果啟用,您應該會在kube-system命名空間中看到一些 calico pod。

kubectl get pods --namespace=kube-system

如果有實施網絡策略的插件,您需要確保已在所需的命名空間中部署網絡策略 - 並檢查您使用kubectl run的測試是否也在該命名空間中執行。 您可能在 kube 上下文中配置了一些其他命名空間,並且沒有使用您的命令訪問默認命名空間。

使用清單安裝 Calico

將 Calico 清單應用到您的集群。 這些清單在 kube-system 命名空間中創建一個 DaemonSet。

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/master/calico-operator.yaml

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/master/calico-crs.yaml

查看 kube-system 命名空間中的資源。

kubectl 獲取 daemonset calico-node --namespace kube-system Output

DESIRED 和 READY 列中的值應該匹配。 為您返回的值與以下output中的值不同。

NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE calico-node 1 1 1 1 1 kube.netes.io/os=linux 26m

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM