如何从外部网络/ IP访问规范的kubernetes仪表板? 有没有办法在外部公开仪表板服务,而不是从规范k8s集群节点的localhost浏览器访问?
答案 0 :(得分:4)
The documentation has a guide如何做到这一点。
kubectl proxy
在您的计算机和Kubernetes API服务器之间创建代理服务器。默认情况下,它只能在本地访问(从启动它的计算机)。
启动本地代理服务器:
$ kubectl proxy
Starting to serve on 127.0.0.1:8001
启动代理服务器后,您应该可以从浏览器访问控制台。
要访问信息中心的HTTPS端点,请转到:http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
注意:不应使用kubectl proxy命令公开公开仪表板,因为它只允许HTTP连接。对于localhost和127.0.0.1以外的域,将无法登录。单击登录页面上的登录按钮后不会发生任何事情。
这种访问仪表板的方式仅建议用于单节点设置中的开发环境。
修改kubernetes-dashboard
服务。
$ kubectl -n kube-system edit service kubernetes-dashboard
您应该看到服务的yaml表示。更改类型:ClusterIP键入:NodePort并保存文件。如果已经更改,请转到下一步。
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
...
name: kubernetes-dashboard
namespace: kube-system
resourceVersion: "343478"
selfLink: /api/v1/namespaces/kube-system/services/kubernetes-dashboard-head
uid: 8e48f478-993d-11e7-87e0-901b0e532516
spec:
clusterIP: 10.100.124.90
externalTrafficPolicy: Cluster
ports:
- port: 443
protocol: TCP
targetPort: 8443
selector:
k8s-app: kubernetes-dashboard
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
接下来,我们需要检查暴露仪表板的端口。
$ kubectl -n kube-system get service kubernetes-dashboard
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard 10.100.124.90 <nodes> 443:31707/TCP 21h
Dashboard已在端口31707(HTTPS)上公开。现在,您可以通过浏览器访问:https://<master-ip>:31707
。通过执行master-ip
可以找到kubectl cluster-info
。通常它是127.0.0.1或您机器的IP,假设您的集群直接在机器上运行,执行这些命令。
如果您尝试在多节点群集上使用NodePort公开Dashboard,则必须找到运行Dashboard的节点的IP才能访问它。您无需访问https://<master-ip>:<nodePort>
,而应访问https://<node-ip>:<nodePort>
。
如果Kubernetes API服务器公开并可从外部访问,您可以直接访问仪表板:https://<master-ip>:<apiserver-port>/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
也可以使用Ingress资源公开仪表板。例如
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: kubernetes-dashboard-ingress
namespace: kube-system
spec:
rules:
— host: kubernetes
http:
paths:
— path: /ui
backend:
serviceName: kubernetes-dashboard
servicePort: 80
答案 1 :(得分:1)
有(至少)两种方式从外界访问仪表板:
1)在您的开发计算机中运行kubectl proxy
并访问地址:http://localhost:8001/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy/#!/pod?namespace=default
2)使用LoadBalancer,IngressController,NodePort或其他方法,像对集群中的任何其他服务那样公开仪表板服务。