建立一個類型為NetworkPolicy的Kubernetes對象的yaml檔案。
第九行的podSelector指定這個NetworkPolicy施加在哪些pod上,通過label來做pod的過濾。
從第16行開始的ingress定義,定義了隻有具備标簽component=ads,module=app的pod才能夠連接配接component=ads, module=db的pod。
首先建立一個臨時的pod,使用正确的label(component=ads,module=app)去通路db pod:
kubectl run --restart=Never -it --rm --image=postgres:9.6 --labels=“component=ads,module=app” --env=“PGCONNECT_TIMEOUT=5” helper --command – /bin/bash
執行完畢後看到提示root@helper:/#, 說明我通過上述指令建立的臨時pod成功的連接配接到了postgreSQL的pod上。
輸入正确的使用者名和密碼,能成功連接配接到postgreSQL pod提供的資料庫服務上。
現在我們重新建立一個臨時pod,不指定label,是以不滿足NetworkPolicy裡定義的限制條件,是以會看到我們期望的結果:postgreSQL連接配接失敗。
希望通過例子大家能夠了解Kubernetes裡NetworkPolicy的工作原理。