对于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世界和堆栈溢出来说都是新手。
我希望提供更多信息,但我担心最终会包含大量无用的信息,所以我决定在这方面等待你的指示。
答案 0 :(得分:0)
查看kubernetes信息中心they describe how to get access to dashboard和how 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}')
现在只需将长令牌字符串复制并粘贴到仪表板提示符中即可完成。