微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Kubernetes – Curl在服务IP上起作用,但在服务名称上不起作用

如何解决Kubernetes – Curl在服务IP上起作用,但在服务名称上不起作用

我是kubernetes的新手,所以如果我跳过了一些明显的步骤或不清楚我的问题,我深表歉意。

我已经定义了服务game-app-service和部署game-app-deployment。两者都运行良好。

我正在尝试将请求从API网关服务(大使)路由到该服务。尝试从“大使”窗格中卷曲游戏应用程序服务端点时,我发现我总是收到空答复,并且它连接到不是服务ip的IP。但是,如果我用服务的IP地址和正在侦听的端口换出game-app-service,则它会监听:

curl -v -X POST 10.102.142.157:8084/api/test

一切正常,我从服务器获得了预期的响应。

我注意到curl -v -X POST game-app-service/api/test解析为与curl -v -X POST random/api/test相同的IP – 92.242.140.21端口80。这使我相信DNS解析有问题。但是,我已经验证了我的core-dns pod可以正常运行,所以我不确定为什么会这样。

下面,我列出了我的服务和部署配置,以供参考:

apiVersion: v1
kind: Service
Metadata:
  name: game-app-service
spec:
  selector:
    app: game-app-deployment
  ports:
    - protocol: TCP
      port: 8084
      targetPort: 8084
apiVersion: apps/v1
kind: Deployment
Metadata:
  name: game-app-deployment
  labels:
    app: game-app-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: game-app-deployment
  template:
    Metadata:
      labels:
        app: game-app-deployment
    spec:
      containers:
      - name: game-service-app
        image: weflop/game-service-app
        imagePullPolicy: Never
        ports:
        - containerPort: 8084

有人知道为什么我不能使用服务名称代替IP地址吗?

更新:

运行wget -O- game-service-app时,我的HTTP状态为200,但响应为:

 [<=>   
                                                                                                           ]       0  --.-KB/s               <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><Meta http-equiv="refresh" content="0;url=https://searchassist.verizon.com/main?ParticipantID=euekiz39ksg8nwp7iqj2fp5wzfwi5q76&FailedURI=http%3A%2F%2Fgame-service-app%2F&FailureMode=1&Implementation=&AddInType=4&Version=pywr1.0&ClientLocation=us"/><script type="text/javascript">url="https://searchassist.verizon.com/main?ParticipantID=euekiz39ksg8nwp7iqj2fp5wzfwi5q76&FailedURI=http%3A%2F%2Fgame-service-app%2F&FailureMode=1&Implementation=&AddInType=4&Version=pywr1.0&ClientLocation=us";if(top.location!=location){var w=window,d=document,e=d.documentElement,b=d.body,x=w.innerWidth||e.clientWidth||b.clientWidth,y=w.innerHeight||e.clientHeight||b.clientHeight;url+="&w="+x+"&h="+y;}-                                                      [ <=>    

表明DNS查找失败。

解决方法

结果是,问题出在我的API网关位于与我的服务不同的命名空间中,这引起了问题。通过指定“ game-service-app”。每当引用该服务时,我都能解决此问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。