kubernetes - 如何在集群外部访问/公开 kubernetes-dashboard 服务?

标签 kubernetes

我有以下服务:

ubuntu@master:~$ kubectl get services --all-namespaces
NAMESPACE     NAME                   CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
default       kubernetes             100.64.0.1      <none>        443/TCP         48m
kube-system   kube-dns               100.64.0.10     <none>        53/UDP,53/TCP   47m
kube-system   kubernetes-dashboard   100.70.83.136   <nodes>       80/TCP          47m

我正在尝试访问 kubernetes 仪表板。考虑到curl不是浏览器,以下响应似乎是合理的。

ubuntu@master:~$ curl 100.70.83.136
 <!doctype html> <html ng-app="kubernetesDashboard"> <head> <meta charset="utf-8"> <title>Kubernetes Dashboard</title> <link rel="icon" type="image/png" href="assets/images/kubernetes-logo.png"> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" href="static/vendor.36bb79bb.css"> <link rel="stylesheet" href="static/app.d2318302.css"> </head> <body> <!--[if lt IE 10]>
      <p class="browsehappy">You are using an <strong>outdated</strong> browser.
      Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your
      experience.</p>
    <![endif]--> <kd-chrome layout="column" layout-fill> </kd-chrome> <script src="static/vendor.633c6c7a.js"></script> <script src="api/appConfig.json"></script> <script src="static/app.9ed974b1.js"></script> </body> </html> 

根据文档,正确的访问点是 https://localhost/ui 。所以,我正在尝试,但收到的结果有点令人担忧。 这是预期的 react 吗?

ubuntu@master:~$ curl https://localhost/ui
curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

在没有证书验证的情况下尝试相同的操作。对于 curl 来说可能没问题。但我在浏览器中得到了相同的结果,即通过 vagrantforwarded_port 选项通过端口转发进行连接。

ubuntu@master:~$ curl -k https://localhost/ui
Unauthorized

我做错了什么?以及如何确保我可以访问 UI? 目前它会响应“未经授权”。

仪表板的文档告诉密码位于配置中:

ubuntu@master:~$ kubectl config view
apiVersion: v1
clusters: []
contexts: []
current-context: ""
kind: Config
preferences: {}
users: []

但似乎我什么都没有......这是预期的行为吗?如何通过 UI 进行授权?

最佳答案

官方 wiki 有点困惑,所以我在这里重新排序:

如果您使用 recommended yaml 来部署仪表板,您应该仅通过 https 访问您的仪表板,并且您应该生成您的证书,请参阅 guide 。 然后你可以运行kubectl proxy --address='0.0.0.0' --accept-hosts='^*$'访问“http://localhost:8001/ui”上的仪表板。该页面需要使用token登录。要生成它,请参阅 this page 。您也可以添加NodePort到您的 yaml 并使用 <nodeip>:<port> 访问它.

如果您使用 http alternative 进行部署方法,您只能通过nodeip:port 访问您的仪表板。记得先添加到yaml!! 部署后,您还应该生成 token 并添加 header Authorization: Bearer <token>对于每个请求

我认为这可以帮助您和其他想要使用 kube-dashboard 的人。

关于kubernetes - 如何在集群外部访问/公开 kubernetes-dashboard 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39864385/

相关文章:

kubernetes - 如何在 kubernetes v1.13.0 中的 Deployment 卷中使用 subPathExpr 中的 pod 主机名

kubernetes - 如何更改 EKS 中 kube-scheduler 的行为?

spring-boot 2 优雅关闭网络

kubernetes - 无法从Windows GKE pod中访问Internet

kubernetes - Google kubernetes引擎上的Pod正在等待?

docker - Kubernetes 部署只读文件系统错误

kubernetes - Kubernetes 删除 Pod 后 PV/PVC 的状态

docker - 使用卷挂载将文件从容器复制到本地

当应用程序在端口 80 上时,Kubernetes 负载均衡器重定向到 HTTPs

docker - Kubernetes 和 flannel 网络设置