首页 > 解决方案 > 如何调试 K8s 中启动时卡住的服务?

问题描述

我正在尝试更新我的 K8s 知识并遵循本教程,但遇到了一些问题。我当前的集群 ( minikube) 包含一个名为kubia. 这个 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

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

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

标签: kubernetesservice

解决方案


以下命令输出如何?

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

那里的一切看起来都正常吗?

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


推荐阅读