访问 Kubernetes 仪表板

Accessing Kubernetes Dashboard

我可以在 运行 kubectl proxy --port=8001 时访问 kubernetes 仪表板,并且能够使用我从秘密收到的令牌登录。

http://localhost:8001/api/v1/namespaces/prod/services/http:kubernetes-dashboard:http/proxy/#/about?namespace=default

但是当我通过入口公开我的应用程序时,我也可以访问 UI 但我无法使用我可以在本地登录的令牌登录。我正在努力解决这个问题,我们将不胜感激。

{
 "jweToken": "",
 "errors": [
  {
   "ErrStatus": {
    "metadata": {},
    "status": "Failure",
    "message": "MSG_LOGIN_UNAUTHORIZED_ERROR",
    "reason": "Unauthorized",
    "code": 401
   }
  }
 ]
}

curl -v http://..../ -H "" 输出

< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: no-store
< Content-Type: text/html; charset=utf-8
< Date: Tue, 18 Feb 2020 14:28:28 GMT
< Last-Modified: Fri, 07 Feb 2020 13:15:14 GMT
< Vary: Accept-Encoding
< Content-Length: 1262
< 
<!--
Copyright 2017 The Kubernetes Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

入口日志

8T14:21:42Z"}
{"level":"warning","msg":"Endpoints not available for prod/kubernetes-dashboard","time":"2020-02-18T14:21:42Z"}
{"level":"warning","msg":"Endpoints not available for prod/kubernetes-dashboard","time":"2020-02-18T14:21:43Z"}
{"level":"warning","msg":"Endpoints not available for prod/kubernetes-

When I expose my application via ingress I can also access the UI but I can not sign in with the token that I can sign in for local.

根据 Kubernetes Dashboard documentation, since version 1.7.x (2017) you can still access dashboard via HTTP the same way older versions does 使用 localhost 时。

但是当你选择暴露它时:

Dashboard should not be exposed publicly over HTTP. For domains accessed over HTTP it will not be possible to sign in. Nothing will happen after clicking Sign in button on login page.

为了公开您的仪表板,您需要配置 HTTPS 访问。 您在评论中提到您是 运行 Kubernetes On Premise 并且您希望通过 NodeIP 访问仪表板。

在这种情况下遵循:Accessing Dashboard via NodePort.

请记住,您应该访问安装了仪表板的节点的 https://<node-ip>:<nodePort>,而不是访问 https://<master-ip>:<nodePort>

如果您有任何疑问,请在评论中告诉我,我会帮助您。