V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
weishao666
V2EX  ›  Kubernetes

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

  •  
  •   weishao666 · 2022-02-26 22:00:37 +08:00 · 1377 次点击
    这是一个创建于 780 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    apiServer 前面会有代理。后面会有 controller 等。apiServer 只是一个组件。可能其他组件传过来的。
    weishao666
        8
    weishao666  
    OP
       2022-03-03 15:06:07 +08:00
    @calmzhu 好的,我试试,谢谢建议~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1688 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 16:45 · PVG 00:45 · LAX 09:45 · JFK 12:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.