如何调试 minikube 错误?

How to debug minikube errors?

我正在尝试 运行 使用 Cassandra 数据库的 pod,下面是它的部署描述:

- apiVersion: extensions/v1beta1
  kind: Deployment
  metadata:
    name: cassandra
    namespace: test
  spec:
    progressDeadlineSeconds: 600
    replicas: 1
    revisionHistoryLimit: 2
    selector:
      matchLabels:
        app: cassandra
    template:
      metadata:
        labels:
          app: cassandra
      spec:
        containers:
        - env:
          - name: MAX_HEAP_SIZE
            value: 1024M
          - name: HEAP_NEWSIZE
            value: 1024M
          image: cassandra:3.10
          name: cassandra
          ports:
          - containerPort: 9042
            protocol: TCP

pod 已创建,然后进入 CrashLoopBackOff。当我尝试 kubectl describe 时,我看到的是:

Name:           cassandra-6b5f5c46cf-zpwlx
Namespace:      test
Node:           minikube/192.168.99.102
Start Time:     Thu, 18 Jan 2018 15:26:05 +0200
Labels:         app=cassandra
                pod-template-hash=2619170279
Annotations:    kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"test","name":"cassandra-6b5f5c46cf","uid":"22f28f45-fc53-11e7-ae64-08002798f...
Status:         Running
IP:             172.17.0.7
Controlled By:  ReplicaSet/cassandra-6b5f5c46cf
Containers:
  cassandra:
    Container ID:   docker://b3477788391622145350e870c00e19561ee662946aa5a307cc8bea28fc874544
    Image:          cassandra:3.10
    Image ID:       docker-pullable://cassandra@sha256:af21476b230507c6869d758e4dec134886210bd89d56deade90bc835a1c0af37
    Port:           9042/TCP
    State:          Terminated
      Reason:       Error
      Exit Code:    137
      Started:      Thu, 18 Jan 2018 15:26:26 +0200
      Finished:     Thu, 18 Jan 2018 15:26:28 +0200
    Last State:     Terminated
      Reason:       Error
      Exit Code:    137
      Started:      Thu, 18 Jan 2018 15:26:11 +0200
      Finished:     Thu, 18 Jan 2018 15:26:14 +0200
    Ready:          False
    Restart Count:  2
    Environment:
      MAX_HEAP_SIZE:  1024M
      HEAP_NEWSIZE:   1024M
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-77lfg (ro)
Conditions:
  Type           Status
  Initialized    True 
  Ready          False 
  PodScheduled   True 
Volumes:
  default-token-77lfg:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-77lfg
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     <none>
Events:
  Type     Reason                 Age               From               Message
  ----     ------                 ----              ----               -------
  Normal   Scheduled              28s               default-scheduler  Successfully assigned cassandra-6b5f5c46cf-zpwlx to minikube
  Normal   SuccessfulMountVolume  28s               kubelet, minikube  MountVolume.SetUp succeeded for volume "default-token-77lfg"
  Normal   Pulled                 7s (x3 over 27s)  kubelet, minikube  Container image "cassandra:3.10" already present on machine
  Normal   Created                7s (x3 over 27s)  kubelet, minikube  Created container
  Normal   Started                6s (x3 over 27s)  kubelet, minikube  Started container
  Warning  BackOff                4s (x2 over 18s)  kubelet, minikube  Back-off restarting failed container
  Warning  FailedSync             4s (x2 over 18s)  kubelet, minikube  Error syncing pod

错误报告完全没有用:它只是一些通用消息,没有说明问题。

pod 的描述中有一个可疑的段落:volumes。我没有要求为这个容器安装任何卷。但是,经过网络搜索,我认为这个容器中挂载的东西只是Kubernetes如何工作的一些技术方面,没有实际意义。

无论如何:我怎样才能从 minikube 获得更多关于它试图做什么以及失败的信息?

您的 pod 处于 CrashLoopBackoff 状态。这意味着您的 pod 内的容器正在终止执行,kubernetes 正在尝试再次 运行 它,但它再次终止,给您一个 Crash Loop.

我建议您通过 运行ning 查看容器的输出:

kubectl -n test logs -f cassandra-6b5f5c46cf-zpwlx

那应该是 cassandra 的输出并且应该解释 cassandra 不是 运行ning 的原因。