安装常见问题
本文回答安装 API7 网关时的常见问题,并提供相应解决方法。
Q1:控制面为何无法连接 PostgreSQL 数据库?
答:请确认以下事项:
-控制面环境可以访问数据库主机。
- 数据库用户拥有创建表所需的权限。
- 数据库服务器已开放端口 5432。
- 查看控制面日志中的具体错误消息,例如:
kubectl logs -n <namespace> deploy/<dashboard-deployment-name> --tail=100。
Q2:如何解决安装期间的端口冲突错误?
答:如果 7443、7943 或 9080 等端口已被占用,可以:
- Kubernetes:在
values.yaml中更改服务端口。 - Docker Compose:更新主机到容器的端口映射,例如
"8443:7443"。 - 物理机:更新配置文件,监听其他端口。
Q3:数据面在 Dashboard 中为何显示为“Offline”?
答:这通常表示数据面与控制面之间存在通信问题。
- 检查数据面能否通过端口 7943 访问控制面地址。
- 确认 mTLS 证书配置正确且未过期。
- 确保数据面指向正确的控制面/DP Manager 地址,在 Kubernetes 中为
etcd.host,在 Docker Compose 或物理机配置中使用对应设置。
Q4:运行 Helm 命令时出现“Permission Denied”,应如何处理?
答:请确保 Kubernetes 上下文设置正确,并且你拥有命名空间的管理权限。
- 运行
kubectl config current-context验证当前上下文。 - 使用
RBAC为用户账号授予所需权限。
Q5:如何修复镜像拉取错误(ImagePullBackOff)?
答:Kubernetes 节点无法下载容器镜像时会出现此错误。
- 检查能否访问互联网或私有镜像仓库。
- 验证
values.yaml中的镜像仓库和标签。 - 使用私有镜像仓库时,确保正确配置
imagePullSecrets。
Q6:许可证无 效,如何获取新的许可证?
答:可以通过以下方式获取许可证:
- 试用:申请试用许可证。
- 生产:联系你的 API7 客户经理。
- 验证:检查许可证密钥是否已正确复制到配置中,且没有多余空格或换行符。
Q7:控制面/数据面Pod 为何频繁重启(CrashLoopBackOff)?
答:这通常是资源限制或配置错误导致的。
- 运行
kubectl describe pod <pod_name>查看重启原因。 - 检查日志中的错误消息:
kubectl logs -n <namespace> <pod_name> --previous。 - 确认硬件符合系统要求。
Q8:如何配置控制面与数据面之间的 mTLS?
答:控制面与数据面之间默认启用 mTLS,以保护通信安全。
有关证书签发、轮换和验证的详细工作原理,请参阅控制面与数据面之间的双向 TLS。
Q9:能否在 Kubernetes 中部署不使用 LoadBalancer 的 API7?
答:可以使用 NodePort 或 ClusterIP Service。
- NodePort:通过
<NodeIP>:<NodePort>访问服务。 - ClusterIP:将服务保留在集群内部,并通过 Ingress Controller、反向代理或外部负载均衡器公开。
Q10:如何查看 API7 安装版本?
答:
- Helm:运行
helm list -n <namespace>查看已安装的 Chart 和应用版本。 - Dashboard:在 Dashboard 中打开用户菜单并选择 About,查看运行版本。
- Helm 配置项:运行
helm get values <release-name> -n <namespace>,检查特定安装使用的配置项。 - 镜像:运行
kubectl -n <namespace> get pods -o jsonpath='{.items[*].spec.containers[*].image}' | tr ' ' '\n' | sort -u,列出集群中运行的确切镜像标签。