【问题标题】:Dashboard not running仪表板未运行
【发布时间】:2020-07-09 02:45:26
【问题描述】:

我已经使用 this 链接在 ubuntu 服务器上设置了 kubenertes。

然后我使用以下方法安装了 kubernetes 仪表板:

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

然后我将 ClusterIP 更改为 NodePort 32323,将服务更改为 NodePort。

但是容器没有运行。

uday@dockermaster:~$ kubectl -n kubernetes-dashboard get all
NAME                                             READY   STATUS             RESTARTS   AGE
pod/dashboard-metrics-scraper-779f5454cb-pqfrj   1/1     Running            0          50m
pod/kubernetes-dashboard-64686c4bf9-5jkwq        0/1     CrashLoopBackOff   14         50m

NAME                                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
service/dashboard-metrics-scraper   ClusterIP   10.103.22.252   <none>        8000/TCP        50m
service/kubernetes-dashboard        NodePort    10.102.48.80    <none>        443:32323/TCP   50m

NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/dashboard-metrics-scraper   1/1     1            1           50m
deployment.apps/kubernetes-dashboard        0/1     1            0           50m

NAME                                                   DESIRED   CURRENT   READY   AGE
replicaset.apps/dashboard-metrics-scraper-779f5454cb   1         1         1       50m
replicaset.apps/kubernetes-dashboard-64686c4bf9        1         1         0       50m

uday@dockermaster:~$ kubectl -n kubernetes-dashboard describe svc kubernetes-dashboard
Name:                     kubernetes-dashboard
Namespace:                kubernetes-dashboard
Labels:                   k8s-app=kubernetes-dashboard
Annotations:              Selector:  k8s-app=kubernetes-dashboard
Type:                     NodePort
IP:                       10.102.48.80
Port:                     <unset>  443/TCP
TargetPort:               8443/TCP
NodePort:                 <unset>  32323/TCP
Endpoints:
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

其他应用在 NodePort 上运行良好,无论是 Tomcat/nginx/databases。

但是在这里,创建容器失败了。

C:\Users\uday\Desktop>kubectl.exe get pods -n kubernetes-dashboard
NAME                                         READY   STATUS             RESTARTS   AGE
dashboard-metrics-scraper-779f5454cb-pqfrj   1/1     Running            1          20h
kubernetes-dashboard-64686c4bf9-g9z2k        0/1     CrashLoopBackOff   84         18h

C:\Users\uday\Desktop>kubectl.exe describe pod kubernetes-dashboard-64686c4bf9-g9z2k -n kubernetes-dashboard
Name:         kubernetes-dashboard-64686c4bf9-g9z2k
Namespace:    kubernetes-dashboard
Priority:     0
Node:         slave-node/10.0.0.6
Start Time:   Sat, 28 Mar 2020 14:16:54 +0000
Labels:       k8s-app=kubernetes-dashboard
              pod-template-hash=64686c4bf9
Annotations:  <none>
Status:       Running
IP:           182.244.1.12
IPs:
  IP:           182.244.1.12
Controlled By:  ReplicaSet/kubernetes-dashboard-64686c4bf9
Containers:
  kubernetes-dashboard:
    Container ID:  docker://470ee8c61998c3c3dda86c58ad17817468f55aa73cd4feecf3b018977ce13ca3
    Image:         kubernetesui/dashboard:v2.0.0-rc6
    Image ID:      docker-pullable://kubernetesui/dashboard@sha256:61f9c378c427a3f8a9643f83baa9f96db1ae1357c67a93b533ae7b36d71c69dc
    Port:          8443/TCP
    Host Port:     0/TCP
    Args:
      --auto-generate-certificates
      --namespace=kubernetes-dashboard
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Error
      Exit Code:    2
      Started:      Sun, 29 Mar 2020 09:01:31 +0000
      Finished:     Sun, 29 Mar 2020 09:02:01 +0000
    Ready:          False
    Restart Count:  84
    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-pzfbl (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
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:
    SizeLimit:  <unset>
  kubernetes-dashboard-token-pzfbl:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  kubernetes-dashboard-token-pzfbl
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  beta.kubernetes.io/os=linux
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  BackOff  4m49s (x501 over 123m)  kubelet, slave-node  Back-off restarting failed container

kubectl.exe logs kubernetes-dashboard-64686c4bf9-g9z2k -n kubernetes-dashboard
2020/03/29 09:01:31 Starting overwatch
2020/03/29 09:01:31 Using namespace: kubernetes-dashboard
2020/03/29 09:01:31 Using in-cluster config to connect to apiserver
2020/03/29 09:01:31 Using secret token for csrf signing
2020/03/29 09:01:31 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(0xc0004e2dc0)
    /home/travis/build/kubernetes/dashboard/src/app/backend/client/csrf/manager.go:40 +0x3b0
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(0xc00043ae80)
    /home/travis/build/kubernetes/dashboard/src/app/backend/client/manager.go:499 +0xc6
github.com/kubernetes/dashboard/src/app/backend/client.(*clientManager).init(0xc00043ae80)
    /home/travis/build/kubernetes/dashboard/src/app/backend/client/manager.go:467 +0x47
github.com/kubernetes/dashboard/src/app/backend/client.NewClientManager(...)
    /home/travis/build/kubernetes/dashboard/src/app/backend/client/manager.go:548
main.main()
    /home/travis/build/kubernetes/dashboard/src/app/backend/dashboard.go:105 +0x20d

【问题讨论】:

  • 描述部署并添加输出

标签: kubernetes


【解决方案1】:

问题

应用程序未启动的原因是仪表板容器本身未运行。如果您查看您提供的输出,您会看到:

pod/kubernetes-dashboard-64686c4bf9-5jkwq 0/1 CrashLoopBackOff 14

那么我们如何troubleshoot 这个呢?嗯,主要有三种方式。其中一个您可能会比其他两个使用得更多。

描述

Describe 是一个命令,允许您获取有关 kubernetes 中资源的详细信息。这可能是元数据信息、您分配的副本数量,甚至是描述资源无法启动的原因的一些事件。例如,在可用容器注册表中找不到您的 Pod 清单中引用的容器映像。使用 Describe 的语法如下:

kubectl describe pod -n kubernetes-dashboard kubernetes-dashboard-64686c4bf9-5jkwq

这里还有一些关于该工具的优秀文档。

日志

您可能会在 Kubernetes 中利用的下一个故障排除步骤是使用 logging architecture。您可能知道,在生成 Docker 容器时,通常会将应用程序生成的日志重定向到进程的STDOUTSTDERR。 Kubernetes 他们为你捕获这些日志数据,并提供一个 API 抽象层,你可以与之交互。有时,您的 Describe 事件不会显示进程未运行的原因。但是,您可以继续处理过程中的grabbing logs 以确定出了什么问题。示例语法可能如下所示:

kubectl logs -f -n kubernetes-dashboard kubernetes-dashboard-64686c4bf9-5jkwq

执行

最后一种常见的故障排除技术是Exec。 Exec 有效地允许您附加到正在运行的容器中的外壳,以便您可以interact 使用实时环境对应用程序进行故障排除。这允许您执行诸如查看配置​​文件是否在容器的文件系统上正确暂存、确定环境变量是否正确扩展和设置等操作。Exec 的示例语法可能如下所示:

kubectl exec -it -n kubernetes-dashboard kubernetes-dashboard-64686c4bf9-5jkwq sh

但是,在这种情况下,您的 pod 处于 CrashLoopBackoff 状态。这意味着由于容器未运行,您将无法执行它。 Kubernetes API 服务器识别出一种故障模式,并相应地自动减少调度工作负载的尝试。

这是一个很好的thread on how to troubleshoot pod,它进入了这个状态。

总结

所以,既然我已经说了所有这些。我们如何回答您的问题?好吧,我们不能直接回答。但我有点像上面的总结。因为您正在寻找的真正答案是如何正确排除在 Kubernetes 中运行的 linux 容器的故障。这些问题将成为您在 Kubernetes 体验中反复出现的主题,因此尽快在生态系统中培养调试技能至关重要。

如果 DescribeLogsExec 命令无法帮助您找出 Dashboard 窗格未能出现的原因,请随时在此答案上添加评论以请求更多支持,我'我会很乐意为您提供帮助!

【讨论】:

  • 嘿,对不起,这是个老问题,但我遇到了完全相同的问题。我遵循了这些步骤并找到了问题,但我不清楚如何解决它。你能复习我的问题stackoverflow.com/questions/70398496/…吗?
  • 不知道为什么,但失败前日志中的最后一行是“从 kubernetes-dashboard-csrf 机密中初始化 csrf 令牌”,所以它可能与此有关。我用谷歌搜索了它,发现了一些讨论它的 Github 问题。也许是一个有问题的节点?尝试重新启动所有节点,重新配置 pod,然后再试一次?
猜你喜欢
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 2019-12-05
  • 2014-01-03
相关资源
最近更新 更多