本文重点说明在已有 Kubernetes 环境中部署 DataEase v2 版本会遇到的问题及对应的处理。
1 环境要求 {#1-%E7%8E%AF%E5%A2%83%E8%A6%81%E6%B1%82}
部署服务器要求:
操作系统: Ubuntu 22.04 / CentOS 7 64 位系统
CPU/内存: 4核8G
磁盘空间: 200G
2 部署问题及问题处理 {#2-%E9%83%A8%E7%BD%B2%E9%97%AE%E9%A2%98%E5%8F%8A%E9%97%AE%E9%A2%98%E5%A4%84%E7%90%86}
2.1 执行 helm install dataease-helm-v2.x.x.tgz 报错显示 Error: could not find tiller {#2.1-%E6%89%A7%E8%A1%8C-helm-install-dataease-helm-v2.x.x.tgz-%E6%8A%A5%E9%94%99%E6%98%BE%E7%A4%BA-error%3A-could-not-find-tiller}
原因:DataEase 安装需要依赖 helm 的 tiller 组件处理请求,通常意味着 Tiller 服务不在 Kubernetes 集群中运行,或者 Helm Client 与 Tiller 之间的连接出现了问题。
问题处理:
检查tiller服务是否在 Kubernetes 集群中运行。
[root@master ~]# kubectl get pods -A
发现 tiller 服务不存在需要重新初始化创建对应tiller服务
[root@master ~]# vi helm-rbac.yaml
helm-rbac.yaml 链接:https://jcnc8shk3xlt.feishu.cn/wiki/YnhfwNutYiWuL8knbEycCcKtnwf?from=from_copylink
\[root@master \~\]# kubectl apply -f helm-rbac.yaml
`[root@master ~]# helm init -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.3 --stable-repo-url http://mirror.azure.cn/kubernetes/charts/ --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's@apiVersion: extensions/v1beta1@apiVersion: apps/v1@' | kubectl apply -f -`
[root@master ~]# helm install dataease-helm-v2.10.0.tgz
2.2 标准 Kubenetes 部署需要将应用部署到对应的 namespace 中,发现 namespace 为 default {#2.2-%E6%A0%87%E5%87%86-kubenetes-%E9%83%A8%E7%BD%B2%E9%9C%80%E8%A6%81%E5%B0%86%E5%BA%94%E7%94%A8%E9%83%A8%E7%BD%B2%E5%88%B0%E5%AF%B9%E5%BA%94%E7%9A%84-namespace-%E4%B8%AD%EF%BC%8C%E5%8F%91%E7%8E%B0-namespace-%E4%B8%BA-default}
##查看 helm 中 DataEase 的应用
\[root@master \~\]# helm list
##卸载 DataEase 应用
\[root@master \~\]# helm delete de2 (helm V2 版本用法 ,V3 用 uninstall)
\[root@master \~\]# helm delete de2 --purge
##设置安装对应的 namespace并重新安装
\[root@master \~\]# kubectl config set-context --current --namespace=de2
`[root@master ~]# helm install dataease-helm-v2.10.0.tgz -n de2`
2.3 NFS 存储类配置失效导致 apisix-dashboard 服务状态为 CrashLoopBackOff 且一直重启 {#2.3-nfs-%E5%AD%98%E5%82%A8%E7%B1%BB%E9%85%8D%E7%BD%AE%E5%A4%B1%E6%95%88%E5%AF%BC%E8%87%B4-apisix-dashboard-%E6%9C%8D%E5%8A%A1%E7%8A%B6%E6%80%81%E4%B8%BA-crashloopbackoff-%E4%B8%94%E4%B8%80%E7%9B%B4%E9%87%8D%E5%90%AF}
方法一:
##查看服务详细结构和日志查看报错信息
`[root@master ~]# kubectl describe pod apisix-dashboard-656787d7db-pb2th -n de2`
##根据日志显示容器再重启,查看docker服务日志
`[root@master ~]# systemctl status docker -l`
##查看各节点是否有挂载共享 NFS ,若都挂载上,则为 nfs 服务与共享目录之间出现问题
\[root@master \~\]# vi nfs-storage-class.yaml
nfs-storage-class.yaml 内容链接:https://jcnc8shk3xlt.feishu.cn/wiki/BkF0w0KN4iKWyRkgXc8cLDQKnLh?from=from_copylink
\[root@master \~\]# kubectl apply -f nfs-storage-class.yaml
`[root@master ~]# kubectl delete pod apisix-dashboard-656787d7db-pb2th`
方法二 :
重装 NFS ,重装文档链接:++https://jcnc8shk3xlt.feishu.cn/wiki/DnkpwPQSPipohSkEFE4cO7HlnWe?from=from_copylink++
2.4 DataEase 域名访问503报错 ingress 容器 Failed to watch v1.EndpointSlice: failed to listv1.EndpointSlice: the server could not find the requested resource {#2.4-dataease-%E5%9F%9F%E5%90%8D%E8%AE%BF%E9%97%AE503%E6%8A%A5%E9%94%99-ingress-%E5%AE%B9%E5%99%A8-failed-to-watch-v1.endpointslice%3A-failed-to-list-v1.endpointslice%3A-the-server-could-not-find-the-requested-resource}
原因分析: EndpointSlice API 组件不可用导致 ingress 无法进行域名代理或者 ingress 服务权限不足导致无法访问 EndpointSlice 。
##查看 API 组件是否可用
[root@master ~]# kubectl api-resources | grep EndpointSlice
##修改 rbac.yaml 是否确实有对应的resource
\[root@master \~\]# kubectl delete -f ingress-controller.yaml
`[root@master ~]# vi ingress-controller.yaml`
##重装后成功访问 DataEase