【问题标题】:Kubernetes pod wget -qO- fails for some service, but not allKubernetes pod wget -qO- 对某些服务失败,但不是全部
【发布时间】:2018-11-25 18:40:17
【问题描述】:

在回顾最近的实验时,我回顾了笔记,使用 Kubernetes 重新创建了一个相对简单的设置,用于后端和前端服务设置。在我的场景中,这两个服务都需要公开,而现在我正在使用 NodePort。

大约一周前,这一切都运作良好,但我想我设法把事情搞砸了,这让我发疯了。结果是我似乎无法通过该服务访问我的后端 pod。我按照调试服务文档 (https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service) 进行了操作,事情进展得很快。

这是我当前的 yaml 文件:

apiVersion: v1
kind: Service
metadata:
  name: test
spec:
  type: NodePort
  ports:
  - name: default
    protocol: TCP
    port: 80
    targetPort: 8080
  selector:
    app: test
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
spec:
  selector:
    matchLabels:
      app: test
  replicas: 1
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: test
        image: jan/test:v1.0.0
        ports:
        - containerPort: 8080
          protocol: TCP

应用程序启动良好 - 它在日志中报告它已准备好接受请求。 (这是一个 Java/Grizzly 应用程序)。现在这是我尝试过的列表。

  1. 检查 kubectl 服务:它在那里(在本例中为 172.17.0.4)
  2. 执行到 pod (alpine)
    • ifconfig - 172.17.0.4, 127.0.0.1
    • nslookup 测试 10.96.0.10 - 有效 (注意没有名称服务,这将返回 无法解析“(null)”:名称无法解析
    • ping 127.0.0.1 - 有效
    • wget http://127.0.0.1:8080 - 响应良好
    • ping 172.17.0.4 - 有效
    • wget http://172.17.0.4:8080 - 立即失败,连接被拒绝
    • wget -qO-test - 一段时间后失败,操作超时
  3. 执行到另一个 (busybox) pod
    • ifconfig - 172.17.0.8, 127.0.0.1
    • nslookup 测试 - 有效
    • ping 到 pod 172.17.0.4 - 有效
    • wget http://172.17.0.8:8080 - 立即失败,连接被拒绝
    • wget -qO-test - 立即失败,连接被拒绝

最重要的是 - 我认为 wget -qO- {service} 需要开始报告它的 pod,而目前它没有。再一次 - 我浏览了调试服务文档的场景,并且没有问题地完成。

那么,wget -qO- 失败还有什么(其他)问题?

【问题讨论】:

    标签: networking kubernetes iptables


    【解决方案1】:

    那么,让我们看看...您在 busybox pod 中。

    ifconfig - 172.17.0.8, 127.0.0.1

    wget http://172.17.0.8:8080 - 立即失败,连接被拒绝

    你在这里做什么?这就像做localhost:8080。当然,您会被拒绝连接。 busybox 的 8080 端口没有任何服务。

    wget -qO-test - 立即失败,连接被拒绝

    这里也一样。现在你在busybox的80端口做请求,又没有服务。

    这种配置绝对不可能奏效。你所做的只是在busybox中向自己发出请求。

    您需要向指向您的应用或直接指向包含您的应用的 pod 的服务发出请求。

    【讨论】:

    • 感谢您的回复!是的,busybox pod 的那些试验有点笨拙。实际上问题在部署文件的后期编辑中。最初,我将status.podIP 作为参数提供给应用程序。我无意中删除了它,这使应用程序回退到其本地/默认 IP 地址。这导致了这个问题。我现在已经更正了,事情又开始了。
    【解决方案2】:

    我删除了一个输入应用程序的重要属性。所以实际上问题根本不在K8S这个层面。本质上,我正在渲染我部署的应用程序“不可见”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 2019-11-22
      • 2019-05-23
      • 2020-10-02
      相关资源
      最近更新 更多