k8s 并发场景下错误: kubectl unable to upgrade connection Unsupported method ('POST')

2022-02-26 22:00:37 +08:00
 weishao666

我们的场景下用 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>
1521 次点击
所在节点    Kubernetes
8 条回复
calmzhu
2022-02-26 22:18:54 +08:00
同时上千条 kubectl 跑?
建议先看下这个报错是哪一层返回的。
jingslunt
2022-02-26 22:38:42 +08:00
kubectl exe pod — bash test.sh
两个中横杠要加,中断后面的参数影响到前面的 kubectl
你这个 sql 是通过 api post 进去的,为什么不直接用数据库语句写入。
api 操作如果存在跨域的时候,需要允许 POST
Pythondr
2022-02-26 22:39:07 +08:00
Kubectl 本质是调用 APISERVER 的接口,这一层本身就是有限频,而且这一层是用来控制集群的,不是让你用来跑业务的……
weishao666
2022-02-27 22:39:51 +08:00
@Pythondr 有试过改用 kubernetes-client 包,通过 apiserver 的 exec 端点,也会偶发的出现连接失败的情况
weishao666
2022-02-27 22:42:08 +08:00
@calmzhu 是的,业务场景需要。没太理解老哥的意思,对 k8s 还不是很熟悉,我理解这个『 Server does not support this operation 』应该也只能是 apiserver 了吧,我们的场景下没有其他 Server
weishao666
2022-02-27 22:44:54 +08:00
@jingslunt 中横杠是有加的,我任务对问题描述影响不大去掉了。SQL 不直接数据库导入是业务限制。『 api 操作如果存在跨域的时候,需要允许 POST 』这个不应该是 apiserver 层面的配置问题,因为问题只是偶发
calmzhu
2022-03-02 20:00:58 +08:00
@weishao666

kube-system 下的所有 pod.mysql-xxxx pod 的日志搜索一下 501

apiServer 前面会有代理。后面会有 controller 等。apiServer 只是一个组件。可能其他组件传过来的。
weishao666
2022-03-03 15:06:07 +08:00
@calmzhu 好的,我试试,谢谢建议~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/836634

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX