如何通过浏览器访问Kubernetes UI?

时间:2016-03-28 20:27:24

标签: ssl https kubernetes

我使用contrib/ansible脚本安装了Kubernetes。 当我运行cluster-info时:

[osboxes@kube-master-def ~]$ kubectl cluster-info
Kubernetes master is running at http://localhost:8080
Elasticsearch is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/elasticsearch-logging
Heapster is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/heapster
Kibana is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/kibana-logging
KubeDNS is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/kube-dns
kubedash is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/kubedash
Grafana is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana
InfluxDB is running at http://localhost:8080/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb

群集在具有不安全端口的localhost上公开,并通过ssl在安全端口443上公开

kube 18103 1 0 12:20 ? 00:02:57 /usr/bin/kube-controller-manager --logtostderr=true --v=0 --master=https://10.57.50.161:443 -- kubeconfig=/etc/kubernetes/controller-manager.kubeconfig --service-account-private-key-file=/etc/kubernetes/certs/server.key --root-ca-file=/etc/kubernetes/certs/ca.crt kube 18217 1 0 12:20 ? 00:00:15 /usr/bin/kube-scheduler --logtostderr=true --v=0 --master=https://10.57.50.161:443 --kubeconfig=/etc/kubernetes/scheduler.kubeconfig root 27094 1 0 12:21 ? 00:00:00 /bin/bash /usr/libexec/kubernetes/kube-addons.sh kube 27300 1 1 12:21 ? 00:05:36 /usr/bin/kube-apiserver --logtostderr=true --v=0 --etcd-servers=http://10.57.50.161:2379 --insecure-bind-address=127.0.0.1 --secure-port=443 --allow-privileged=true --service-cluster-ip-range=10.254.0.0/16 --admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota --tls-cert-file=/etc/kubernetes/certs/server.crt --tls-private-key-file=/etc/kubernetes/certs/server.key --client-ca-file=/etc/kubernetes/certs/ca.crt --token-auth-file=/etc/kubernetes/tokens/known_tokens.csv --service-account-key-file=/etc/kubernetes/certs/server.crt

我已将证书从kube-master机器复制到本地机器,我已经安装了ca根证书。 chrome / safari浏览器正在接受ca根证书。 当我试图访问https://10.57.50.161/ui时 我得到了“未经授权的”

如何访问kubernetes ui?

7 个答案:

答案 0 :(得分:21)

您可以使用kubectl代理。

取决于您是否使用配置文件,通过命令行运行

kubectl proxy

kubectl --kubeconfig=kubeconfig proxy

您应该得到类似的回复

  

开始在127.0.0.1:8001上投放

现在打开浏览器并导航到

http://127.0.0.1:8001/ui/ (已弃用,请参阅kubernetes/dashboard
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

您需要确保端口匹配。

答案 1 :(得分:12)

这适用于我可以从网络访问

kubectl proxy --address 0.0.0.0 --accept-hosts '.*'

答案 2 :(得分:7)

查看您的apiserver配置,您需要提供持票人令牌(有效令牌将列在/etc/kubernetes/tokens/known_tokens.csv中)或客户端证书(由/etc/kubernetes/certs/ca.crt中的CA证书签名)以证明您应该被允许访问群集的apiserver。

https://github.com/kubernetes/kubernetes/issues/7307#issuecomment-96130676描述了我如何在Mac上为GKE群集配置客户端证书。

要传递承载令牌,您需要传递值为Bearer ${KUBE_BEARER_TOKEN}的HTTP标头授权。您可以通过curl here查看如何完成此操作的示例;在浏览器中,您需要安装附加组件/插件才能传递自定义标头。

答案 3 :(得分:6)

访问仪表板的快速(不安全)方式:

$ kubectl edit svc/kubernetes-dashboard --namespace=kube-system

这会将Dashboard配置(yaml)加载到编辑器中,您可以在其中编辑它。

将第type: ClusterIP行更改为type: NodePort

获取tcp端口:

$ kubectl get svc kubernetes-dashboard -o json --namespace=kube-system

tcp端口的行如下所示:

            "nodePort": 31567

在较新版本的kubernetes中,您可以从get svc获取nodeport:

# This is kubernetes 1.7:
donn@host37:~$ sudo kubectl get svc --namespace=kube-system
NAME                   CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes-dashboard   10.3.0.234   <nodes>       80:31567/TCP   2h

执行kubectl describe nodes以获取节点IP地址。

浏览至: http://NODE_IP:31567

适合测试。由于缺乏安全性,对生产不利。

答案 4 :(得分:0)

您可以使用ext_typoscript_setup.txt

答案 5 :(得分:0)

  1. kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

  2. kubectl代理&

  3. 在本地笔记本电脑(或要访问GUI的位置)中运行以下命令

    ssh -L 8877:127.0.0.1:8001 -N -f -l root master_IPADDRESS

  4. 获取密钥 kubectl -n kube-system描述秘密$(kubectl -n kube-system获取秘密| awk'/ ^ deployment-controller-token-/ {print $ 1}')| awk'$ 1 ==“令牌:” {print $ 2}'

  5. 打开仪表板 http://localhost:8877/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

如果遇到任何错误,请执行角色绑定。

答案 6 :(得分:-1)

可以在节点上的6443端口上访问

api服务器,但未授权访问https://:6443 / api / v1 / namespaces / kube-system / services / https:kubernetes-dashboard:/ proxy /

我已经生成了由kubernetes ca cert签名的客户端证书,并转换为pkcs12并集成到我的浏览器中...当尝试访问此URL时,他们说用户无权访问uri ...