作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化、分散式安全防護技術與新應用遞送方案的介紹與推廣。

通常一個新產品我們簡述了功能,討論了架構,接下來也應該和大家說明一下安裝。但Antrea的安裝就是很直接很簡單。如果大家是自行建立 Native Kubernetes,在做完kubeadm init,然後用kubeadm join把各台worker nodes加入到這個K8S Cluster的步驟後,在有Internet的狀況下,只要一行指令就可以安裝Antrea完成。下面的動畫來自Antrea官網 ( https://antrea.io/docs/v1.8.0/docs/getting-started/ ),使用了下面的指令直接進行Antrea安裝:

# kubectl apply -f https://github.com/antrea-                         
io/antrea/releases/download/<TAG>/antrea.yml

上述指令內的<TAG>可以指定要安裝的社群版本號。而如果確定就是要安裝最新穩定版本,也可以直接用下列指令:

# kubectl apply -f https://raw.githubusercontent.com/antrea-  
io/antrea/main/build/yamls/antrea.yml

很簡單吧。上面就是對應到原生的Kubernetes與社群版本的Antrea的手動安裝方式。這邊特別要說明一下,由於Antrea底層要使用到Open vSwitch,務必要確認Linux Kernel內是否已經包含,或是需要特別手動安裝OVS。如果各位採用的Linux Kernel已經在4.6版以上,那預設就有包含OVS功能。如果低於此版,請預先查詢相關的文件,安裝OVS到2.6.0版以上

但如果我們要裝的是Antrea商業版本像是運作在vSphere with Tanzu或是Tanzu Kubernetes Grid,環境內也可能沒有Internet連線,此時是不是就很麻煩了呢?反過來,其實更單純。在Tanzu各方案內管理者產出的Kubernetes叢集 (TKC, Tanzu Kubernetes Cluster),預設內建就是使用 Antrea的商用版本 ( VMware Container Networking with Antrea )。比如說在 vSphere with Tanzu 內要建立一個新的 TKC,下面是我用來裝 NAPP (NSX Application Platform) 的一個配置檔:

apiVersion: run.tanzu.vmware.com/v1alpha1          
kind: TanzuKubernetesCluster                       
metadata:                                          
  name: tkgs-napp-cluster                          
  namespace: tkgs-napp                             
spec:                                              
  distribution:                                    
    version: v1.21                                 
  topology:                                        
    controlPlane:                                  
      count: 1                                     
      class: best-effort-medium                    
      storageClass: tkgs-storage                   
      volumes:                                     
        – name: etcd                               
          mountPath: /var/lib/etcd                 
          capacity:                                
            storage: 64Gi                          
    workers:                                       
      count: 3                                     
      class: best-effort-4xlarge                   
      storageClass: tkgs-storage                   
      volumes:                                     
        – name: containerd                         
          mountPath: /var/lib/containerd           
          capacity:                                
            storage: 64Gi                          
  settings:                                        
    network:                                       
      cni:                                         
        name: antrea                               
      pods:                                        
        cidrBlocks:                                
        – 10.243.0.0/16                            
      serviceDomain: cluster.local                 
      services:                                    
        cidrBlocks:                                
        – 10.244.0.0/16

上面配置檔內的紅字部分就是網路相關配置,可以看到Container Network Interface選擇是Antrea(預設值)並且配置了Pod使用的網路範圍。此時使用這個配置檔來建立新的Tanzu Kubernetes Cluster時,Antrea會自動安裝在內直接可使用,不需要大家進一步進行任何動作。下圖內是我用前面的配置檔產出的TKC,建立完成後可以在kube-system namespaces內看到Antrea相關構件已經配置完成:

同時以 kubectl describe pod 指令看antrea-controller的內容,可以看到對應到這個TKC版本(安裝的是v1.21.6),Antrea是0.13.5版(這是社群功能版本,對應到的是VMware Container Networking with Antrea的1.2.0-0.13.1企業版本)

安裝的說明就這樣,大家可以看到非常簡單。總結一下,如果是在原生Kubernetes內安裝,只需要手動配置一行指令。如果是在Tanzu內,不需要安裝,Tanzu Kubernetes Cluster配置完成時就自動建好了。但我相信大家在前面的敘述看到『版本』二字,有些談到的是社群版本,有時談到的是VMware支持的商用版本,彼此間又有對應,看起來很混亂。下一篇我們專門來討論這個議題:Antrea的社群版本與商用版本對應與差異。