Kubernetes 仪表板未经授权。如何配置

Kubernetes Dashboards are unauthorised. how to configure

我正在按照 Coreos Kubernetes on AWS 的教程(我需要一个 Cloudformation 模板)在我现有的 VPC 中创建一个 Kubernetes。

一切都已正确配置并且集群已成功设置,但我遇到了 Heapster/KubeDNS

方面的困难

我的集群信息和配置视图如下所示:

kubectl --kubeconfig=kubeconfig cluster-info
Kubernetes master is running at https://my-cluster-endpoint.company.com.
Heapster is running at https://my-cluster-endpoint.company.com./api/v1/proxy/namespaces/kube-system/services/heapster
KubeDNS is running at https://my-cluster-endpoint.company.com./api/v1/proxy/namespaces/kube-system/services/kube-dns

kubectl --kubeconfig=kubeconfig config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority: credentials/ca.pem
    server: https://my-cluster-endpoint.company.com.
  name: kube-aws-my-cluster-name-cluster
contexts:
- context:
    cluster: kube-aws-my-cluster-name-cluster
    namespace: default
    user: kube-aws-my-cluster-name-admin
  name: kube-aws-my-cluster-name-context
current-context: kube-aws-my-cluster-name-context
kind: Config
preferences: {}
users:
- name: kube-aws-my-cluster-name-admin
  user:
    client-certificate: credentials/admin.pem
    client-key: credentials/admin-key.pem

getting started guides from kubernetes.io 相比,我注意到了一些问题:

  1. 缺少所有 "out of the box" 服务,例如 Kibana/Grafana(但您可以自行安装)
  2. 没有 "user" 用于进入控制面板的用户名和密码部分,只有一个带有证书

同样,当我尝试到达这些端点时,我立即得到 "unauthorised" 并且 api 甚至没有向我询问用户名密码

那么如何为我新创建的集群设置基本身份验证或者有没有办法使用 .pem 证书登录?

谢谢。

CoreOS-kubernetes 工具旨在部署功能齐全的 Kubernetes 集群,但将可选/附加应用程序保留为集群管理员的决定。在这种情况下,kibana 和 grafana 并不是功能齐全的集群所必需的——因此默认情况下不会部署它们。

与身份验证类似,默认情况下不启用基本身份验证(基于证书的身份验证和 Bearer 令牌)。但是,您应该能够通过创建文件并向 api-server 清单添加标志来添加基本身份验证:

  • 按照此处描述的格式创建基本授权文件:http://kubernetes.io/docs/admin/authentication

  • /etc/kubernetes/manifests/kube-apiserver.yaml中添加一个标志,指向您在上面创建的文件--basic-auth-file=SOMEFILE

当您对 kube-apiserver.yaml 清单进行更改时,kubelet 将看到更改并自动重启 pod。如果您是 运行 api 多个主机上的服务器,请务必对每个主机进行上述更改。

另一种选择是使用 kubectl proxy 命令首先对您的 api 服务器进行身份验证。请参阅:http://kubernetes.io/docs/user-guide/connecting-to-applications-proxy - 本质上,kubectl 代理将进行身份验证,然后允许您在计算机上本地访问端点。