建立一個類型爲NetworkPolicy的Kubernetes對象的yaml文件。數據庫
第九行的podSelector指定這個NetworkPolicy施加在哪些pod上,經過label來作pod的過濾。bash
從第16行開始的ingress定義,定義了只有具有標籤component=ads,module=app的pod纔可以鏈接component=ads, module=db的pod。app
首先建立一個臨時的pod,使用正確的label(component=ads,module=app)去訪問db pod:post
kubectl run --restart=Never -it --rm --image=postgres:9.6 --labels="component=ads,module=app" --env="PGCONNECT_TIMEOUT=5" helper --command -- /bin/bash.net
執行完畢後看到提示root@helper:/#, 說明我經過上述命令建立的臨時pod成功的鏈接到了postgreSQL的pod上。rest
輸入正確的用戶名和密碼,能成功鏈接到postgreSQL pod提供的數據庫服務上。component
如今咱們從新建立一個臨時pod,不指定label,所以不知足NetworkPolicy裏定義的限制條件,所以會看到咱們指望的結果:postgreSQL鏈接失敗。對象
但願經過例子你們可以理解Kubernetes裏NetworkPolicy的工做原理。 要獲取更多Jerry的原創文章,請關注公衆號"汪子熙":blog