
我们的场景下用 k8s 启动容器校验用户的 sql 是否正确,每个用户一个容器,可能同时有成百上千个用户在线,都通过 kubectl 在不同容器中执行脚本,偶发出现如下问题,困扰了许久没找到解决方案,请教 v 友们有没有熟悉这块的?不胜感激!
command: kubectl exec mysql-8140296 bash run_sql.sh output: error: unable to upgrade connection: <head> <title>Error response</title> </head> <body> <h1>Error response</h1> <p>Error code 501. <p>Message: Unsupported method ('POST'). <p>Error code explanation: 501 = Server does not support this operation. </body> 1 calmzhu 2022 年 2 月 26 日 同时上千条 kubectl 跑? 建议先看下这个报错是哪一层返回的。 |
2 jingslunt 2022 年 2 月 26 日 via iPhone kubectl exe pod bash test.sh 两个中横杠要加,中断后面参数影响到前面的 kubectl 你这个 sql 是通过 api post 进去的,为什么不直接用数据库语句写入。 api 操作如果存在跨域的时候,需要允许 POST |
3 Pythondr 2022 年 2 月 26 日 via iPhone Kubectl 本质是调用 APISERVER 的接口,这一层本身就是有限频,而且这一层是用来控制集群的,不是让你用来跑业务的…… |
4 weishao666 OP @Pythondr 有试过改用 kubernetes-client 包,通过 apiserver 的 exec 端点,也会偶发的出现连接失败的情况 |
5 weishao666 OP @calmzhu 是的,业务场景需要。没太理解老哥的意思,对 k8s 还不是很熟悉,我理解这个『 Server does not support this operation 』应该也只能是 apiserver 了吧,我们的场景下没有其他 Server |
6 weishao666 OP @jingslunt 中横杠是有加的,我任务对问题描述影响不大去掉了。SQL 不直接数据库导入是业务限制。『 api 操作如果存在跨域的时候,需要允许 POST 』这个不应该是 apiserver 层面的配置问题,因为问题只是偶发 |
7 calmzhu 2022 年 3 月 2 日 @weishao666 kube-system 下的所有 pod.mysql-xxxx pod 的日志搜索一下 501 apiServer 前面会有代理。后面会有 controller 等。apiServer 只是一个组件。可能其他组件传过来的。 |
8 weishao666 OP @calmzhu 好的,我试试,谢谢建议~ |