Network Policy 是 Kubernetes 的一種資源。Network Policy 經過 Label 選擇 Pod,並指定其餘 Pod 或外界如何與這些 Pod 通訊。html
默認狀況下,全部 Pod 是非隔離的,即任何來源的網絡流量都可以訪問 Pod,沒有任何限制。當爲 Pod 定義了 Network Policy,只有 Policy 容許的流量才能訪問 Pod。git
不過,不是全部的 Kubernetes 網絡方案都支持 Network Policy。好比 Flannel 就不支持,Calico 是支持的。咱們接下來將用 Canal 來演示 Network Policy。Canal 這個開源項目頗有意思,它用 Flannel 實現 Kubernetes 集羣網絡,同時又用 Calico 實現 Network Policy。github
部署 Canal 與部署其餘 Kubernetes 網絡方案很是相似,都是在執行了 kubeadm init
初始化 Kubernetes 集羣以後經過 kubectl apply
安裝相應的網絡方案。也就是說,沒有太好的辦法直接切換使用不一樣的網絡方案,基本上只能從新建立集羣。api
要銷燬當前集羣,最簡單的方法是在每一個節點上執行 kubeadm reset
。而後就能夠按照咱們在前面 「部署 Kubernetes Cluster」 一章的 「初始化 Master」 小節中的方法初始化集羣。網絡
kubeadm init --apiserver-advertise-address 192.168.56.105 --pod-network-cidr=10.244.0.0/16
而後按照文檔 https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/ 安裝 Canal。文檔列出了各類網絡方案的安裝方法:app
執行以下命令部署 Canalspa
kubectl apply -f https://raw.githubusercontent.com/projectcalico/canal/master/k8s-install/1.7/rbac.yaml
kubectl apply -f https://raw.githubusercontent.com/projectcalico/canal/master/k8s-install/1.7/canal.yaml
部署成功後,能夠查看到 Canal 相關組件:code
Canal 做爲 DaemonSet 部署到每一個節點,地屬於 kube-system
這個 namespace。server
Canal 準備就緒,下節咱們將實踐 Network Policy。htm
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