Dolphin
Dolphin

Reputation: 38985

services "kubernetes-dashboard" not found when access kubernetes ui

I am deploy kubernetes UI using this command:

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

start proxy:

kubectl proxy --address='172.19.104.231' --port=8001 --accept-hosts='^*$'

access ui:

curl http://172.19.104.231:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
http://kubernetes.example.com/api/v1/namespaces/kube-system/services/kube-ui/#/dashboard/

the log output:

[root@iZuf63refzweg1d9dh94t8Z ~]# curl http://172.19.104.231:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {

  },
  "status": "Failure",
  "message": "services \"kubernetes-dashboard\" not found",
  "reason": "NotFound",
  "details": {
    "name": "kubernetes-dashboard",
    "kind": "services"
  },
  "code": 404}

how to fix the problem? Check pods status:

[root@iZuf63refzweg1d9dh94t8Z ~]# kubectl get pod --namespace=kube-system
NAME                                    READY   STATUS    RESTARTS   AGE
kubernetes-dashboard-7d75c474bb-b2lwd   0/1     Pending   0          34h

Upvotes: 12

Views: 35000

Answers (5)

Vincent Gerris
Vincent Gerris

Reputation: 7537

If you followed instructions from kubernetes.io you might have gotten the wrong link. It's true that service doesn't exist, it might be name that is changed somehow. I had the same issue and noticed that

kubectl get all --all-namespaces

shows (snippet)

kubernetes-dashboard   service/dashboard-metrics-scraper   ClusterIP   10.x.y.z    <none>        8000/TCP                 2d14h
kubernetes-dashboard   service/kubernetes-dashboard        ClusterIP   10.x.x.y   <none>        443/TCP                  2d14h

showed nothing special (as in bored). Try this link and notice the namespace difference:

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login

That worked for me

Upvotes: 4

maximalyono
maximalyono

Reputation: 445

If you use K8S dashboard v2.0.0-betax,

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml

Then use this to access the dashboard:

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

If you use K8S dashboard v1.10.1,

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

Then use this to access the dashboard:

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

I also faced the same problem, but then i realized that dashboard v2.0.0-betax and v1.10.1 use different namespace. Latest version use kubernetes-dashboard namespace, but the older one use kube-system namespace

Upvotes: 33

Jakub
Jakub

Reputation: 8840

This message:

"message": "services \"kubernetes-dashboard\" not found"

Simply means that the service doesn't exist.

First of all check if you'r dashboard (service and pod) are working with this command

kubectl get pods,svc --all-namespaces -o wide

Please follow the tutorial Command line proxy

About the problem with pod status, please use this command so you will know why the status is pending instead of running.

kubectl describe pod kubernetes-dashboard-7d75c474bb-b2lwd -n kubernetes-dashboard

Upvotes: 3

Nick_Kh
Nick_Kh

Reputation: 5253

Apparently, the error message states for not existing k8s Service in kube-system Namespace throughout exposed HTTP API proxy method, as @jt97 mentioned in the answer.

For further reference, you might also consider querying K8s inventory objects, once you have exposed K8s REST API directly within HTTP calls in JSON data format.

For example:

curl http://172.19.104.231:8001/api/v1/namespaces/kube-system/services/

Upvotes: 1

Related Questions