【问题标题】:Unable to access a service through a service name. in kubernetes无法通过服务名称访问服务。在 Kubernetes 中
【发布时间】:2021-09-24 08:04:21
【问题描述】:

我是 Kubernetes 新手,我正在尝试不同的东西。这是我的部署文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hellok8s
spec:
  replicas: 2
  selector:
    matchLabels:
      app: hellok8s
  template:
    metadata:
      labels:
        app: hellok8s
    spec:
      containers:
      - image: brianstorti/hellok8s:v3
        name: hellok8s-container

下面是我的服务文件。

apiVersion: v1
kind: Service
metadata:
  name: hellok8s-svc
spec:
  type: NodePort
  selector:
    app: hellok8s
  ports:
  - port: 4567
    nodePort: 30001

我正在使用 exec 命令并从容器内部尝试使用服务名称访问服务。当我使用集群 IP 访问它时,它工作正常,但是当我尝试使用服务名称访问它时,它不起作用。可能是什么问题?

【问题讨论】:

  • 1.您是否尝试过附加命名空间,例如servicename.namespace 2. 似乎您错过了服务中的protocol: TCP
  • 服务正在 TCP 上运行。我已经检查了服务。以及如何附加命名空间? @杨磊
  • 但是您没有粘贴服务的TCP 部分,您可以更新问题吗?我不知道你从哪里执行,如果来自 anther 命名空间,你可以调用hellok8s-svc.belongingnamespace
  • 我从默认命名空间执行它
  • 你在使用svc时使用的是哪个端口?它应该是 4567,而不是 30001

标签: kubernetes kubernetes-pod kubernetes-service


【解决方案1】:

服务 DNS:hellok8s-svc.default.svc只能在集群内部访问。

服务 DNS:<service-name>.<namespace>.svc

由于您使用的是NodePort 类型的服务,因此您可以从集群内部和外部通过NODE_IP:NODT_PORT 访问它。但是服务 DNS 地址在集群外部不起作用。这是预期的行为。

更新:

curl 与服务DNS 一起使用时,请确保您使用的是complete DNS 地址:

  • <service-name>.<namespace>.svc.cluster.local

从容器内部试试:

$ curl http://hellok8s-svc.default.svc.cluster.local:4567

注意:

话说,你不记得DNS命名格式了,你还是可以通过nslookupCLI获取完整地址。

# nslookup service-name.namespace
$ nslookup es-all.demo
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      es-all.demo
Address 1: 10.96.97.198 es-all.demo.svc.cluster.local

【讨论】:

  • '我正在使用 exec 命令并从容器内部 --- OP 这么说。它来自服务的容器本身?
  • 我正在使用exec命令进入容器。我可以使用集群 ip 访问它,但无法使用服务名称访问它,即 curl hellok8s-svc:4567
  • @nimramubashir 我已经更新了答案。如果它仍然不起作用,请告诉我。
  • cluster.local 一个永不改变的硬编码字符串吗?
  • @LeiYang cluster.local 是默认集群域名,除非您已将其配置为其他名称。
【解决方案2】:

发布为社区 wiki,以提高知名度。 正如评论中提到的nimramubashir

我进行了更深入的调试,内部 pod-pod 通信似乎存在一些问题。我正在通过 kubeadm 创建一个集群,它似乎有一些问题导致了这个问题。我正在为此提出一个新问题。我已经尝试将它部署在云上,效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 2021-03-16
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多