我在Ubuntu服务器上运行了一个集群。我通过端口80/443在集群中运行的服务器上提供Web内容。我只通过ssh
访问服务器本身,所以根本没有图形界面。
现在我想访问该群集的kubernetes web ui。在研究过程中,我发现有消息称,每次远程访问访问web ui
不建议用于prod环境。这些指南只是使用kubectl proxy
将仪表板暴露给localhost。
是否有解决方案或或多或少的常用方法来访问服务器上运行的集群的仪表板?
kubectl proxy
工作得很好。否则,您还可以将kubernetes-dashboard
更改为loadbalancer / nodeport并通过它访问群集。
如果您正在使用负载均衡器并且您使用的是AWS或Azure等云提供商,则可以设置安全组以允许在某些特定的IP范围内进行访问。
但是,我会说大多数时候kubectl proxy
都足够好。
如果您想通过外部IP地址访问仪表板,则可以编辑仪表板服务,如果您有外部LB提供程序(如GCP或AWS),则可以将类型更改为LoadBalancer。要做到这一点编辑kubernetes-dashboard
服务。
# kubectl -n kube-system edit service kubernetes-dashboard
您应该看到服务的yaml表示。更改类型:ClusterIP键入:LoadBalancer并保存文件。如果已经更改,请转到下一步。
# 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 # <-- Change to LoadBalancer
status:
loadBalancer: {}
然后运行以下命令以查看Kubernetes Dashboard服务的外部IP地址
# kubectl -n kube-system get service kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard LoadBalancer 10.23.252.164 <external-ip> 443:31720/TCP 26d
然后浏览https://<external-ip>
以查看Web UI
您还可以将服务公开为NodePort,以通过子网访问WEB UI
2件事; 1.要直接使用浏览器(本地机器)访问,k8s群集必须在同一网络域中。 2.如果您不在第1项,请使用Windows RDP访问它并使用浏览器。