Прокси-сервер kubectl не работает в Ubuntu LTS 18.04

Я установил Kubernetes на ubuntu 18.04, используя эту статью. Все работает нормально, и затем я попытался установить панель управления Kubernetes с помощью этих инструкций.

Теперь, когда я пытаюсь запустить kubectl proxy, панель управления не накапливается, и при попытке доступа к ней с использованием URL-адреса kubernetes-dashboard по умолчанию в браузере появляется следующее сообщение об ошибке.

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

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {

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

Следующие команды дают этот вывод, где kubernetes-dashboard показывает статус как CrashLoopBackOff

$> kubectl get pods --all-namespaces

NAMESPACE              NAME                                         READY   STATUS             RESTARTS   AGE
default                amazing-app-rs-59jt9                         1/1     Running            5          23d
default                amazing-app-rs-k6fg5                         1/1     Running            5          23d
default                amazing-app-rs-qd767                         1/1     Running            5          23d
default                amazingapp-one-deployment-57dddd6fb7-xdxlp   1/1     Running            5          23d
default                nginx-86c57db685-vwfzf                       1/1     Running            4          22d
kube-system            coredns-6955765f44-nqphx                     0/1     Running            14         25d
kube-system            coredns-6955765f44-psdv4                     0/1     Running            14         25d
kube-system            etcd-master-node                             1/1     Running            8          25d
kube-system            kube-apiserver-master-node                   1/1     Running            42         25d
kube-system            kube-controller-manager-master-node          1/1     Running            11         25d
kube-system            kube-flannel-ds-amd64-95lvl                  1/1     Running            8          25d
kube-system            kube-proxy-qcpqm                             1/1     Running            8          25d
kube-system            kube-scheduler-master-node                   1/1     Running            11         25d
kubernetes-dashboard   dashboard-metrics-scraper-7b64584c5c-kvz5d   1/1     Running            0          41m
kubernetes-dashboard   kubernetes-dashboard-566f567dc7-w2sbk        0/1     CrashLoopBackOff   12         41m

$> kubectl get services --all-namespaces

NAMESPACE              NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
default                kubernetes                  ClusterIP   ----------      <none>        443/TCP                  25d
default                nginx                       NodePort    ----------    <none>        80:32188/TCP             22d
kube-system            kube-dns                    ClusterIP   ----------      <none>        53/UDP,53/TCP,9153/TCP   25d
kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   ----------   <none>        8000/TCP                 24d
kubernetes-dashboard   kubernetes-dashboard        ClusterIP   ----------    <none>        443/TCP                  24d



$ kubectl get services --all-namespaces
NAMESPACE              NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
default                kubernetes                  ClusterIP   ======       <none>        443/TCP                  25d
default                nginx                       NodePort    ======    <none>        80:32188/TCP             22d
kube-system            kube-dns                    ClusterIP   ======      <none>        53/UDP,53/TCP,9153/TCP   25d
kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   ======   <none>        8000/TCP                 24d
kubernetes-dashboard   kubernetes-dashboard        ClusterIP   ======    <none>        443/TCP                  24d

$ kubectl получить события -n kubernetes-dashboard

LAST SEEN   TYPE      REASON    OBJECT                                      MESSAGE
24m         Normal    Pulling   pod/kubernetes-dashboard-566f567dc7-w2sbk   Pulling image "kubernetesui/dashboard:v2.0.0-rc2"
4m46s       Warning   BackOff   pod/kubernetes-dashboard-566f567dc7-w2sbk   Back-off restarting failed container

$ kubectl описать услуги kubernetes-dashboard -n kubernetes-dashboard

Name:              kubernetes-dashboard
Namespace:         kubernetes-dashboard
Labels:            k8s-app=kubernetes-dashboard
Annotations:       kubectl.kubernetes.io/last-applied-configuration:
                     {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"k8s-app":"kubernetes-dashboard"},"name":"kubernetes-dashboard"...
Selector:          k8s-app=kubernetes-dashboard
Type:              ClusterIP
IP:                10.96.241.62
Port:              <unset>  443/TCP
TargetPort:        8443/TCP
Endpoints:         
Session Affinity:  None
Events:            <none>

$ kubectl журналы kubernetes-dashboard-566f567dc7-w2sbk -n kubernetes-dashboard

> 2020/01/29 16:00:34 Starting overwatch 2020/01/29 16:00:34 Using
> namespace: kubernetes-dashboard 2020/01/29 16:00:34 Using in-cluster
> config to connect to apiserver 2020/01/29 16:00:34 Using secret token
> for csrf signing 2020/01/29 16:00:34 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
> 
> goroutine 1 [running]:
> github.com/kubernetes/dashboard/src/app/backend/client/csrf.(*csrfTokenManager).init(0xc0003dac80)
>         /home/travis/build/kubernetes/dashboard/src/app/backend/client/csrf/manager.go:40
> +0x3b4 github.com/kubernetes/dashboard/src/app/backend/client/csrf.NewCsrfTokenManager(...)
>         /home/travis/build/kubernetes/dashboard/src/app/backend/client/csrf/manager.go:65
> github.com/kubernetes/dashboard/src/app/backend/client.(*clientManager).initCSRFKey(0xc000534200)
>         /home/travis/build/kubernetes/dashboard/src/app/backend/client/manager.go:494
> +0xc7 github.com/kubernetes/dashboard/src/app/backend/client.(*clientManager).init(0xc000534200)
>         /home/travis/build/kubernetes/dashboard/src/app/backend/client/manager.go:462
> +0x47 github.com/kubernetes/dashboard/src/app/backend/client.NewClientManager(...)
>         /home/travis/build/kubernetes/dashboard/src/app/backend/client/manager.go:543
> main.main()
>         /home/travis/build/kubernetes/dashboard/src/app/backend/dashboard.go:105
> +0x212

Есть предложения, как это исправить? Заранее спасибо.


person Kundan    schedule 29.01.2020    source источник
comment
журналы из модуля, находящегося в режиме crashloopbackoff?   -  person Arghya Sadhu    schedule 29.01.2020
comment
@ArghyaSadhu то же самое с kubectl logs kubernetes-dashboard-566f567dc7-w2sbk Ошибка сервера (NotFound): pods kubernetes-dashboard-566f567dc7-w2sbk не найдены   -  person Kundan    schedule 29.01.2020
comment
что kubectl получает события -n kubernetes-dashboard и kubectl описывают службы, что говорят kubernetes-dashboard -n kubernetes-dashboard?   -  person Arghya Sadhu    schedule 29.01.2020
comment
kubectl get events - В пространстве имен по умолчанию не найдено ресурсов.   -  person Kundan    schedule 29.01.2020
comment
@CodeRunner добавляет пространство имен в вашу kubectl команду kubectl logs kubernetes-dashboard-566f567dc7-w2sbk -n kubernetes-dashboard   -  person BinaryMonster    schedule 29.01.2020
comment
обновленный OP с деталями с выводом из команд, упомянутых выше   -  person Kundan    schedule 29.01.2020


Ответы (1)


Я заметил, что в руководстве, которое вы использовали для установки кластера Kubernetes, отсутствует одна важная часть.

Согласно документации kubernetes:

Для правильной работы flannel необходимо передать --pod-network-cidr=10.244.0.0/16 kubeadm init.

Установите /proc/sys/net/bridge/bridge-nf-call-iptables в 1, запустив sysctl net.bridge.bridge-nf-call-iptables=1 для передачи мостового трафика IPv4 в цепочки iptables. Это требование для работы некоторых подключаемых модулей CNI. Для получения дополнительной информации см. здесь.

Убедитесь, что правила вашего брандмауэра разрешают трафик UDP-портов 8285 и 8472 для всех хостов, участвующих в оверлейной сети. см. здесь.

Обратите внимание, что flannel работает на amd64, arm, arm64, ppc64le и s390x под Linux. Утверждается, что Windows (amd64) поддерживается в версии v0.11.0, но ее использование не задокументировано.

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml

Для получения дополнительной информации о flannel см. фланелевый репозиторий CoreOS на GitHub.

Чтобы исправить это:

Предлагаю воспользоваться командой:

sysctl net.bridge.bridge-nf-call-iptables=1

А потом переустановите фланель:

kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Обновление: после проверки /proc/sys/net/bridge/bridge-nf-call-iptables значение по умолчанию 1 ubuntu-18-04-lts. Итак, проблема здесь в том, что вам нужно получить доступ к панели управления локально.

Если вы подключены к своему главному узлу через ssh. Можно было бы использовать флаг -X с ssh для запуска браузера через ForwardX11. К счастью, ubuntu-18-04-lts он включен по умолчанию.

ssh -X server

Затем установите локальный веб-браузер, например Chrome.

sudo apt-get install chromium-browser
chromium-browser

И, наконец, доступ к панели инструментов локально из узла.

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

Надеюсь, это поможет.

person Piotr Malec    schedule 29.01.2020
comment
kubectl delete -f kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml выдает ошибку error: путь kubectl не существует. есть ли опечатка? - person Kundan; 29.01.2020
comment
Действительно. Я отредактировал свой ответ. Вместо этого вы можете попробовать перезапустить фланелевые капсулы, но я не уверен, что этого будет достаточно. Вам также может потребоваться повторно присоединиться к рабочим, если они не отображаются в списке узлов. Я покажу, как с этим справиться, если это произойдет. - person Piotr Malec; 29.01.2020
comment
Обновленный ответ снова. Попробуйте sudo kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml. - person Piotr Malec; 29.01.2020
comment
попробовал обе команды и перезагрузил машину, но с той же ошибкой. - person Kundan; 29.01.2020
comment
Попробуйте использовать curl http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ на своем главном узле. - person Piotr Malec; 29.01.2020
comment
Я очистил все с помощью stackoverflow.com/a/49253264/8074328 и попробовал с нуля. какая-нибудь надежная статья или сообщение в блоге? Я хочу настроить kube8, приборную панель, а затем ранчо. - person Kundan; 29.01.2020
comment
Я предлагаю воспользоваться официальной документацией kubernetes. Что касается руководства, которое вы связали. Все работало корректно на виртуальной машине GCP Compute Engine с ubuntu-18-04-lts образом. Что касается доступа к панели инструментов, к ней нужно обращаться локально из узла с помощью связанного вами руководства. - person Piotr Malec; 29.01.2020
comment
Я отредактировал ответ и добавил обходной путь для доступа к панели управления в веб-браузере на стороне сервера с использованием флага ssh -X. - person Piotr Malec; 29.01.2020