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

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

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

當前沒有定義任何 Network Policy,驗證應用能夠被訪問:app

  1. 啓動一個 busybox Pod,能夠訪問 Service,也能夠 Ping 到副本 Pod。

    ide

  2. 集羣節點能夠訪問 Service, 也能夠 Ping 到副本 Pod。

    spa

  3. 集羣外(192.168.56.1)能夠訪問 Service。

    3d

如今建立以下 Network Policy: code

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

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

③ 只能訪問 80 端口。 blog

經過 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

相關文章
相關標籤/搜索