容器隧道網絡配置
更新時間 2024-01-05 16:04:23
最近更新時間: 2024-01-05 16:04:23
分享文章
本文主要介紹 網絡策略(NetworkPolicy)。
網絡策略(NetworkPolicy)
NetworkPolicy是Kubernetes設計用來限制Pod訪問的對象,通過設置NetworkPolicy策略,可以允許Pod被哪些地址訪問(即入規則Ingress)、或Pod訪問哪些地址(即出規則Egress)。這相當于從應用的層面構建了一道防火墻,進一步保證了網絡安全。
NetworkPolicy支持的能力取決于集群的網絡插件的能力,如CCE的集群只支持設置Pod的入規則。
默認情況下,如果命名空間中不存在任何策略,則所有進出該命名空間中的Pod的流量都被允許。
NetworkPolicy的規則可以選擇如下3種:
- namespaceSelector:根據命名空間的標簽選擇,具有該標簽的命名空間都可以訪問。
- podSelector:根據Pod的標簽選擇,具有該標簽的Pod都可以訪問。
- ipBlock:根據網絡選擇,網段內的IP地址都可以訪問。(CCE當前不支持此種方式)
約束與限制
- 當前僅容器隧道網絡模型的集群支持網絡策略(NetworkPolicy)。
- 網絡策略(NetworkPolicy)暫不支持設置出方向(egress)。
- 不支持對IPv6地址網絡隔離。
使用Ingress規則
- 使用podSelector設置訪問范圍
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default
spec:
podSelector: # 規則對具有role=db標簽的Pod生效
matchLabels:
role: db
ingress: # 表示入規則
- from:
- podSelector: # 只允許具有role=frontend標簽的Pod訪問
matchLabels:
role: frontend
ports: # 只能使用TCP協議訪問6379端口
- protocol: TCP
port: 6379
示意圖如下所示。
圖 podSelector

- 使用namespaceSelector設置訪問范圍
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
spec:
podSelector: # 規則對具有role=db標簽的Pod生效
matchLabels:
role: db
ingress: # 表示入規則
- from:
- namespaceSelector: # 只允許具有project=myproject標簽的命名空間中的Pod訪問
matchLabels:
project: myproject
ports: # 只能使用TCP協議訪問6379端口
- protocol: TCP
port: 6379
示意圖如下所示。
圖 namespaceSelector

在控制臺創建網絡策略
步驟 1 登錄CCE控制臺,單擊集群名稱進入集群。
步驟 2 在左側導航欄中選擇“服務發現”,在右側選擇“網絡策略”頁簽,單擊右上角“創建網絡策略”。
- 策略名稱:自定義輸入NetworkPolicy名稱。
- 命名空間:選擇網絡策略所在命名空間。
- 選擇器:輸入標簽選擇要關聯的Pod,然后單擊添加。您也可以單擊“引用負載標簽”直接引用已有負載的標簽。
- 入方向規則:單擊
添加入方向規則。

表 添加規則
| 參數 | 參數說明 |
|---|---|
| 協議端口 | 請選擇對應的協議類型和端口,目前支持TCP和UDP協議。 |
| 源對象命名空間 | 選擇允許哪個命名空間的對象允許訪問。 |
| 源對象Pod標簽 | 選擇允許帶有這個標簽的Pod訪問。 |
步驟 3設置完成后,單擊“確定”。