我正试图通过nginxingress公开kubernetes仪表板。kubernetes仪表板还不可用,但我已经使用kubernete官方文件上共享的以下.yaml文件初始化了所有资源。
所有资源都得到了相应的调配。以下是我为检查kubectl get all -n kubernetes-dashboard
而运行的以下命令的输出
输出:
NAME READY STATUS RESTARTS AGE
pod/dashboard-metrics-scraper-8c47d4b5d-7dptt 1/1 Running 1 (78m ago) 9h
pod/kubernetes-dashboard-6c75475678-4c9n2 1/1 Running 0 9h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dashboard-metrics-scraper ClusterIP 10.105.70.143 <none> 8000/TCP 14h
service/kubernetes-dashboard NodePort 10.111.136.242 <none> 443:32361/TCP 14h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/dashboard-metrics-scraper 1/1 1 1 9h
deployment.apps/kubernetes-dashboard 1/1 1 1 9h
NAME DESIRED CURRENT READY AGE
replicaset.apps/dashboard-metrics-scraper-8c47d4b5d 1 1 1 9h
replicaset.apps/kubernetes-dashboard-6c75475678 1 1 1 9h
我还将service/kubernetesdashboard的服务类型从ClusterIP更改为NodePort,如输出中所示。
以下是我用来创建入口资源的yaml文件:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dashboard-ingress
namespace: kubernetes-dashboard
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: test.ml
http:
paths:
- path: /
pathType: Exact
backend:
service:
name: kubernetes-dashboard
port:
number: 443
我似乎仍然无法访问kubernetes仪表板。上述yaml中的主机不是合法的主机名,但我在/etc/hosts文件中添加了以下主机名解析为192.168.49.2 test.ml
以下是运行命令kubectl get ingress -n kubernetes-dashboard
后我的入口的详细信息
输出:
NAME CLASS HOSTS ADDRESS PORTS AGE
dashboard-ingress <none> test.ml 192.168.49.2 80 14h
每当我试图访问IP地址或通过主机名访问时,我仍然无法访问我的kubernetes仪表板。我使用在本地主机上运行的minikube和VM驱动程序podman,容器运行时是docker。
请选择一个入口控制器并为服务创建NodePort以访问仪表板应用程序。以下是先决条件的详细信息。
先决条件你必须有一个Ingress控制器才能满足Ingress。仅创建Ingress资源没有任何效果。
您可能需要部署Ingress控制器,例如Ingress nginx。您可以从多个Ingress控制器中进行选择。
理想情况下,所有Ingress控制器都应符合参考规范。实际上,各种Ingress控制器的操作略有不同。