故障排查
1. http: server gave HTTP response to HTTPS client
CSGHub 默认安装使用不安全的 registry(即上面提到的:<domain or IPv4>:5000),需要确保 Kubernetes 可以从这个 registry 拉取镜像。因此在 Kubernetes 的每个节点上需做如下配置:
- 配置前请确认配置文件
/etc/containerd/config.toml是否存在,若不存在,可以使用以下命令创建。
mkdir -p /etc/containerd/ && containerd config default >/etc/containerd/config.toml
-
配置 config_path
-
Containerd 1.x
version = 2
[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "/etc/containerd/certs.d" -
Containerd 2.x
version = 3
[plugins."io.containerd.cri.v1.images".registry]
config_path = "/etc/containerd/certs.d"
-
-
配置
hosts.toml# 创建 Registry 配置目录
mkdir /etc/containerd/certs.d/<domain or IPv4>:5000
# 定义配置
cat >/etc/containerd/certs.d/<domain or IPv4>:5000/hosts.toml <<EOF
server = "http://<domain or IPv4>:5000"
[host."http://<domain or IPv4>:5000"]
capabilities = ["pull", "resolve", "push"]
skip_verify = true
plain-http = true
EOF -
重启
containerd服务systemctl restart containerd
2. tcp: lookup casdoor.example.com on 10.43.0.10:53: no such host
此问题是由于集群无法解析域名,如果是公有域名请配置域名解析,如果是自定义域名请配置 CoreDNS 和 Hosts 解析。CoreDNS 解析配置方式如下:
# 添加自定义域名解析
$ kubectl apply -f - <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
name: coredns-custom
namespace: kube-system
data:
example.server: |
example.com {
hosts {
172.25.11.131 csghub.example.com csghub
172.25.11.131 casdoor.example.com casdoor
172.25.11.131 registry.example.com registry
172.25.11.131 minio.example.com minio
172.25.11.131 temporal.example.com temporal
172.25.11.131 starship.example.com starship
172.25.11.131 starship-api.example.com starship-api
}
}
EOF
# 更新 coredns pods
$ kubectl -n kube-system rollout restart deploy coredns
3. ssh: connect to host csghub.example.com port 22: Connection refused
此问题常由于 gitlab-shell job 执行失败导致,出现此问题请按照如下方式进行排查:
-
查看
$ kubectl get cm csghub-ingress-nginx-tcp -n csghub -o yaml
apiVersion: v1
data:
"22": default/csghub-gitlab-shell:22
......确认 22 端口对应的服务名是否正确。
-
如果不正确手动进行修改
$ kubectl -n csghub edit configmap/csghub-ingress-nginx-tcp
apiVersion: v1
data:
"22": csghub/csghub-gitlab-shell:22
# 更新 ingress-nginx-controller
$ kubectl rollout restart deploy csghub-ingress-nginx-controller -n csghub
4. 如何禁用多源同步并清理已经同步的数据
CSGHub 默认启动会开启多源同步,但是在某些情况下可以能需要禁用多源同步仅做本地模型的托管,因此就需要禁用多源同步并且需要清楚已经同步到本地的多源 同步列表数据。具体操作如下:
-
Docker
-
添加如下配置
services:
csghub:
image: opencsg-registry.cn-beijing.cr.aliyuncs.com/opencsghq/omnibus-csghub:<version>
environment:
CSGHUB_OMNIBUS_CONFIG: |
csghub:
external_url: "http://csghub.example.com"
......
server:
multi_sync:
enabled: false # 禁用多源同步
...... -
应用配置
docker compose up -d -
清理多源同步数据
docker exec -it omnibus-csghub-1 csghub-psql "SELECT cleanup_multi_sync_data();"
-
-
Helm Chart
-
v1.10.0 以后版本
helm upgrade --install csghub csghub/csghub \
......
--set csghub.server.multiSync.enabled=false \
...... -
v1.10.0 及以前版本
helm upgrade --install csghub csghub/csghub \
......
--set csghub.server.environments.STARHUB_SERVER_MULTI_SYNC_ENABLED=false \
...... -
清理多源同步数据
kubectl exec -it pod/csghub-postgresql-0 -n csghub -- su - postgres -lc "psql -d csghub_server -c 'SELECT cleanup_multi_sync_data();'"
-
5. failed to create pull mirror in mirror server: rpc error: code = PermissionDenied desc = permission denied
创建镜像仓库失败,排查 Gitaly 令牌是否正确。
6. failed to set rlimit for open files. Try starting as root or requesting smaller maxconns value
此问题是问题机器的配置或设置不足以支持过多的 loki 连接,尝试减低连接数设置即可,操作如下:
--set loki.chunksCache.connectionLimit=1000 --set loki.resultsCache.connectionLimit=1000
7. database "csghub_dataflow" does not exists
此问题是因为在 csghub 应用初始化安装的饰扣,postgresql.databases列表中并没有包含数据库csghub_dataflow,手动创建即可:
kubectl exec -it csghub-postgresql-0 -n csghub -- su - postgres -lc 'psql -U csghub'
CREATE DATABASE csghub_dataflow ENCODING UTF8;
等待 Pod 自动重建或者手动快速重建。
kubectl rollout restart sts csghub-dataflow -n csghub
8. After upgrading, refreshing the page prompts 'Unauthorized'.
请尝试登出后重新登录。