原子主机

时间:2017-09-08 10:28:18

标签: authentication kubernetes dashboard

对于kubernetes / atomic host来说,我是一个新手,所以我的问题可能真的很小或已经很好地讨论了 - 但不幸的是我找不到任何线索如何实现我的目标 - 这就是我在这里的原因。 / p>

我在原子主机上设置了kubernetes集群(现在我只有一个主节点和一个节点)。我在虚拟机上的云网络中工作。

[root@master ~]# kubectl get node
NAME          STATUS    AGE
192.168.2.3   Ready     9d

经过大量的大惊小怪,我设法在我的主人身上设置了kubernetes仪表板UI。

[root@master ~]# kubectl describe pod  --namespace=kube-system
Name:           kubernetes-dashboard-3791223240-8jvs8
Namespace:      kube-system
Node:           192.168.2.3/192.168.2.3
Start Time:     Thu, 07 Sep 2017 10:37:31 +0200
Labels:         k8s-app=kubernetes-dashboard
                pod-template-hash=3791223240
Status:         Running
IP:             172.16.43.2
Controllers:    ReplicaSet/kubernetes-dashboard-3791223240
Containers:
  kubernetes-dashboard:
    Container ID:       docker://8fddde282e41d25c59f51a5a4687c73e79e37828c4f7e960c1bf4a612966420b
    Image:              gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.3
    Image ID:           docker-pullable://gcr.io/google_containers/kubernetes-dashboard-amd64@sha256:2c4421ed80358a0ee97b44357b6cd6dc09be6ccc27dfe9d50c9bfc39a760e5fe
    Port:               9090/TCP
    Args:
      --apiserver-host=http://192.168.2.2:8080
    Limits:
      cpu:      100m
      memory:   300Mi
    Requests:
      cpu:                      100m
      memory:                   100Mi
    State:                      Running
      Started:                  Fri, 08 Sep 2017 10:54:46 +0200
    Last State:                 Terminated
      Reason:                   Error
      Exit Code:                2
      Started:                  Thu, 07 Sep 2017 10:37:32 +0200
      Finished:                 Fri, 08 Sep 2017 10:54:44 +0200
    Ready:                      True
    Restart Count:              1
    Liveness:                   http-get http://:9090/ delay=30s timeout=30s period=10s #success=1 #failure=3
    Volume Mounts:              <none>
    Environment Variables:      <none>
Conditions:
  Type          Status
  Initialized   True
  Ready         True
  PodScheduled  True
No volumes.
QoS Class:      Burstable
Tolerations:    <none>
Events:
  FirstSeen     LastSeen        Count   From                    SubObjectPath                           Type            Reason                  Message
  ---------     --------        -----   ----                    -------------                           --------        ------                  -------
  1d            32m             3       {kubelet 192.168.2.3}                                           Warning         MissingClusterDNS       kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to DNSDefault policy.
  1d            32m             2       {kubelet 192.168.2.3}   spec.containers{kubernetes-dashboard}   Normal          Pulled                  Container image "gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.3" already present on machine
  32m           32m             1       {kubelet 192.168.2.3}   spec.containers{kubernetes-dashboard}   Normal          Created                 Created container with docker id 8fddde282e41; Security:[seccomp=unconfined]
  32m           32m             1       {kubelet 192.168.2.3}   spec.containers{kubernetes-dashboard}   Normal          Started                 Started container with docker id 8fddde282e41

[root@master ~]# kubectl cluster-info
Kubernetes master is running at http://localhost:8080
kubernetes-dashboard is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard

现在,当我尝试使用地址连接到仪表板(我尝试通过同一云网络中的Windows虚拟机上的浏览器访问dashbord)时: https://192.168.218.2:6443/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard 我正在接受“未经授权”。我相信它证明仪表板确实在这个地址下运行,但是我需要设置一些访问它的方式吗?

我想长期实现的目标: 我想使用登录/密码启用连接到仪表板(稍后,当我学习更多内容时,我会考虑通过证书进行身份验证,或者考虑比密码更安全)来自云网络外部。现在,连接到所有的仪表板都可以。

我知道有关于身份验证的线索,但大多数都提到了类似的内容:

  

通过传递启用基本身份验证   --basic-auth-file = API服务器的SOMEFILE选项

这是我无法应付的部分 - 我不知道如何将选项传递给API服务器。 在原子主机上,api-server,kube-controller-manager和kube-scheduler在容器中运行,所以我使用命令进入api-server容器:

docker exec -it kube-apiserver.service bash

我几次看到我应该在/ etc / kubernetes / manifest目录中编辑.json文件,但不幸的是没有这样的文件(甚至是目录)。

如果我的问题太微不足道或者描述得不够好,我很抱歉,但对IT世界和堆栈溢出来说都是新手。

我希望提供更多信息,但我担心最终会包含大量无用的信息,所以我决定在这方面等待你的指示。

1 个答案:

答案 0 :(得分:0)

查看kubernetes信息中心they describe how to get access to dashboardhow to authenticate to it的Wiki页面。要快速访问,您可以运行:

kubectl proxy

然后转到以下地址:

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

您会看到两个选项,其中一个选项是上传~/.kube/config文件,另一个选项使用token。您可以通过运行以下命令来获取令牌:

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep service-account-token | head -n 1 | awk '{print $1}')

现在只需将长令牌字符串复制并粘贴到仪表板提示符中即可完成。