gpt4 book ai didi

dns - Kubernetes无法解析节点服务

转载 作者:行者123 更新时间:2023-12-02 11:49:03 25 4
gpt4 key购买 nike

我在Kubernetes内的内部DNS /服务解析方面遇到问题,我似乎无法找到问题所在。我有一个运行Kong的api-gateway pod,它通过其内部服务名称srv-name.staging.svc.cluster.local调用其他服务。直到最近,它的工作情况都很好。我尝试将3个服务部署到登台和生产两个 namespace 中。

第一个服务在调用booking-service.staging.svc.cluster.local时可以按预期工作,但是相同的代码似乎在生产服务中不起作用。另外两个服务在任何一个命名空间中都不值得。

我得到的行为是超时。如果我从网关容器中 curl 这些服务,则除了部署的第一个服务(booking-service.staging.svc.cluster.local)之外,它们都将超时。当我从同一容器中的另一个容器调用这些服务时,它们确实可以正常工作。

我为希望向客户端公开的每个服务设置了Node服务。

这是一个Kubernetes部署示例:

---

# API

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{SRV_NAME}}
spec:
replicas: 1
template:
metadata:
labels:
app: {{SRV_NAME}}
spec:
containers:
- name: booking-api
image: microhq/micro:kubernetes
args:
- "api"
- "--handler=rpc"
env:
- name: PORT
value: "8080"
- name: ENV
value: {{ENV}}
- name: MICRO_REGISTRY
value: "kubernetes"
ports:
- containerPort: 8080
- name: {{SRV_NAME}}
image: eu.gcr.io/{{PROJECT_NAME}}/{{SRV_NAME}}:latest
imagePullPolicy: Always
command: [
"./service",
"--selector=static"
]
env:
- name: MICRO_REGISTRY
value: "kubernetes"
- name: ENV
value: {{ENV}}
- name: DB_HOST
value: {{DB_HOST}}
- name: VERSION
value: "{{VERSION}}"
- name: MICRO_SERVER_ADDRESS
value: ":50051"
ports:
- containerPort: 50051
name: srv-port
---

apiVersion: v1
kind: Service
metadata:
name: booking-service
spec:
ports:
- name: api-http
port: 80
targetPort: 8080
protocol: TCP
selector:
app: booking-api

我正在使用带有Kubernetes预配置的go-micro https://github.com/micro/go-micro。再次在一种情况下绝对可以正常工作,但对其他所有情况却不是。这使我相信它与代码无关。在本地也可以正常工作。

当我从另一个Pod中执行 nslookup时,它将解析名称并按预期方式为内部Node服务找到群集IP。当我尝试对该IP地址进行URL设置时,我得到了相同的超时行为。

我在Google Cloud上使用Kubernetes 1.8。

最佳答案

我不明白为什么您认为这是Kubernetes中内部DNS /服务解析的问题,因为当您执行DNS查找时,它可以工作,但是如果您查询该IP,则会出现连接超时。

  • 如果您从pod外部 curl 这些服务,则除了使用第一个服务之外,它们都将超时,无论您使用的是IP还是域名。
  • 当您从同一容器中的另一个容器调用这些服务时,它们确实可以正常工作。

  • 与Pod之间的连接有关的问题似乎不仅仅是DNS问题,因此,我会将您的故障排除重点放在该方向上,但是如果我错了,请纠正我。

    您是否可以执行典型的网络故障排除(ping,telnet,traceroute),从一个Pod到DNS查找所给IP的IP,以及从一个向另一个Pod超时的容器之一进行更新,并用结果更新问题?

    关于dns - Kubernetes无法解析节点服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48633781/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com