当前位置: 首页 > 面试题库 >

“ kubectl exec”导致“错误:无法升级连接:未经授权”

严瀚昂
2023-03-14
问题内容

kubectl exec在启用了k8s 1.6.4 RBAC的群集上进行了尝试,返回的错误是:error: unable to upgrade connection: Unauthorizeddocker exec在同一容器上成功。否则,kubectl正在工作。kubectl通过SSH连接建立隧道,但我认为这不是问题。

已启用kubelet身份验证,但未启用authz。该文档说的authz是AlwaysAllow默认情况下,所以我离开了这种方式。

我感觉它类似于这个问题。但是错误消息有点不同。

提前致谢!

kubectl exec命令的详细日志:

I0614 16:50:11.003677   64104 round_trippers.go:398] curl -k -v -XPOST  -H "X-Stream-Protocol-Version: v4.channel.k8s.io" -H "X-Stream-Protocol-Version: v3.channel.k8s.io" -H "X-Stream-Protocol-Version: v2.channel.k8s.io" -H "X-Stream-Protocol-Version: channel.k8s.io" https://localhost:6443/api/v1/namespaces/monitoring/pods/alertmanager-main-0/exec?command=%2Fbin%2Fls&container=alertmanager&container=alertmanager&stderr=true&stdout=true
I0614 16:50:11.003705   64104 round_trippers.go:398] curl -k -v -XPOST  -H "X-Stream-Protocol-Version: v4.channel.k8s.io" -H "X-Stream-Protocol-Version: v3.channel.k8s.io" -H "X-Stream-Protocol-Version: v2.channel.k8s.io" -H "X-Stream-Protocol-Version: channel.k8s.io" -H "User-Agent: kubectl/v1.6.4 (darwin/amd64) kubernetes/d6f4332" https://localhost:6443/api/v1/namespaces/monitoring/pods/alertmanager-main-0/exec?command=%2Fbin%2Fls&container=alertmanager&container=alertmanager&stderr=true&stdout=true
I0614 16:50:11.169474   64104 round_trippers.go:417] POST https://localhost:6443/api/v1/namespaces/monitoring/pods/alertmanager-main-0/exec?command=%2Fbin%2Fls&container=alertmanager&container=alertmanager&stderr=true&stdout=true 401 Unauthorized in 165 milliseconds
I0614 16:50:11.169493   64104 round_trippers.go:423] Response Headers:
I0614 16:50:11.169497   64104 round_trippers.go:426]     Date: Wed, 14 Jun 2017 08:50:11 GMT
I0614 16:50:11.169500   64104 round_trippers.go:426]     Content-Length: 12
I0614 16:50:11.169502   64104 round_trippers.go:426]     Content-Type: text/plain; charset=utf-8
I0614 16:50:11.169506   64104 round_trippers.go:417] POST https://localhost:6443/api/v1/namespaces/monitoring/pods/alertmanager-main-0/exec?command=%2Fbin%2Fls&container=alertmanager&container=alertmanager&stderr=true&stdout=true 401 Unauthorized in 165 milliseconds
I0614 16:50:11.169509   64104 round_trippers.go:423] Response Headers:
I0614 16:50:11.169512   64104 round_trippers.go:426]     Date: Wed, 14 Jun 2017 08:50:11 GMT
I0614 16:50:11.169545   64104 round_trippers.go:426]     Content-Length: 12
I0614 16:50:11.169548   64104 round_trippers.go:426]     Content-Type: text/plain; charset=utf-8
F0614 16:50:11.169635   64104 helpers.go:119] error: unable to upgrade connection: Unauthorized

问题答案:

这是一个RTFM时刻…解决方案基本上是针对authn,authz或同时执行此页面上的所有步骤。

我省略了--kubelet-client-certificate--kubelet-client- key这导致了错误。如果没有这些标记,kube-apiserver则在执行时将无法通过kubelet进行身份验证kubectl exec

我最初配置authn的尝试是通过阅读kubelet守护程序的文档(即,不是上面的文档)。因此,严重的遗漏。



 类似资料:
  • 所以我刚刚在一个小项目中升级了SpringBoot版本,现在身份验证搞砸了。当我尝试获取身份验证令牌时,我得到一个错误: 我和邮递员玩得很开心。如果我将grant_type/pw/username从正文移到QueryParams,它就可以正常工作了。但我们不能改变这一点。那么,有没有办法找出是哪个依赖项更改导致了这种情况?我查看了升级文档(2.1-

  • 我正在使用QT Creator在Ubuntu上制作一个C++程序。我编写的程序编译得很好,直到我决定开始使用C++11而不是C++98(这是QT Creator中的默认值)。我使用的是自己的cmake文件,而不是qmake,为此,我在中包含了以下一行: 在转移到C++11之后,我在行得到一个错误。这是因为,据我所见,变量在任何地方都没有定义,尽管定义了变量。 因此,我有两个问题: 1)为什么变量没

  • 问题内容: 我从Nexus存储库中检出了代码。我更改了帐户密码,并在文件中正确设置了密码。在执行时,我收到错误消息,说明它尝试从该存储库下载文件。 任何想法如何解决此错误?我在Maven 3.04中使用Windows 7 问题答案: 这里的问题是所使用的密码出现错字错误,由于密码中使用了字符/字母,因此很难识别。

  • 我在Visual Studio 2015中升级到了Xamarin的最新版本。然后我编译了我的Android项目,遇到了以下错误: 无法访问android。应用程序。活动错误类文件:[驱动器]:[android sdk文件夹]\platforms\android-24\android。jar(android/app/Activity.class)类文件版本52.0错误,应为50.0。请删除或确保它出

  • 我有以下数据帧: 尝试使用spark-sql进行连接,如下所示 给出错误为: 我在这里做错了什么,如何修复?

  • 未能执行goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy(default-deploy)on project time-demo-api:未能部署工件:无法将工件com.mycompany:time-demo-api:pom:1.0.1-20210503.122407-1从/到快照(http://localhost:808