【问题标题】:Kubernetes how does Kubectl exec works and how to troubleshoot itKubernetes Kubectl exec 是如何工作的以及如何解决它
【发布时间】:2018-10-13 12:11:58
【问题描述】:

谁能分享一下 kubectl exec 的工作原理,比如技术概述。 还有什么方法可以解决。

例如,我遇到以下问题:尝试连接到 pod 时:

kubectl.exe : I0502 04:25:18.562064 7288 loader.go:357] 配置 从文件 C:\Users\u615648/.kube/config 加载在 line:1 char:1 + .\kubectl.exe exec dataarchives-service-264802370-mjwcl date -n fdm- ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (I0502 04:25:18....48/.kube/config:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError

I0502 04:25:18.636776 7288 round_trippers.go:414] 获取 https://fdmmgmt.uksouth.cloudapp.azure.com/api/v1/namespaces/fdm-development/pods/dataarchives-service-264802370-mjwcl I0502 04:25:18.636776 7288 round_trippers.go:421] 请求标头: I0502 04:25:18.636776 7288 round_trippers.go:424] 接受: 应用程序/json,/ I0502 04:25:18.636776 7288 round_trippers.go:424] 用户代理:kubectl.exe/v1.9.3 (windows/amd64) kubernetes/d283541 I0502 04:25:18.716758 7288 round_trippers.go:439] 响应状态:79 毫秒内 200 OK I0502 04:25:18.716758 7288 round_trippers.go:442] 响应标头: I0502 04:25:18.716758 7288 round_trippers.go:445] 内容类型: 应用程序/json I0502 04:25:18.716758 7288 round_trippers.go:445] 内容长度:3167 I0502 04:25:18.716758 7288 round_trippers.go:445] 日期:星期三,2018 年 5 月 2 日 04:25:18 GMT I0502 04:25:18.717872 7288 request.go:873] 响应正文: {"kind":"Pod","apiVersion":"v1","metadata":{"name":"dataarchives-service-264802370-mjwcl","generateName":"da taarchives-service-264802370-","namespace":"fdm-development","selfLink":"/api/v1/namespaces/fdm-development/pods/dataarchives-service-264802370-mjwcl","uid":" eeb7d14f-49 5e-11e8-9d96-002248014205","re​​sourceVersion":"15681866","creationTimestamp":"2018-04-26T14:34:31Z","labels":{"app":"dataarchives","pod-template -hash":"264802370"},"annot ations":{"kubernetes.io/created-by":"{\"kind\":\"SerializedReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind \":\"ReplicaSet\",\"命名空间\":\"fdm-development\",\"n ame\":\"dataarchives-service-264802370\",\"uid\":\"eeaf949c-495e-11e8-9d96-002248014205\",\"apiVersion\":\"extensions\",\"resourceVersion\ ":\"15075652\"}}\n"},"ownerRefe rences":[{"apiVersion":"extensions/v1beta1","kind":"ReplicaSet","name":"dataarchives-service-264802370","uid":"eeaf949c-495e-11e8-9d96-002248014205" “控制器”:真,“b lockOwnerDeletion":true}]},"spec":{"volumes":[{"name":"uploadsfileshare [截断 2143 个字符] I0502 04:25:18.908749 7288 round_trippers.go:414] 发布 https://fdmmgmt.uksouth.cloudapp.azure.com/api/v1/namespaces/fdm-development/pods/dataarchives-service-26480237 0-mjwcl/exec?command=date&command=cmd&container=dataarchives&container=dataarchives&stderr=true&stdout=true I0502 04:25:18.908749 7288 round_trippers.go:421] 请求标头: I0502 04:25:18.908749 7288 round_trippers.go:424]
X-Stream-Protocol-Version:v4.channel.k8s.io I0502 04:25:18.908749
7288 round_trippers.go:424] X 流协议版本: v3.channel.k8s.io I0502 04:25:18.908749 7288 round_trippers.go:424] X-Stream-Protocol-版本:v2.channel.k8s.io I0502 04:25:18.908749
7288 round_trippers.go:424] X 流协议版本: channel.k8s.io I0502 04:25:18.908749 7288 round_trippers.go:424]
用户代理:kubectl.exe/v1.9.3 (windows/amd64) kubernetes/d283541 I0502 04:25:19.086745 7288 round_trippers.go:439] 响应状态: 401 在 177 毫秒内未经授权 I0502 04:25:19.086745 7288 round_trippers.go:442] 响应标头:I0502 04:25:19.086745 7288 round_trippers.go:445] 日期:2018 年 5 月 2 日星期三 04:25:19 GMT I0502 04:25:19.086745 7288 round_trippers.go:445] 内容长度:12 I0502 04:25:19.086745 7288 round_trippers.go:445] 内容类型: 文本/纯文本;字符集=utf-8 F0502 04:25:19.086745 7288 helpers.go:119] 错误:无法升级连接:未经授权

帮助表示赞赏。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    在内部,kubectl 命令通过 HTTP / SPDY 与 Kubernetes API 服务器交互。 Kubernetes 的 API 服务器是一个常规的 REST API。 Kubernetes 目前正在使用 SPDY,但维护人员计划在 docker 允许后立即切换到 HTTP/2:https://github.com/kubernetes/kubernetes/issues/7452

    其实可以看这里,看看 kubectl 命令是如何调用 kubernetes go-client 与 REST API 交互的:https://github.com/kubernetes/kubernetes/blob/e6272b887b81a62e6f06b7fac4b3b61d1c8bf657/pkg/kubectl/cmd/exec/exec.go#L310

    关于您的具体堆栈跟踪:“错误:无法升级连接:未经授权”看起来您未获得授权。您是否可以使用 kubectl 运行其他命令,例如“kubectl get po --all-namespaces”?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 2010-11-22
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多