1.安装
默认我们已经有了一个k8s集群,采用helm方式安装。以下操作均在 Master 节点执行。
helm要求Helm v3.2.0或以上版本。
多节点worker打标签
如果要将OpenWhisk部署到具有多个工作节点的群集,我们建议使用节点关联将用于OpenWhisk控制平面的计算节点与用于执行用户函数的计算节点分开。通过将每个节点标记为 openwhisk-role = 调用者。在默认配置中,使用KubernetesContainerFactory,节点标签与Pod亲和力结合使用,以通知Kubernetes调度程序如何放置工作,从而使用户操作不会干扰OpenWhisk控制平面。当使用非默认dockercontainer erfactory时,OpenWhisk假定它独占使用这些调用者节点,并将直接安排对它们的工作,完全绕过Kubernetes调度程序。对于每个节点<INVOKER_NODE_NAME>你想成为调用者,执行
kubectl label node <INVOKER_NODE_NAME> openwhisk-role=invoker
kubectl label node instance-4mll599u-2 openwhisk-role=invoker
kubectl label node instance-4mll599u-3 openwhisk-role=invoker
首先下载 OpenWhisk 部署文件并进入文件夹。
git clone https://github.com/apache/openwhisk-deploy-kube.git
cd openwhisk-deploy-kube
新建 mycluster.yaml 文件后续使用,这里我们采用了最基本的安装需求。注意将192.168.124.129替换成自己的 Master IP.
whisk:
ingress:
type: NodePort
apiHostName: 192.168.124.129
apiHostPort: 31001
nginx:
httpsNodePort: 31001
invoker:
containerFactory:
impl: "kubernetes"
使用 Helm 安装 OpenWhisk 并配置 WSK CLI。注意将192.168.124.129替换成自己的 Master IP.
helm install owdev ./helm/openwhisk -n openwhisk --create-namespace -f mycluster.yaml
wsk property set --apihost 192.168.124.129:31001
wsk property set --auth 23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP
等待10分钟左右,OpenWhisk 便会部署成功。期间可以使用kubectl get pods -n openwhisk查看 Pod 的状态。部署成功后,Pod 的状态应该全部变为Running或者Complete.
2.1 踩坑的地方
helm中的脚本有从github拉代码,由于百度云访问github容易中断,因此会出现Pod启动失败。如下图所示:
建议把脚本中用到的仓库导入gitee仓库,地址批量替换成gitee仓库地址,用helm打包后再进行部署,即可解决问题。