作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化、分散式安全防護技術與新應用遞送方案的介紹與推廣。
如果對前篇介紹的Antrea IPAM機制有興趣,想要實際開始運用,要怎麼做呢?本篇內會逐步進行介紹。首先是與前篇相同,展示環境的示意圖:
首先Antrea IPAM功能到寫作時目前的社群版本 (1.8) 都還位於Alpha階段,也就是說這個功能目前預設是關閉的,如果要使用,必須到Antrea ConfigMap內,將下面標注為藍字的部分,手動進行修改:
其次請大家回憶一下,當我們在vSphere上有很多個網路Port Group,每個Port Group有自己的vlan tag,此時實體網路交換器與vSphere間要用什麼連接方式呢?絕大部分狀況,我們都會啟用Trunking (802.1q) 的方式連接,這樣當vSphere將來自不同Port Group的網路封包送出,而且上邊有打vlan tag時,實體交換器才能正確識別。
相同地在Antrea IPAM內,網路封包由Kubernetes Node送出往外時,不會封裝而會以vlan tag為區別。此時
- 如果是採用實體機 (Bare-Metal) 的Kubernetes Node,實體交換器與K8S Node連接的網路Port必須預先配置為802.1q的Trunk。
- 如果K8S Node是採用虛機部署,此時除了實體交換器與vSphere間,包含這個K8S虛機連接的VDS/VSS Port Group上,也必須把802.1q Trunk啟用,就是要配成VLAN Trunk (0-4094)這樣。
接著,在前篇我們就已經有討論,既然Pod定址直接使用底層實體網路,路由也透過底層實體網路互通,那當然這些網路配置就必須預先由企業網路團隊配置好。上圖內,除了原本Kubernetes配置需求的網路外,兩個IPAM使用的網路172.16.19.0/24 (VLAN 19)及172.16.20.0/24 (VLAN 20),以及各自的Gateway,還有網段間路由需求,都需要在外部網路設備內設定好。
當這些前置作業都完成,接下來Antrea IPAM的實際配置還滿直接的。首先是我們對應不同的Namespace,可以建立各自的IP Pool。在下面的配置我們建立了一個IP Pool叫做pool-ap。這個Pool內定義了
- IP範圍由172.16.19.11至172.16.19.50。
- 網路遮罩 (prefix) 是 /24,閘道是172.16.19.254。
- vlan tag是19。
apiVersion: “crd.antrea.io/v1alpha2” kind: IPPool metadata: name: pool-ap spec: ipVersion: 4 ipRanges: – start: “172.16.19.11” end: “172.16.19.50” gateway: “172.16.19.254” prefixLength: 24 vlan: 19 |
IP Pool定義好後,接著當管理者要在Kubernetes建立一個Namespace時,就可以透過annotation機制,指定在這個Namespace內的定址方式。在下面配置的藍字部分,表示所有於Namespace ns-ap內建立的Pod,要採用於前面定義的pool-ap這個IP Pool的定址:
apiVersion: v1 kind: Namespace metadata: name: ns-ap annotations: ipam.antrea.io/ippools: ‘pool-ap’ |
管理者可以用整個Namespace來指定,或在建立Pod時指定要採用哪個IP Pool甚至要求固定IP亦可,如下圖Pod配置內的藍字所示:
apiVersion: v1 kind: Pod metadata: name: db-02 namespace: ns-db annotations: ipam.antrea.io/ippools: ‘pool-db’ ipam.antrea.io/pod-ips: ‘172.16.20.50’ |
兩個非常簡單的實機展示。在ns-ap這個namespace內我們用deployment放了三個Pod。首先,雖然這三個pod分別在node-01與node-02上,但他們的IP地址都是在172.16.19.0/24網段內。接著,我從裡面IP地址為172.16.19.11這個pod,去ping其他在同樣namespace與不同namespace的pod,都可順利ping通。
然後下圖內,同樣的pod去ping外部資料庫172.29.161.22,然後用wireshark來看。如同我們預期的,來源IP是這個Pod本身的172.16.19.11,不是任何一台Kubernetes Node的介面IP地址或是Egress IP:
第二個演示:下面這兩張圖內,可以看到在ns-db這個namespace內,我建了兩個Pod分別是db-01與db-02。同樣地雖然兩個Pod是放在不同的Node上,但是都拿到172.16.20.0/24網段的IP地址。而且我們可直接指定這兩個Pod的IP,分別是.48以及.50。
然後我們從一台在外部網路的虛機直接去ping這兩個pod的IP,大家可以看到直接可ping到,代表這兩個pod的IP是『可路由的』。
相關的Antrea IPAM介紹、配置與展示就寫到這邊。但最後很重要的一點要提醒大家,Antrea IPAM是個新的,而且還在發展中的功能。寫作此時兩個Tanzu企業方案都尚未支援(Tanzu Kubernetes Grid 1.6有部分支持,但沒有具備完整功能。vSphere with Tanzu尚未支持)。但如果上述討論的功能對大家有用,也歡迎後續與VMware技術團隊或經銷夥伴進一步進行了解與討論。
下篇網誌是本系列的最後一篇,我們會以問答的方式回應幾個常被詢問的Antrea相關問題。
Comments
0 Comments have been added so far