如何在 K8s 中调试卡在启动时的服务?

How can I debug a service in K8s which get stuck on startup?

我正在尝试更新我的 K8s 知识并正在关注 this tutorial,但我 运行 遇到了一些问题。我当前的集群 (minikube) 包含一个名为 kubia 的 pod。这个 pod 运行良好,包含一个简单的 Web 服务器。

我想通过 kubectl expose pod kubia --type=LoadBalancer --name kubia-http.

公开该服务器

问题: 根据我的 K8s 仪表板,kubia-http 在启动时卡住了。

调试中:

kubectl describe endpoints kubia-http 给我

Name:         kubia-http
Namespace:    default
Labels:       run=kubia
Annotations:  endpoints.kubernetes.io/last-change-trigger-time: 2020-11-20T15:41:29Z
Subsets:
  Addresses:          172.17.0.5
  NotReadyAddresses:  <none>
  Ports:
    Name     Port  Protocol
    ----     ----  --------
    <unset>  8080  TCP

Events:  <none>

调试时我试图回答以下问题:

1.) 我的服务是否缺少端点?

kubectl get pods --selector=run=kubia 给我一个 kubia 吊舱。所以,我没有错过终点。

2.) 我的服务在与 pod 通信时是否尝试访问错误的端口?

来自我的 pod yaml:

  containers:
    - name: kubia
      ports:
        - containerPort: 8080
          protocol: TCP

来自我的服务 yaml:

  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080
      nodePort: 32689

服务尝试访问正确的端口。

调试此问题的好方法是什么?

下面的命令输出是什么样子的?

  1. kubectl get services kubia-http
  2. kubectl describe services kubia-http

那里看起来一切正常吗?

我认为您遇到了此 中提到的类似问题。 因此,如果 kubectl get services kubia-http 除了已知的预期行为 external ip pending on minikube 之外看起来不错,您应该能够使用 nodeport 或 clusterip

访问该服务