1.7. 常见 3scale API 管理安装问题的故障排除
这部分包含常见安装问题列表,并为它们解决提供指导。
1.7.1. 以前的部署导致存在脏的持久性卷声明
问题
之前的部署尝试导致脏的持久性卷声明(PVC),从而导致 MySQL 容器无法启动。
原因
在 OpenShift 中删除项目不会清理与其关联的 PVC。
解决方案
流程
使用
oc get pvc
命令查找包含错误 MySQL 数据的 PVC:# oc get pvc NAME STATUS VOLUME CAPACITY ACCESSMODES AGE backend-redis-storage Bound vol003 100Gi RWO,RWX 4d mysql-storage Bound vol006 100Gi RWO,RWX 4d system-redis-storage Bound vol008 100Gi RWO,RWX 4d system-storage Bound vol004 100Gi RWO,RWX 4d
-
单击 OpenShift Container Platform (OCP)控制台中的 cancel 部署,以停止
system-mysql
pod 的部署。 - 删除 MySQL 路径下的所有内容,以清理卷。
-
启动新的
system-mysql
部署。
1.7.2. 从 Docker registry 中拉取错误
问题
在安装过程中出现以下错误:
svc/system-redis - 1EX.AMP.LE.IP:6379 dc/system-redis deploys docker.io/rhscl/redis-32-rhel7:3.2-5.3 deployment #1 failed 13 minutes ago: config change
原因
OpenShift 通过发出 docker
命令来搜索和调取容器镜像。此命令引用 docker.io
Docker registry,而不是 registry.redhat.io
红帽生态系统目录。
当系统包含 Docker 容器化环境的意外版本时,会出现这种情况。
解决方案
1.7.3. 在本地挂载持久性卷时 MySQL 的权限问题
问题
system-msql pod 崩溃且不部署,从而导致其他系统依赖它失败部署。pod 日志显示以下错误:
[ERROR] Cannot start server : on unix socket: Permission denied [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ? [ERROR] Aborting
原因
MySQL 进程启动时不正确的用户权限。
解决方案
流程
用于持久性卷的目录 MUST 具有 root 组的写入权限。对 root 用户具有读写权限不够,因为 MySQL 服务以 root 组中的不同用户身份运行。以 root 用户身份执行以下命令:
$ chmod -R g+w /path/for/pvs
执行以下命令以防止 SElinux 阻止访问:
$ chcon -Rt svirt_sandbox_file_t /path/for/pvs
1.7.4. 无法上传徽标或图像
问题
无法上传徽标 - system-app
日志显示以下错误:
Errno::EACCES (Permission denied @ dir_s_mkdir - /opt/system/public//system/provider-name/2
原因
OpenShift 无法写入持久卷。
解决方案
流程
确保您的持久卷可由 OpenShift 写入。它应归 root 组所有,并且可写入组。
1.7.5. 测试在 OpenShift 中无法正常工作的调用
问题
测试调用在创建新服务和 OpenShift 上的路由后无法正常工作。通过 curl 直接调用也失败,带有 service not available
信息。
原因
3scale 默认需要 HTTPS 路由,并且 OpenShift 路由不受保护。
解决方案
流程
确保 OpenShift 路由器设置中点击了 安全路由 复选框。
1.7.6. 来自 3scale API 管理的不同项目上部署 APIcast 失败
问题
APIcast 部署失败(pod 没有变为蓝色)。您在日志中看到以下错误:
update acceptor rejected apicast-3: pods for deployment "apicast-3" took longer than 600 seconds to become ready
您在 pod 中看到以下错误:
Error synching pod, skipping: failed to "StartContainer" for "apicast" with RunContainerError: "GenerateRunContainerOptions: secrets \"apicast-configuration-url-secret\" not found"
原因
该机密没有正确设置。
解决方案
流程
使用 APIcast v3 创建 secret 时,指定 apicast-configuration-url-secret
:
$ oc create secret generic apicast-configuration-url-secret --from-literal=password=https://<ACCESS_TOKEN>@<TENANT_NAME>-admin.<WILDCARD_DOMAIN>