跳转至

部署和维护 / Helm 部署

本文档主要介绍如何通过 Helm 部署 DataFlux Func,Helm 目前只支持 GSE 版本,老版本可直接升级为 GSE 版本。

1. 系统及环境要求

安装 DataFlux Func 之前,请务必确认环境已经满足以下条件。

1.1 系统要求

运行 DataFlux Func 的集群需要满足以下条件:

  • Kubernetes > 1.14
  • Helm >= 3.0
  • 网络带宽 >= 10Mbps
  • 内存容量 >= 4GB
  • CPU 核心数 >= 2
  • 使用外部 MySQL 时,MySQL 版本必须为 5.7 以上,开启innodb_large_prefix参数,且数据库编码为utf8mb4
  • 使用外部 Redis 时,Redis 版本必须为 5.0 以上,至少 1 GB 可用内存,非集群版

DataFlux Func 的存储尽量使用共享存储,hostPath 存在弊端

2. 命令行方式部署

2.1 获取集群存储类

执行命令:

Bash
1
kubectl get sc

输出如下:

Text Only
1
2
NAME         PROVISIONER                                     RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
nfs-client   cluster.local/nfs-subdir-external-provisioner   Delete          Immediate           true                   77d

2.2 查看 Helm 版本

执行命令:

Bash
1
helm version

2.3 执行安装

Bash
1
2
3
helm install {Release Name} func --repo https://pubrepo.guance.com/chartrepo/func -n {Namespace} --create-namespace  \
    --set storage.pvc.enabled=true,storage.pvc.storageClass="{Storage Class}" \
    --set ingress.enabled=true,ingress.hostName="{Host Name}"

{Release Name} 为 Helm 别名,{Namespace} 如果没有会被创建,{Storage Class} 为步骤一的存储类名称,{Host Name} 为 ingress 的域名,安装成功可以访问

Helm 部署默认会安装 MySQL 和 Redis。您也可以使用外部的 MySQL 和 Redis。详细部署方式见 charts 包中的 README 文档

2.4 验证安装

执行命令:

Bash
1
helm ls -n {Namespace}

STATUS 为 deployed 表示成功

也可以通过浏览器访问你所指定的 {Host Name}

2.5 初始化系统

浏览器访问设置的 ingress 域名,可以直接使用默认配置进行初始化 自定义你的配置,也可以默认保存和初始化数据库。

3. Rancher 可视化方式部署

3.1 部署前提条件

  • 集群已注册 Rancher 容器管理平台
  • Rancher 用户具有管理应用市场的权限

3.2 添加 Chart 仓库

登录 Rancher 平台,应用&应用市场 / Chart 仓库, 创建仓库,仓库地址为 https://pubrepo.guance.com/chartrepo/func

3.3 配置和安装

选择「Charts / Func

点击安装

设置命名空间

设置存储

设置访问方式

3.4 验证安装

选择 应用&应用市场-已安装的应用

3.5 初始化系统

步骤与「命令行方式部署 / 初始化系统」相同

4. Func 升级

4.1 获取 values 配置

执行命令:

Bash
1
2
helm get values {Release Name}  -n {Namespace} -o yaml > values.yaml
cat values.yaml

4.2 获取当前 Func 版本

执行命令:

Bash
1
helm ls -n {Namespace}

4.3 升级 Func

执行命令:

Bash
1
2
3
helm upgrade {Release Name} func --repo https://pubrepo.guance.com/chartrepo/func \
    -n {Namespace}  \
    -f values.yaml

4.4 验证升级结果

执行命令:

Bash
1
helm ls -n {Namespace}

5. 其他问题

5.1 浏览器返回 502

如果 Helm 状态显示 deployed, 可以按照如下步骤进行排查:

检查 Ingress 是否创建成功

查看 ingress 信息:

Bash
1
kubectl get ing -n {Namespace}

检查 Pod 状态

一般为 pvc 创建失败引起,请根据实际情况解决问题

查看 Pod 状态:

Bash
1
kubectl get pods -n {Namespace}

输出如下:

Text Only
1
2
3
4
5
6
7
8
9
NAME                                READY   STATUS    RESTARTS   AGE
func-mysql-575d576db7-zclcr         1/1     Running   0          13m
func-redis-fc8f8b95f-c27b2          1/1     Running   0          13m
func-server-7d44fc4dc6-d4gp8        1/1     Running   0          13m
func-worker-0-cb64778bc-q6vts       1/1     Running   2          13m
func-worker-1-6-597668777f-lnmbb    1/1     Running   2          13m
func-worker-7-8f976bfd9-fz7jf       1/1     Running   2          13m
func-worker-8-9-656fdb9bd9-rcbph    1/1     Running   1          13m
func-worker-beat-67c995968c-znq2r   1/1     Running   1          13m

查看 PVC 状态:

Bash
1
kubectl get pvc -n {Namespace}

输出如下:

Text Only
1
2
3
func-mysql       Pening    pvc-0a3db9c5-0b60-428b-9b19-4ff827d155fe   50G    RWX    nfs-client    15m
func-redis       Pening    pvc-cfceb581-c711-4e1d-9ae9-8063ca1ee1a9   10G    RWX    nfs-client    15m
func-resources   Bound     pvc-0cc6f1df-666c-4512-bea9-baa40461c81c   10G    RWX    nfs-client    15m

5.2 产生「cannot re-use a name that is still in use」错误

如果部署发现「cannot re-use a name that is still in use」的错误,说明当前 namespace 已经有了 {Release Name},。

你可以将旧的 {Release Name} 删除后安装,也可以更换 {Release Name}

5.3 产生「连接到连接器超时」错误

如果创建连接器发现「连接到连接器超时」的错误,请重启所有与 func 相关的 pod。

以下为 func 相关的 deployment:

  • func-server
  • func-worker-0
  • func-worker-1-6
  • func-worker-7
  • func-worker-8-9
  • func-worker-beat

func-server 的 func 为 {Release Name},会随 {Release Name} 的更改而改变