[英]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.