Kubernetes pod wget -qO-无法提供某些服务,但并非全部

时间:2018-06-15 23:11:14

标签: networking kubernetes iptables

当我回顾最近的实验时,我仔细阅读了笔记,使用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. 进入豆荚(高山)
    • ifconfig - 172.17.0.4,127.0.0.1
    • nslookup test 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)窗格
    • ifconfig - 172.17.0.8,127.0.0.1
    • nslookup test - works
    • ping到pod 172.17.0.4 - 正常工作
    • wget http://172.17.0.8:8080 - 立即失败,拒绝连接
    • wget -qO- test - 立即失败,连接被拒绝
  4. 最重要的是 - 我认为wget -qO- {service}需要开始报告其pod,而目前却没有。再次 - 我完成了调试服务文档的场景,并且完成没有问题。

    那么wget -qO-失败会导致什么(其他)错误?

2 个答案:

答案 0 :(得分:0)

所以,让我们看看......你在 busybox 中。

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中向自己提出请求。

您需要对指向您应用的服务或直接指向包含您应用的广告连播的服务发送请求。

答案 1 :(得分:0)

我删除了一个被送入应用程序的重要属性。所以实际上问题根本不是K8S的水平。基本上我是在渲染已部署的应用程序'隐形'。