2017-06-14 37 views
0

k8s 1.6.4 RBAC対応クラスタでkubectl execを試しましたが、返されるエラーはerror: unable to upgrade connection: Unauthorizedです。同じコンテナにあるdocker execは成功します。それ以外の場合はkubectlが動作しています。 kubectl SSH接続を介してトンネルを送信していますが、これは問題ではないと思います。「kubectl exec」の結果が「エラー:接続をアップグレードできません:無許可」

kubelet authnは有効ですがauthzは有効になっていません。 docsは、デフォルトではauthzがAlwaysAllowであると言いますので、私はこのようにしました。

this issueと似ている気がします。しかし、エラーメッセージは少し異なっています。

ありがとうございます! 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 
+0

この「kubectlトンネル」の詳細については、sshを使ってどのようにトンネルを作成していますか? – sfgroups

+0

この 'ssh -L 6443:localhost:6443 worker1.kube'のように' localhost:6443'をワーカーノードに転送します。次に 'kubectl'を' localhost:6443'に接続するように設定します。 –

答えて

1

これはRTFMの瞬間です...解決策はauthn、のauthz、またはその両方のためにthis page上のすべての手順に従うことを基本的でした。

私は--kubelet-client-certificate--kubelet-client-keyを省いてエラーになりました。これらのフラグがないと、kubectl execを実行したときにkube-apiserverがkubeletで認証に失敗します。

オリジナルのauthnを設定しようとしたのは、kubeletデーモンのドキュメント(上記のものではありません)を読むことでした。したがって、重大な省略。

関連する問題