實踐 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章