簡體   English   中英

無法通過 kubernetes 上的服務名稱訪問服務

[英]Not able to access service by service name on kubernetes

我正在使用以下清單。 我有一個簡單的服務器,它在/hello上打印 pod 名稱。 在這里,我正在瀏覽 kubernetes 文檔,它提到我們也可以通過服務名稱訪問服務。 但這對我不起作用。 由於這是NodePort類型的服務,我可以使用其中一個節點的 IP 訪問它。 我的清單有問題嗎?

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myhttpserver
  labels:
    day: zero
    name: httppod
spec:
  replicas: 1
  selector:
    matchLabels:
      name: httppod
      day: zero
  template:
    metadata:
      labels:
        day: zero
        name: httppod
    spec:
      containers:
        - name: myappcont
          image: agoyalib/trial:tryit
          imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
  name: servit
  labels:
    day: zeroserv
spec:
  type: NodePort
  selector:
    day: zero
    name: httppod
  ports:
    - name: mine
      port: 8080
      targetPort: 8090

編輯:我創建了自己的迷你 k8s 集群,並在主節點上執行這些操作。

當你說的時候,我所理解的

由於這是 NodePort 類型的服務,我可以使用其中一個節點的 IP 訪問它

您正在從集群外部訪問您的服務。 這就是您無法使用其名稱訪問它的原因。

要使用其名稱訪問服務,您需要在集群內部。

下面是一個示例,您使用基於 centos 的 pod 以使用其名稱連接到您的服務:

# Here we're just creating a pod based on centos
$ kubectl run centos --image=centos:7 --generator=run-pod/v1 --command sleep infinity

# Now let's connect to that pod 
$ kubectl exec centos -ti bash
[root@centos /]# curl servit:8080/hello

您需要在集群內部,這意味着您可以從另一個 pod 訪問它。

kubectl run --generator=run-pod/v1 test-nslookup --image=busybox:1.28 --rm -it -- nslookup servit

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM