Enterprise PKS介紹

PKS全名是Pivotal Container Service,顧名思義是由Pivotal這間公司開發的。Pivotal是VMware的子公司,也許比較少人知道這間公司,不過相信大家應該都聽過tomcat或是redis,這兩個知名的專案就是由Pivotal開發的,由此可知Pivotal也是一家技術非常扎實強大的公司。

PKS介紹

PKS是用來管理/部署Kubernetes Cluster的一個平台,由於目前Kubernetes在建置或維運上還是需要蠻高的成本及技術門檻,為了要降低維運成本,讓企業能完全專注在自己的服務上,因此才漸漸開始有了這類管理/部署Kubernetes的平台出現。透過這種平台能夠輕鬆的部署Kubernetes Cluster,有些平台甚至還針對Kubernetes Cluster提供HA、Fault Tolerance或是Load Balancing的機制,大大降低維運成本,而PKS就是其中一種這種平台(產品),類似的其他產品還有RancherRedhat OpenShift以及IBM Cloud Private等。

目前Pivotal有三種不同的PKS產品:

  1. VMware Enterprise PKS
  2. VMware Essential PKS
  3. VMware Cloud PKS

VMware Enterprise PKS,目前為1.4.1版,在1.4.0以前名稱還叫做PKS而已,可能是因為要跟其他產品區分開來因而改名,這個產品架構主要是由Cloud Foundry開發的BOSH專案以及Pivotal各式產品組成,目前支援的平台為vSphere,GCP,Azure以及AWS,本篇會以Enterprise PKS介紹為主,稍後會有較詳細的架構介紹。

VMware Essential PKS是今年2019年3月VMware出的一種新的PKS版本,這個版本比較特殊一點,主要是heptio公司(已被VMware買下來)開發的,因此他的架構主要都是由heptio所提供的Open Source套件組合而成的,例如用來備份Kubernetesvelero、或是作為proxy的contour等等。這個產品目前筆者也搞不清楚定位在哪,感覺與Pivotal開發的Enterprise PKS有較勁意味(Pivotal官方文件也完全沒有提到這個產品,都只有在VMware網站才有xD),不過目前關於這產品的資訊還太少,也許過一段時間就會知道定位跟差異了。

Cloud PKS是VMware提供的一個Public Cloud Kubernetes環境,是一個SaaS平台,使用者可以直接將Container部署上去,完全不需要維護Kubernetes環境,詳細資訊可以參考連結

PKS架構組成

圖片為簡略的Enterprise PKS架構圖,由於Pivotal是VMware的子公司,因此目前Enterprise PKS對vSphere環境相容性最好,尤其是結合VMwaer NSX-T能夠完全發揮出Enterprise PKS功能。不過不管是運行在哪個平台,Enterprise PKS元件都會以VM的形式運行,因此是不會與平台中其他一般VM相衝突的。

Enterprise PKS

1. PCF Ops Manager
這是Pivotal的一個產品,主要是提供一個GUI平台讓使用者可以直接上傳Pivotal系列產品來進行部署。Enterprise PKS也是透過這種方式安裝。Pivotal的產品是用Tile為單位(.pivotal檔),只需要先將Tile上傳到Ops Manager,再手動設定一些參數(IP,密碼等等),就可以直接按下變更鈕部署,非常方便。如果要刪掉產品也只要先按Tile旁邊的垃圾桶,再案變更鈕即可。

如下圖所示,PCF Ops Manager上面有三個Tile,分別是BOSH Tile,PKS Tile以及Harbor Tile

PCF Ops Manager只是一個Tile管控介面,它一定要結合BOSH(下一點會提到)才能部署,所以實際上當使用者按下變更鈕之後應該是Ops Manager會呼叫BOSH Director去根據設定的參數部署這些Tile

Pivotal官網有釋出許多它們包好的Tile,不過大部分都是他們自家的產品,是要付費的。如果想要自己做Tile,可以參照連結將自己的服務打包成Tile來安裝。

2. BOSH Director
BOSH是整個Enterprise PKS的核心,BOSH是由Cloud Foundry開發的Open Source專案,用來部署、監控、修復VM。而Cloud Foundry本身平台也是採用BOSH來建置的。在PKS當中,所有的元件包含後面提到的PKS API ServerHarborK8s Cluster都是由BOSH Director部署的,BOSH Director還會定期地去監控所有元件的健康狀態(每幾秒就polling一次),只要發生有問題的元件,就會啟動自動修復機制,非常方便。

3. PKS API Server
PKS API Server負責建置Kubernetes Cluster,不過這是比較攏統的說法,其實是PKS API Server收到Request之後,會通知BOSH Director部署K8s Cluster的Node(VM),等到Node(VM)都建好後,PKS API Server就會開始針對這些VM去做設定及安裝一些PKSKubernetes的必要元件,如kube-proxy, kubelet, docker daemon等等。

4. Kubernetes Cluster
分成master以及worker,目前PKS佈出來的Kubernetes cluster都是佈在VM上面(畢竟一開始本來就是為vSphere打造的)。PKS可以一次部署多個Cluster,因此企業可以根據不同部門,給不同的Kubernetes Cluster並且指派不同的權限,且彼此是獨立開來的。所有透過BOSH DirectorPKS API Server部署出來的VM,上面都會預先裝好BOSH Agent以及PKS Service(Agent)BOSH就是透過這些Agent來設定VM以及監控VM健康狀態。

另外目前Enterprise PKS只支援Docker Container,不確定之後會不會整合其他的Container Runtime

5. Harbor
Harbor是VMware釋出的一個開源Docker Container Registry,也是屬於CNCF裡的一個專案。Harbor其實並不屬於於PKS產品線的一員,只是通常Pivotal跟VMware會將它與PKS搭配在一起。從上面的架構圖可以看到兩個位於不同地方的Harbor,意思是Harbor有兩種安裝方式:一種是透過PCF Ops Manager安裝,使用Pivotal準備的Harbor Tile去做部署,這樣佈出來的Harbor會在BOSH的管控保護之下。如果不想透過Harbor Tile安裝的話,也可以使用另一種方式自己手動裝(一般是透過docker),安裝方式可以參考Github),這兩種方式都是可以的。

Harbor除了能提供一般Container Registry的服務之外,還能夠整合開源專案Notary以及ClairNotary是CNCF的專案,主要是提供Content Trust簽章服務,確保Image內容不被串改,而Clair能夠針對Image提供靜態分析,根據已知的CVE庫來找出Image淺在的漏洞。

Harbor Tile除了多了一些BOSH Agent以外,其他部分都跟手動裝的版本一模一樣。

6. PKS Client
目前PKS以及BOSH都尚未提供GUI介面來做操作,因此都必須透過CLI來做操作。通常會找一台主機安裝所需要的CLI,這台機器我們就稱為PKS ClientPKS Client並沒有限制一定要甚麼作業系統或是多少資源,就只要能安裝CLI以及存取到PKS環境就可以了。

7. NSX-T
NSX-T是VMware旗下Networking Virtualization產品,與NSX-V不同,NSX-T是完全獨立的原件,它並沒有限制一定要整合vSphere或是建置在vSphere環境上。像筆者就看過OpenStack整合NSX-T的。另外NSX-T也支援Container環境。

NSX-TEnterprise PKS環境中同樣不是必須的,也完全與Pivotal無關係(因此沒有甚麼NSX-T Tile xD),當然你可以不採用NSX-T,直接使用vSphere環境的vSS或是vDS提供給Enterprise PKS環境網路,但是筆者認為PKS要整合NSX-T才能完全增強PKS的功能(可以參照比較表),因為NSX-T除了提供SDN功能之外,還提供了非常強大的微分割,微分割的單位可以縮小到pod跟pod之間,也就是管理者可以自定義ACL給不同的pod,進而達到強大的隔離性。雖然NSX-T很強大且也可以完全整合PKS,但是筆者認為NSX-T還是一個不太穩定的產品,可能剛出來不久還有許多問題跟功能尚未完成,感覺還有一段路要走。

安裝

Enterprise PKS目前安裝方式都是使用PCF Ops Manager來做安裝,由於步驟繁多,因此這裡不多加闡述,有興趣可以參考官方文件 - https://docs.pivotal.io/runtimes/pks/1-4/index.html

Preparation:

  1. vSphere Environment
  2. vCenter Server
  3. NSX-T (Optional)
  4. Ops Manager OVA
  5. PKS Tile
  6. Harbor Tile (Optional)
  7. BOSH/PKS/Ops Manager CLI

PKS支援Cluster 版本

Release Notes - https://docs.pivotal.io/runtimes/pks/1-4/release-notes.html#1.4.1

Enterprise PKS目前最新版是1.4.1,此版所對應的Kubernetes版本是v1.13.5,目前尚無法選擇要部署的Kubernetes版本,因為BOSH部署方式是使用VM Template,安裝套件都是已經包好的了,因此如果想要使用新一點版本的Kubernetes,只能等到下次PKS更新之後了。

參考資料

  1. Pivotal.io - https://pivotal.io/
  2. Rancher - https://rancher.com/
  3. OpenShift - https://www.openshift.com/
  4. IBM Cloud Private - https://www.ibm.com/tw-zh/cloud/private
  5. BOSH - https://www.bosh.io/docs/
  6. Harbor - https://github.com/goharbor/harbor
  7. Notary - https://github.com/theupdateframework/notary
  8. Clair - https://github.com/coreos/clair
  9. NSX-T Data Center Installation Guide
  10. VMware Cloud PKS - https://cloud.vmware.com/vmware-cloud-pks
  11. Enterprise PKS document -
    https://docs.vmware.com/en/VMware-NSX-T-Data-Center/2.4/nsxt_24_install.pdfhttps://docs.pivotal.io/runtimes/pks/1-4/index.html
  12. VMware 發佈 VMware Essential PKS -
    https://blogs.vmware.com/vmware-taiwan/2019/03/01/vmware-%E7%99%BC%E4%BD%88-vmware-essential-pks/

文章內容的轉載、重製、發佈,請註明出處: https://pohsienshih.github.io