*本文做者系VMware雲原生實驗室工程師 彭路git
使用KubeFATE在kubernetes上部署FATE集羣時,提供了兩種部署方式:KubeFATE服務和KubeFATE命令行工具。用戶能夠選擇喜歡的方式來部署FATE集羣。github
有如下幾個配置文件須要注意:rbac-config.yaml,kubefate.yaml,config.yaml,cluster.yaml,cluster-serving.yaml。數據庫
rbac-config.yaml後端
建立KubeFATE所須要的Namespace和ServiceAccount。給ServiceAccount綁定角色。數組
kubefate.yaml網絡
將KubeFATE服務部署到kubernetes上。包括兩部分:KubeFATE服務和MongoDB數據庫。工具
- KubeFATE服務
KubeFATE服務有三部分:Deployment,Service和Ingress。下面分別介紹一下配置項。url
Deployment:spa
env: - name: FATECLOUD_MONGO_URL value: "mongo:27017" - name: FATECLOUD_MONGO_USERNAME value: "root" - name: FATECLOUD_MONGO_PASSWORD value: "root" - name: FATECLOUD_MONGO_DATABASE value: "KubeFate" - name: FATECLOUD_REPO_NAME value: "kubefate" - name: FATECLOUD_REPO_URL value: "https://federatedai.github.io/KubeFATE/" - name: FATECLOUD_USER_USERNAME value: "admin" - name: FATECLOUD_USER_PASSWORD value: "admin" - name: FATECLOUD_SERVER_ADDRESS value: "0.0.0.0" - name: FATECLOUD_SERVER_PORT value: "8080" - name: FATECLOUD_LOG_LEVEL value: "debug"
配置項.net |
說明 |
FATECLOUD_MONGO_URL |
MongoDB的地址,依賴於MongoDB的配置。 |
FATECLOUD_MONGO_USERNAME |
MongoDB的用戶名。 |
FATECLOUD_MONGO_PASSWORD |
MongoDB的密碼。 |
FATECLOUD_MONGO_DATABASE |
MongoDB裏面的數據庫名。 |
FATECLOUD_REPO_NAME |
Helm chart遠程倉庫名。 |
FATECLOUD_REPO_URL |
Helm chart遠程倉庫地址。 |
FATECLOUD_USER_USERNAME |
KubeFATE服務默認用戶名。 |
FATECLOUD_USER_PASSWORD |
KubeFATE服務默認用戶密碼。 |
FATECLOUD_SERVER_ADDRESS |
KubeFATE服務地址。 |
FATECLOUD_SERVER_PORT |
KubeFATE服務端口。 |
FATECLOUD_LOG_LEVEL |
KubeFATE服務日誌等級。 |
Service:
ports:
- name: "8080"
port: 8080
targetPort: 8080
protocol: TCP
type: ClusterIP
端口和deployment配置的一致,網絡類型是ClusterIp。
Ingress:
rules: - host: kubefate.net http: paths: - path: / backend: serviceName: kubefate servicePort: 8080
配置項 |
說明 |
host |
Ingress的域名,經過這個域名來訪問KubeFATE服務。 |
backend |
Ingress的後端就是KubeFATE的Service。 |
更多Ingress相關內容請參考:
https://kubernetes.io/docs/concepts/services-networking/ingress/
- MongoDB數據庫
Deployment:
env: - name: MONGO_INITDB_ROOT_USERNAME value: root - name: MONGO_INITDB_ROOT_PASSWORD value: root
MongoDB初始化的用戶名和密碼。
config.yaml
user: username: admin password: admin serviceurl: kubefate.net
KubeFATE命令行工具調用KubeFATE服務時所用到的配置。Serviceurl是KubeFATE服務的Ingress地址,user是KubeFATE服務的默認用戶名密碼。
cluster.yaml
cluster.yaml聲明須要部署的FATE羣集信息,KubeFATE 命令行工具使用這些信息來部署FATE羣集。
配置項 |
類型 |
說明 |
name |
純量 |
FATE集羣的名字。 |
namespace |
純量 |
FATE集羣在kubernetes上的命名空間。 |
chartName |
純量 |
部署FATE集羣的helm chart名字。 |
chartVersion |
純量 |
部署FATE集羣的helm chart版本。 |
partyId |
純量 |
FATE集羣的Parity ID。 |
modules |
數組 |
須要部署的FATE模塊。 |
proxy |
對象 |
Proxy模塊須要的配置。 |
egg |
對象 |
Egg模塊須要的配置。 |
servingIp |
純量 |
在線推理集羣的IP。 |
servingPort |
純量 |
在線推理集羣的端口。 |
Egg對象:
配置項 |
類型 |
說明 |
count |
純量 |
FATE集羣egg模塊的數量。 |
processor |
純量 |
Egg模塊的進程數。 |
Proxy對象:
多方FATE集羣支持兩種部署模式:經過exchange模塊鏈接和直接鏈接模式。
Exchange模式:
每一個參與方都與exchange集羣鏈接,exchange有全部參與方的proxy地址。
- Exchange集羣只須要部署proxy模塊。在proxy對象的配置裏,partyList須要全部參與方的proxy地址,不須要exchange配置項。
- 參與方FATE集羣只須要填寫exchange配置項,不須要填寫partyList。
直連模式:
全部參與方直接互相鏈接。
- 不須要填寫exchange配置項。
- Partylist配置項裏面須要有全部參與方的proxy地址。
cluster-serving.yaml
cluster-serving.yaml聲明須要部署的FATE在線推理羣集信息,KubeFATE 命令行工具使用這些信息來部署FATE在線推理羣集。
配置項 |
類型 |
說明 |
name |
純量 |
在線推理集羣的名字。 |
namespace |
純量 |
在線推理集羣在kubernetes上的命名空間。 |
chartName |
純量 |
部署在線推理集羣的helm chart名字。 |
chartVersion |
純量 |
部署在線推理集羣的helm chart版本。 |
partyId |
純量 |
在線推理集羣的Parity ID。 |
modules |
數組 |
須要部署的模塊。 |
servingProxy |
對象 |
在線推理Proxy模塊須要的配置。 |
ServingServer |
對象 |
在線推理Server模塊須要的配置。 |
servingProxy對象:
ServingServer對象:
在線推理集羣的Server模塊須要和對應的FATE集羣的Fate_flow通訊。因此須要配置Fate_flow的信息。