此篇文章已不再更新,內容可能已過時
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就是其中一種這種平台(產品),類似的其他產品還有Rancher、Redhat OpenShift以及IBM Cloud Private等。
目前Pivotal有三種不同的PKS產品:
VMware Enterprise PKS
VMware Essential PKS
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套件組合而成的,例如用來備份Kubernetes
的velero、或是作為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 Server
、Harbor
或K8s 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去做設定及安裝一些PKS
及Kubernetes
的必要元件,如kube-proxy
, kubelet
, docker daemon
等等。
4. Kubernetes Cluster
分成master
以及worker
,目前PKS佈出來的Kubernetes cluster
都是佈在VM上面(畢竟一開始本來就是為vSphere打造的)。PKS
可以一次部署多個Cluster,因此企業可以根據不同部門,給不同的Kubernetes Cluster
並且指派不同的權限,且彼此是獨立開來的。所有透過BOSH Director
跟PKS 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以及Clair。Notary
是CNCF的專案,主要是提供Content Trust
簽章服務,確保Image內容不被串改,而Clair
能夠針對Image提供靜態分析,根據已知的CVE庫來找出Image淺在的漏洞。
Harbor Tile
除了多了一些BOSH Agent
以外,其他部分都跟手動裝的版本一模一樣。
6. PKS Client
目前PKS
以及BOSH
都尚未提供GUI介面來做操作,因此都必須透過CLI
來做操作。通常會找一台主機安裝所需要的CLI
,這台機器我們就稱為PKS Client
,PKS Client
並沒有限制一定要甚麼作業系統或是多少資源,就只要能安裝CLI
以及存取到PKS
環境就可以了。
7. NSX-T
NSX-T
是VMware旗下Networking Virtualization
產品,與NSX-V
不同,NSX-T
是完全獨立的原件,它並沒有限制一定要整合vSphere
或是建置在vSphere
環境上。像筆者就看過OpenStack
整合NSX-T
的。另外NSX-T
也支援Container
環境。
NSX-T
在Enterprise 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:
- vSphere Environment
- vCenter Server
- NSX-T (Optional)
- Ops Manager OVA
- PKS Tile
- Harbor Tile (Optional)
- 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
更新之後了。
參考資料
- Pivotal.io - https://pivotal.io/
- Rancher - https://rancher.com/
- OpenShift - https://www.openshift.com/
- IBM Cloud Private - https://www.ibm.com/tw-zh/cloud/private
- BOSH - https://www.bosh.io/docs/
- Harbor - https://github.com/goharbor/harbor
- Notary - https://github.com/theupdateframework/notary
- Clair - https://github.com/coreos/clair
- NSX-T Data Center Installation Guide
- VMware Cloud PKS - https://cloud.vmware.com/vmware-cloud-pks
- 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
- VMware 發佈 VMware Essential PKS - https://blogs.vmware.com/vmware-taiwan/2019/03/01/vmware-%E7%99%BC%E4%BD%88-vmware-essential-pks/
文章內容的轉載、重製、發佈,請註明出處: https://blog.phshih.com/