当前位置: 首页 > 知识库问答 >
问题:

如何在kubernetes仪表板签名?

阎涵容
2023-03-14

我刚刚将kubeadm和kubelet升级到了V1.8.0。并按照官方文档安装仪表板。

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

之后,我通过运行

$ kubectl proxy --address="192.168.0.101" -p 8001 --accept-hosts='^*$'

幸运的是,我能够通过http://192.168.0.101:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard://proxy/访问仪表板

我试图将/etc/kubernetes/admin.conf作为kubeconfig上传,但失败了。然后,我尝试使用从Kubeadm令牌列表获得的令牌登录,但再次失败。

问题是我如何在仪表板上签名。看起来他们比以前增加了很多安全机制。谢了。

共有1个答案

马泰
2023-03-14

从1.7版开始,仪表板支持基于以下内容的用户身份验证:

  • 授权:承载 头将每个请求传递到仪表板。从1.6版开始支持。优先级最高。如果存在,则不会显示登录视图。
  • 可在仪表板登录视图上使用的承载令牌。
  • 可在仪表板登录视图上使用的用户名/密码。
  • 可在仪表板登录视图上使用的Kubeconfig文件。

-Github上的仪表板

这里的令牌可以是来自Kubernetes身份验证的静态令牌服务帐户令牌OpenID连接令牌,但不能是kubeadm引导令牌

使用kubectl,我们可以获得默认情况下在kubernetes中创建的服务帐户(例如部署控制器)。

$ 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.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZXBsb3ltZW50LWNvbnRyb2xsZXItdG9rZW4tZnJzcWoiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVwbG95bWVudC1jb250cm9sbGVyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNjQ3MzU5NTgtYWU5Zi0xMWU3LTkwZDUtMDI0MjBhYzAwMDAyIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRlcGxveW1lbnQtY29udHJvbGxlciJ9.OqFc4CE1Kh6T3BTCR4XxDZR8gaF1MvH4M3ZHZeCGfO-sw-D0gp826vGPHr_0M66SkGaOmlsVHmP7zmTi-SJ3NCdVO5viHaVUwPJ62hx88_JPmSfD0KJJh6G5QokKfiO0WlGN7L1GgiZj18zgXVYaJShlBSz5qGRuGf0s1jy9KOBt9slAN5xQ9_b88amym2GIXoFyBsqymt5H-iMQaGP35tbRpewKKtly9LzIdrO23bDiZ1voc5QZeAZIWrizzjPY5HPM1qOqacaY9DcGc7akh98eBJG_4vZqH2gKy76fMf0yInFTeNKr45_6fWt8gRM77DQmPwb3hbrjWXe1VvXX_g

仪表板需要kubeconfig文件中的用户具有username&passwordtoken,但是admin.conf只有client-certifice。您可以编辑配置文件以添加使用上述方法提取的令牌。

$ kubectl config set-credentials cluster-admin --token=bearer_token

这里有两种绕过身份验证的方法,但请小心使用。

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/alternative/kubernetes-dashboard.yaml

可以使用Kubectl Proxy在http://localhost:8001/ui加载仪表板。

$ cat <<EOF | kubectl create -f -
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard
  labels:
    k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard
  namespace: kube-system
EOF

之后,您可以在登录页面上使用skip选项访问仪表板。

如果使用的是仪表板V1.10.1或更高版本,还必须将--enable-skip-login添加到部署的命令行参数中。您可以通过将其添加到Kubectl edit deployment/kubernetes-dashboard--namespace=kube-system中的args中来完成此操作。

示例:

      containers:
      - args:
        - --auto-generate-certificates
        - --enable-skip-login            # <-- add this line
        image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
 类似资料:
  • 但是在我的群集上没有服务/部署: 谢谢你的帮助

  • > Kubectl apply-f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recomended.yaml kubectl代理--address=“192.168.56.12”-p 8001-accept-hosts='^*$' [root@k8s-master~]#kubectl

  • null 申请后: 仪表板可以通过库贝代理访问。所以我把service命名为Nodeport: 然后我尝试通过https Nodeport访问仪表板。它失败了。当我试图访问192.168.100.31或192.168.100.32时,比如:

  • 我是库伯内特斯的新手。我试图遵循一些食谱来启动和运行一个小集群,但是我遇到了麻烦... 我有一个主节点和(4)节点,都运行Ubuntu 16.04 在所有节点上安装docker: 关闭所有节点上的交换 注释掉了/etc/fstab中的交换挂载 库比德酒店 下载并解压到主节点和所有节点上的/usr/local/bin中:https://github.com/kubernetes-incubator/

  • try1:直接使用以下命令尝试: 试图使用url http://172.20.22.101:8001/api/v1访问仪表板,但它表示未经授权。 try2:创建了包含以下内容的dashboard-admin.yaml文件:

  • 我有一个kubernetes cluster 1.6.1运行在kuberentes dashboard(gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.1)上,我无法更新我们域的tls证书,该站点显示为不安全。 它使用的是使用KOPS设置集群时创建的kubernetes-master证书。 在其他部署/吊舱上,我能够使用具有正确tl