我正在尝试使用网络外部的Token方法访问kubernetes仪表板。

我运行了这两个命令来获取 token

kubectl -n kube-system get secret

kubectl -n kube-system describe secret replicaset-controller-token-2p4fk

将粘贴输出 token 复制到K8登录页面。

当我单击“登录”按钮(页面未加载)时,出现此错误浏览器控制台。

kubernetes - 如何从外部网络访问Kubernetes仪表板-LMLPHP

我正在使用以下命令在内部服务器上运行k8:
kubectl proxy --address 0.0.0.0 --accept-hosts '.*'

并尝试从网络外部的访问k8 UI控制台。
Failed to load resource: the server responded with a status of 401 (Unauthorized)
vendor.bd425c26.js:6 Error during global settings reload:  Object
:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/api/v1/rbac/status:1 Failed to load resource: the server responded with a status of 401 (Unauthorized)
vendor.bd425c26.js:6 Possibly unhandled rejection: {"data":"MSG_LOGIN_UNAUTHORIZED_ERROR\n","status":401,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","url":"api/v1/rbac/status","headers":{"Accept":"application/json, text/plain, */*"}},"statusText":"Unauthorized","xhrStatus":"complete","resource":{}}

我什至尝试了这些步骤,但没有运气,单击“登录”按钮后页面无法加载。
$ kubectl -n kube-system get secret
# All secrets with type 'kubernetes.io/service-account-token' will allow to log in.
# Note that they have different privileges.
NAME                                     TYPE                                  DATA      AGE
deployment-controller-token-frsqj        kubernetes.io/service-account-token   3         22h

$ kubectl -n kube-system describe secret deployment-controller-token-frsqj
Name:         deployment-controller-token-frsqj
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name=deployment-controller
              kubernetes.io/service-account.uid=64735958-ae9f-11e7-90d5-02420ac00002

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZXBsb3ltZW50LWN

这是我的Kube/config文件
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRV..
    server: https://192.168.15.97:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: LS0tLS1CRUdJTiBD..
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJ..

为什么我在“签名”按钮旁边看不到跳过身份验证按钮?

我也尝试了以下步骤:

运行以下命令:
  • 此命令将在默认 namespace 中为仪表板创建服务帐户
    $kubectl create serviceaccount dashboard -n default
  • 此命令会将集群绑定(bind)规则添加到您的仪表板帐户

    kubectl创建clusterrolebinding仪表板-admin -n默认\
    --clusterrole =集群管理员\
    --serviceaccount =默认:仪表板
  • 此命令将为您提供仪表板登录所需的 token
    $kubectl get secret $(kubectl get serviceaccount dashboard -o jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64 --decode可以帮我一下,我错过了什么。

  • 一些发现: Link
    kubectl proxy命令仅允许HTTP连接。对于非localhost和127.0.0.1的域,将无法登录。单击登录页面上的“登录”按钮后,将不会进行任何操作。
    kubectl proxy
    

    不支持https调用。

    是否可以从外部/本地Windows网络与Kubernetes服务器IP地址一起运行kubectl proxy命令?

    注意:
    本地系统是Windows 10,K8是Linux服务器。
    Docker版本:18.09&k8版本:v1.13.1

    谢谢,

    最佳答案

    https://github.com/kubernetes/dashboard/wiki/Accessing-Dashboard---1.7.X-and-above

    我有一个音符:

    仪表板不应使用kubectl proxy命令公开公开,因为它仅允许HTTP连接。对于非localhost和127.0.0.1的域,将无法登录。单击登录页面上的“登录”按钮后,将不会进行任何操作。

    关于kubernetes - 如何从外部网络访问Kubernetes仪表板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53957413/

    10-16 09:27