Kubernetes pod exec API 异常:如果请求中不存在,则响应不得包含“Sec-WebSocket-Protocol”标头

2024-01-18

我正在尝试根据这篇 SO 帖子中给出的建议设置与 Kubernetes Pod Exec API 的 websocket 连接:如何使用 API 在 pod (kubernetes) 中执行命令? https://stackoverflow.com/questions/34373472/how-to-execute-command-in-a-pod-kubernetes-using-api。 这是我到目前为止所做的 -

  1. 在 Chrome 中安装了简单 Web Socket 客户端扩展。
  2. Started kubectl proxy --disable-filter=true在允许 WS 连接的情况下运行代理。kubectl.exe版本是1.8。
  3. 使用的地址ws://localhost:8001/api/v1/namespaces/default/pods/nginx-3580832997-26zcn/exec?container=nginx&stdin=1&stdout=1&stderr=1&tty=1&command=%2Fbin%2Fsh在 Chrome 扩展程序中连接到exec api.

当我单击“连接”时,Chrome 报告返回错误并显示消息 -

Error during WebSocket handshake: Response must not include 'Sec-WebSocket-Protocol' header if not present in request

显然,kubectl 发回空Sec-WebSocket-Protocol响应中的标头,Chrome 对此感到不满。

我尝试更改 Simple Web Socket Client 的代码open将空协议参数发送到 Websocket 客户端创建调用的方法,例如 -ws = new WebSocket(url, []);诱使 Chrome 在请求中发送空标头,但 Chrome 不发送空标头。

那么可以做什么来直接连接到exec在 Chrome 中?


这是一个已知的问题;kubectl proxy不支持网络套接字 https://github.com/kubernetes/kubernetes/issues/25126。 (您可以通过启动来轻松验证这一点kubectl proxy然后尝试kubectl --server=http://127.0.0.1:8001 exec ...;您将收到消息error: unable to upgrade connection: <h3>Unauthorized</h3>如果过滤器已启用并且Error from server (BadRequest): Upgrade request required如果过滤器被禁用)。

The 困惑 https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/#so-many-proxies可能来自以下事实:kube-apiserverproxy 确实支持 websocket,但该 proxy 与kubectl proxy.

据我所知,你现在有 3 个选择(按难度顺序排列):

  • Access kube-apiserver直接地。您可能需要进行身份验证kubectl proxy现在正在为您处理
  • 使用 SockJS,这就是 Kubernetes Dashboard 的作用执行功能 https://github.com/kubernetes/dashboard/pull/1939
  • Fix #25126 https://github.com/kubernetes/kubernetes/issues/25126
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes pod exec API 异常:如果请求中不存在,则响应不得包含“Sec-WebSocket-Protocol”标头 的相关文章

随机推荐

  • Ga特林 j.n.ConnectException:地址已在使用中

    当使用 Ga特林运行模拟时 我遇到以下异常 j n ConnectException 地址已在使用中 没有更多信息 当测试的服务器无法响应或超时时是否会发生这种情况 我想确保这是服务器抛出的异常 而不是客户端抛出的异常 我在 Windows
  • AWS 负载均衡器连接到同一服务器上的多个端口,无需 PAT

    我有一个 EC2 Web 服务器 它提供一个侦听端口 80 8080 443 和 8443 的应用程序 外部客户端需要在这些端口上与其通信 无端口转换 我试图将其放在负载平衡器后面 但过多的所需端口让我感到困惑 我有一个 ALB 监听 4
  • 当 NFS 挂载失败时,bash 检查目录是否存在挂起

    我有一个 bash profile 脚本 它根据目录存在为我设置一些别名 if d home user games then alias cdgames cd home user games fi 这些目录之一位于 NFS 挂载上 如果文件
  • 如何在 JSON Schema 中制作二维数组?

    下面的二维数组怎么写JSON 架构 http json schema org 网格固定为16 13 它包含完全空的行或具有 int 0 99 或空字符串等值的行 这是数组的示例 94 78 37 78 61 71 42 82 53 62 6
  • PyObjC + Xcode 3.2 + 非 Apple Python

    我想开始尝试使用 PyObjC 开发一些简单的应用程序 我安装了 PyObjC 和 Xcode 模板 我知道 PyObjC 本身可以工作 因为我已经运行了这个脚本 http svn picidae net trunk pici server
  • 从二进制文件中删除 protobuf C++ 编译的路径字符串

    当我编译使用 Protobuf 的 C 程序 然后运行 linux 时strings二进制文件上的命令 其中一个字符串是生成的路径cc文件 包含我的主目录和所有内容 显然 我想从二进制文件中删除我的主目录和其他个人信息 该路径从何而来以及如
  • c 中 qsort() 函数中的 cmpfunc

    有人可以解释一下吗cmpfunc这是用在qsort功能 什么是a and b在这个函数中 它们指向什么 int cmpfunc const void a const void b return int a int b a and b in
  • 如何在 Django 中使用 Pusher?

    我正在尝试使用 Pusher 和 django 构建一个应用程序 我浏览了一些链接 例如https github com pusher django pusherable https github com pusher django pus
  • 删除 Android Gallery 小部件中的边框?

    如何去除图库图像周围丑陋的灰色边框 在 ImageAdapter 中排除此行以停止加载该预设 imageBackground ta getResourceId R styleable Gallery1 android galleryItem
  • 为什么 jsessionid 附加到每个 url 后面?

    我正在 Apache Tomcat 上使用 Spring 框架部署一个应用程序 直接从 Tomcat 运行应用程序时 任何 URL 中根本没有附加 jsessionid 但是在将应用程序映射到域并尝试运行它之后 我在应用程序中的每个 URL
  • SPARQL 两个节点之间的路径

    给定一个图 prefix da
  • Delphi:将 TImage 置于前面

    看下图 如您所见 我无法将按钮发送到后面 这仅适用于标签 那么我该如何发送TImage到前面以其透明度 顺便说一句我读过这个相关问题 https stackoverflow com questions 5369681 controls on
  • Rails 3.2 水豚 Capybara::ElementNotFound: 无法找到 xpath“/html”

    我正在尝试使用 rspec 2 10 0 capybara 1 1 2 测试我的 Rails 应用程序 这是我的测试文件 require spec helper describe AdminPanelController do descri
  • 过程宏可以作为函数进行调试吗?

    我正在尝试调试我正在使用的库中的复杂程序宏 由于我无法将调试器与宏一起使用 并且各种宏扩展工具已被证明在这里毫无用处 因此我正在寻找替代方案 程序宏可以像函数一样运行并进行适当的调试吗 我想象存储结果proc macro TokenStre
  • 从通用音量控制检测应用程序启动

    我有一个针对芒果设备的应用程序 它通过BackgroundAudioAgent 播放音乐 因此 它与通用音量控制 UVC 集成 有没有办法通过点击 UVC 中的艺术家详细信息来检测应用程序何时启动 或者 有没有办法设置深度链接供 UVC 使
  • trust-ncg 仍然存在“Newton-CG 方法需要雅可比”问题

    我指的是中提到的问题当 jac False 时不使用雅可比行列式进行近似时 牛顿 CG 方法需要雅可比行列式 https stackoverflow com q 33926357 6481544 我遇到了同样的问题 要求 jacobian
  • SQL 命令未正确结束?

    我正在使用具有临时关系的 SQL 语句 并且收到错误ORA 009933 SQL command not properly ended 我不认为该声明有任何问题 因此非常感谢任何帮助 声明是 SELECT Temp name Temp Av
  • 重命名并覆盖案例类中的 equals 方法

    我想定义一个名为Ext重命名现有的equals方法equalsByAttributes并定义了一个新的equals同时方法 该特质被使用 扩展案例类 我当前的解决方案看起来有些古怪 case class A id Int extends E
  • 在 UITabBar 的选项卡之间传递数据

    带有说明的故事板屏幕截图 https i stack imgur com a2VqX jpg 我在中使用了这行代码UIViewController第二个选项卡的类别来访问tabBarViewController 但它崩溃了 let frie
  • Kubernetes pod exec API 异常:如果请求中不存在,则响应不得包含“Sec-WebSocket-Protocol”标头

    我正在尝试根据这篇 SO 帖子中给出的建议设置与 Kubernetes Pod Exec API 的 websocket 连接 如何使用 API 在 pod kubernetes 中执行命令 https stackoverflow com