创建集群过程无法激活集群

  • Choerodon平台版本:0.23.0

  • 运行环境:自主搭建

  • 问题描述:

当创建集群过程中,最后一步执行以下命令(我是在与choerodon平台同一个k8s集群中执行该命令的):

helm upgrade --install --create-namespace
choerodon-cluster-agent-stagingcluster
–repo=http://openchart.choerodon.com.cn/choerodon/c7n/
–namespace=choerodon
–version=0.23.5
–set config.connect=ws://devops.devops.k8s.arch.dapp.com/websocket
–set config.token=b01ed0cf-589a-4278-9217-64550007f944
–set config.email=admin@hzero.com
–set-string config.clusterId=114055066138316800
–set config.choerodonId=a3b892d12
–set rbac.create=true
choerodon-cluster-agent
Release “choerodon-cluster-agent-stagingcluster” does not exist. Installing it now.
NAME: choerodon-cluster-agent-stagingcluster
LAST DEPLOYED: Tue Nov 10 17:34:22 2020
NAMESPACE: choerodon
STATUS: deployed
REVISION: 1
TEST SUITE: None
执行完成后,集群管理中对应创建的集群一直处于未激活状态。
查看choerodon/choerodon-cluster-agent-stagingcluster-8f64d797b-cqhh9容器的日志如下:

E1110 17:56:02.951016 6 client.go:104] dial error ws://devops.devops.k8s.arch.dapp.com/websocket?group=cluster:114055066138316800&processor=agent&secret_key=devops_ws&key=cluster:114055066138316800&clusterId=114055066138316800&token=b01ed0cf-589a-4278-9217-64550007f944&version=0.23.5: websocket: bad handshake E1110 17:56:07.969964 6 client.go:104] dial error ws://devops.devops.k8s.arch.dapp.com/websocket?group=cluster:114055066138316800&processor=agent&secret_key=devops_ws&key=cluster:114055066138316800&clusterId=114055066138316800&token=b01ed0cf-589a-4278-9217-64550007f944&version=0.23.5: websocket: bad handshake

大量重复的以上日志信息。
根据日志显示的信息是websocket握手失败,进入容器shell中测试devops.devops.k8s.arch.dapp.com可以正确解析。使用curl 将ws替换成http可以正常返回响应信息。
不知道这是什么问题造成的呢。

  • 建议:

    提出您认为不合理的地方,帮助我们优化用户操作
    在删除集群时,提示使用命令helm del choerodon-cluster-agent-stagingcluster --purge进行删除,而helm v3.2.4 已经使用uninstall替代了del,另外该版本已经不支持–purge标记了,希望在代码中做出同步修改。

你能在本地通过测试连上websocket吗?
ws://devops.devops.k8s.arch.dapp.com/websocket?group=cluster:114055066138316800&processor=agent&secret_key=devops_ws&key=cluster:114055066138316800&clusterId=114055066138316800&token=b01ed0cf-589a-4278-9217-64550007f944&version=0.23.5

然后看看devops的日志有啥输出

在agent的pod里面用curl -I命令再看看结果是怎样的?这个是大写的i

找到原因了,是因为我的nginx负载均衡器的配置不支持websocket。添加对应的配置问题就解决了。文档参考:https://www.nginx.com/blog/websocket-nginx/
范例如下:
location /wsapp/ {
proxy_pass http://wsbackend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “Upgrade”;
proxy_set_header Host $host;
}

感谢@ Electricightlord的回复,问题已经解决了,是nginx作为负载均衡器的配置问题造成的。 再次感谢。

方便告知一下改哪里的nginx配置吗?我这样的配置内容是否正确:
#websocket
location /websocket/ {
proxy_pass http://devops.example.choerodon.io/;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
}
我的域名是devops.example.choerodon.io
非常感谢!!!