Нет доступных конечных точек для службы \"kubernetes-dashboard\"

Я пытаюсь следовать GitHub - kubernetes/dashboard: универсальный веб-интерфейс для кластеров Kubernetes.

развернуть / доступ:

# export KUBECONFIG=/etc/kubernetes/admin.conf
# kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created
# kubectl proxy
Starting to serve on 127.0.0.1:8001

свернуться:

# curl http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {

  },
  "status": "Failure",
  "message": "no endpoints available for service \"kubernetes-dashboard\"",
  "reason": "ServiceUnavailable",
  "code": 503
}# 

Пожалуйста, порекомендуйте.

за @VKR

$ kubectl get pods --all-namespaces 
NAMESPACE     NAME                                              READY   STATUS              RESTARTS   AGE
kube-system   coredns-576cbf47c7-56vg7                          0/1     ContainerCreating   0          57m
kube-system   coredns-576cbf47c7-sn2fk                          0/1     ContainerCreating   0          57m
kube-system   etcd-wcmisdlin02.uftwf.local                      1/1     Running             0          56m
kube-system   kube-apiserver-wcmisdlin02.uftwf.local            1/1     Running             0          56m
kube-system   kube-controller-manager-wcmisdlin02.uftwf.local   1/1     Running             0          56m
kube-system   kube-proxy-2hhf7                                  1/1     Running             0          6m57s
kube-system   kube-proxy-lzfcx                                  1/1     Running             0          7m35s
kube-system   kube-proxy-rndhm                                  1/1     Running             0          57m
kube-system   kube-scheduler-wcmisdlin02.uftwf.local            1/1     Running             0          56m
kube-system   kubernetes-dashboard-77fd78f978-g2hts             0/1     Pending             0          2m38s
$ 

logs:

$ kubectl logs kubernetes-dashboard-77fd78f978-g2hts -n kube-system
$ 

describe:

$ kubectl describe pod kubernetes-dashboard-77fd78f978-g2hts -n kube-system
Name:               kubernetes-dashboard-77fd78f978-g2hts
Namespace:          kube-system
Priority:           0
PriorityClassName:  <none>
Node:               <none>
Labels:             k8s-app=kubernetes-dashboard
                    pod-template-hash=77fd78f978
Annotations:        <none>
Status:             Pending
IP:                 
Controlled By:      ReplicaSet/kubernetes-dashboard-77fd78f978
Containers:
  kubernetes-dashboard:
    Image:      k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0
    Port:       8443/TCP
    Host Port:  0/TCP
    Args:
      --auto-generate-certificates
    Liveness:     http-get https://:8443/ delay=30s timeout=30s period=10s #success=1 #failure=3
    Environment:  <none>
    Mounts:
      /certs from kubernetes-dashboard-certs (rw)
      /tmp from tmp-volume (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kubernetes-dashboard-token-gp4l7 (ro)
Conditions:
  Type           Status
  PodScheduled   False 
Volumes:
  kubernetes-dashboard-certs:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  kubernetes-dashboard-certs
    Optional:    false
  tmp-volume:
    Type:    EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:  
  kubernetes-dashboard-token-gp4l7:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  kubernetes-dashboard-token-gp4l7
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node-role.kubernetes.io/master:NoSchedule
                 node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason            Age                      From               Message
  ----     ------            ----                     ----               -------
  Warning  FailedScheduling  4m39s (x21689 over 20h)  default-scheduler  0/3 nodes are available: 3 node(s) had taints that the pod didn't tolerate.
$ 

6 ответов

Решение

Казалось бы, вы пытаетесь развернуть Kubernetes с использованием kubeadm но пропустили шаг установки надстройки сети pod (CNI). Обратите внимание на предупреждение:

Сеть должна быть развернута перед любыми приложениями. Кроме того, CoreDNS не будет запускаться до установки сети. kubeadm поддерживает только сети на основе контейнерного сетевого интерфейса (CNI) (и не поддерживает kubenet).

Как только вы это сделаете, модули CoreDNS должны появиться здоровыми. Это можно проверить с помощью:kubectl -n kube-system -l=k8s-app=kube-dns get pods

Тогда kubernetes-dashboard стручок также должен быть здоровым.

вы можете обратиться к https://github.com/kubernetes/dashboard#getting-started

Кроме того, я вижу "https" в вашей ссылке. Попробуйте вместо этого использовать эту ссылку http: // localhost: 8001 / api / v1 / namespaces / kubernetes-dashboard / services / https: kubernetes-dashboard: / proxy /

если вы используете ,

проверить, еслиkubectl proxyбежит

тогда иди

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

два совета по ссылке выше:

  1. использоватьhelmдля установки пространства имен будут/default(нет/kubernetes-dashboard
  2. нужно добавитьhttpsпосле/https:kubernetes-dashboard:

лучший способ

helm delete kubernetes-dashboard

kubectl create namespace kubernetes-dashboard

helm install -n kubernetes-dashboard kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard

тогда иди

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

затем вы можете легко следовать за созданием образца пользователя , чтобы получить токен для входа в систему

У меня такая же проблема. В конце концов это оказалось проблемой конфигурации сети Calico. Но шаг за шагом ...

Сначала я проверил, запущен ли Dashboard Pod:

      kubectl get pods --all-namespaces

Результат для меня был:

      NAMESPACE              NAME                                         READY   STATUS             RESTARTS   AGE
kube-system            calico-kube-controllers-bcc6f659f-j57l9      1/1     Running            2          19h
kube-system            calico-node-hdxp6                            0/1     CrashLoopBackOff   13         15h
kube-system            calico-node-z6l56                            0/1     Running            68         19h
kube-system            coredns-74ff55c5b-8l6m6                      1/1     Running            2          19h
kube-system            coredns-74ff55c5b-v7pkc                      1/1     Running            2          19h
kube-system            etcd-got-virtualbox                          1/1     Running            3          19h
kube-system            kube-apiserver-got-virtualbox                1/1     Running            3          19h
kube-system            kube-controller-manager-got-virtualbox       1/1     Running            3          19h
kube-system            kube-proxy-q99s5                             1/1     Running            2          19h
kube-system            kube-proxy-vrpcd                             1/1     Running            1          15h
kube-system            kube-scheduler-got-virtualbox                1/1     Running            2          19h
kubernetes-dashboard   dashboard-metrics-scraper-7b59f7d4df-qc9ms   1/1     Running            0          28m
kubernetes-dashboard   kubernetes-dashboard-74d688b6bc-zrdk4        0/1     CrashLoopBackOff   9          28m

Последняя строка указывает, что модуль панели мониторинга не мог быть запущен (status =CrashLoopBackOff). А 2-я строчка показывает, что у ситцевого узла проблемы. Скорее всего, первопричина - Calico.

Следующим шагом является просмотр журнала модуля (измените пространство имен / имя, как указано в ВАШЕМ списке модулей) :

      kubectl logs kubernetes-dashboard-74d688b6bc-zrdk4 -n kubernetes-dashboard

Результат для меня был:

      2021/03/05 13:01:12 Starting overwatch
2021/03/05 13:01:12 Using namespace: kubernetes-dashboard
2021/03/05 13:01:12 Using in-cluster config to connect to apiserver
2021/03/05 13:01:12 Using secret token for csrf signing
2021/03/05 13:01:12 Initializing csrf token from kubernetes-dashboard-csrf secret
panic: Get https://10.96.0.1:443/api/v1/namespaces/kubernetes-dashboard/secrets/kubernetes-dashboard-csrf: dial tcp 10.96.0.1:443: i/o timeout

Хм - не особо полезно. После поиска по запросу «dial tcp 10.96.0.1:443: i / o timeout» я нашел эту информацию, где написано ...

Если вы строго следуете инструкциям kubeadm ... Это означает установку docker, kubernetes (kubeadm, kubectl, & kubelet) и calico с размещенными инструкциями Kubeadm ... и узлы вашего компьютера имеют физический IP-адрес в диапазоне 192.168.XX, то вы получите вышеупомянутую нерабочую панель управления. Это связано с тем, что IP-адреса узла конфликтуют с внутренними IP-адресами ситца.

https://github.com/kubernetes/dashboard/issues/1578#issuecomment-329904648

Да, на самом деле у меня есть физический IP-адрес в диапазоне 192.168.xx - как и у многих других. Я бы хотел, чтобы Калико проверил это во время настройки.

Итак, переместим сеть подов в другой диапазон IP-адресов:

Для частных сетей следует использовать бесклассовый зарезервированный диапазон IP-адресов, например 10.0.0.0/8 (16.777.216 адресов)172.16.0.0/12 (1.048.576 адресов)192.168.0.0/16 (65.536 адресов). В противном случае Calico завершит работу с ошибкой: «В CALICO_IPV4POOL_CIDR указан недопустимый CIDR» ...

      sudo kubeadm reset
sudo rm /etc/cni/net.d/10-calico.conflist
sudo rm /etc/cni/net.d/calico-kubeconfig

export CALICO_IPV4POOL_CIDR=172.16.0.0
export MASTER_IP=192.168.100.122
sudo kubeadm init --pod-network-cidr=$CALICO_IPV4POOL_CIDR/12 --apiserver-advertise-address=$MASTER_IP --apiserver-cert-extra-sans=$MASTER_IP

mkdir -p $HOME/.kube
sudo rm -f $HOME/.kube/config
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
sudo chown $(id -u):$(id -g) /etc/kubernetes/kubelet.conf

wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml -O calico.yaml
sed -i "s/192.168.0.0/"$CALICO_IPV4POOL_CIDR"/g" calico.yaml
kubectl apply -f calico.yaml

Теперь проверим, все ли ситцевые стручки запущены:

      kubectl get pods --all-namespaces

NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-bcc6f659f-ns7kz   1/1     Running   0          15m
kube-system   calico-node-htvdv                         1/1     Running   6          15m
kube-system   coredns-74ff55c5b-lqwpd                   1/1     Running   0          17m
kube-system   coredns-74ff55c5b-qzc87                   1/1     Running   0          17m
kube-system   etcd-got-virtualbox                       1/1     Running   0          17m
kube-system   kube-apiserver-got-virtualbox             1/1     Running   0          17m
kube-system   kube-controller-manager-got-virtualbox    1/1     Running   0          18m
kube-system   kube-proxy-6xr5j                          1/1     Running   0          17m
kube-system   kube-scheduler-got-virtualbox             1/1     Running   0          17m

Выглядит хорошо. Если нет, проверьте CALICO_IPV4POOL_CIDR, отредактировав конфигурацию узла: KUBE_EDITOR="nano" kubectl edit -n kube-system ds calico-node

Применим kubernetes-dashboard и запустим прокси:

      export KUBECONFIG=$HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
kubectl proxy

Теперь я могу загрузить http://127.0.0.1:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

Я столкнулся с той же проблемой, поэтому я следил за официальными документами, а затем перешел на https://github.com/kubernetes/dashboard url, есть другой способ использовать helm по этой ссылке https://artifacthub.io/packages/helm / k8s-приборная панель / kubernetes-приборная панель

после установки helm и запустите эти 2 команды

      helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/

helm install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard

он работал, но в пространстве имен по умолчанию по этой ссылке http: // localhost:8001 / api / v1 / namespaces / default / services / https:kubernetes-dashboard: https / proxy / # / workloads?namespace= default

Я вижу это в 127.0.0.1, но как включить для лана? Если я бегу

      kubectl proxy --address='192.168.22.17' --accept-hosts='^localhost$,^127\.0\.0\.1$,^\[::1\]$,^192\.168\.22\.*'

У меня нет доступных конечных точек для службы «kubernetes-dashboard» из локальной сети.

Другие вопросы по тегам