實踐 Network Policy - 每天5分鍾玩轉 Docker 容器技術(172)


為了演示 Network Policy,我們先部署一個 httpd 應用,其配置文件 httpd.yaml 為:

httpd 有三個副本,通過 NodePort 類型的 Service 對外提供服務。部署應用:

當前沒有定義任何 Network Policy,驗證應用可以被訪問:

  1. 啟動一個 busybox Pod,可以訪問 Service,也可以 Ping 到副本 Pod。

  2. 集群節點可以訪問 Service, 也可以 Ping 到副本 Pod。

  3. 集群外(192.168.56.1)可以訪問 Service。

現在創建如下 Network Policy:

① 定義將此 Network Policy 中的訪問規則應用於 label 為 run: httpd 的 Pod,即 httpd 應用的三個副本 Pod。

② ingress 中定義只有 label 為 access: "true" 的 Pod 才能訪問應用。

③ 只能訪問 80 端口。

通過 kubectl apply 創建 Network Policy。

驗證 Network Policy 的有效性:

  1. busybox Pod 已經不能訪問 Service。

    如果 Pod 添加了 label access: "true" 就能訪問到應用,但 Ping 已經被禁止。

  2. 集群節點已經不能訪問 Service, 也 Ping 不到副本 Pod。

  3. 集群外(192.168.56.1)已經不能訪問 Service。

如果希望讓集群節點和集群外(192.168.56.1)也能夠訪問到應用,可以對 Network Policy 做如下修改:

應用新的 Network Policy:

現在,集群節點和集群外(192.168.56.1)已經能夠訪問了:

除了通過 ingress 限制進入的流量,也可以用 egress 限制外出的流量。大家可以參考官網相關文檔和示例,這里就不贅述了。

小結

Kubernetes 采用的是扁平化的網絡模型,每個 Pod 都有自己的 IP,並且可以直接通信。

CNI 規范使得 Kubernetes 可以靈活選擇多種 Plugin 實現集群網絡。

Network Policy 則賦予了 Kubernetes 強大的網絡訪問控制機制。

書籍:

1.《每天5分鍾玩轉Kubernetes》
https://item.jd.com/26225745440.html

2.《每天5分鍾玩轉Docker容器技術》
https://item.jd.com/16936307278.html

3.《每天5分鍾玩轉OpenStack》
https://item.jd.com/12086376.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM