[英]How to access a kubernetes service in GCP by name from a vm?
我在名稱空間myNamespace中的gcp中托管了一個名為myService的負載均衡kubernetes服務。 我給它一個'myKubeTag'的標簽。 我還有一個運行vm,它本身正在運行一個想要與myService通信的docker容器。 我已經創建了一個防火牆規則,允許兩者之間的tcp流量。
我可以將服務的IP地址提供給vm進行連接,我想知道的是,如何設置名稱代理,以便vm可以通過名稱引用它?
工作負載和服務是從helm啟動的,如下所示:
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: {{ template "app.prefix" . }}
spec:
selector:
matchLabels:
name: {{ template "app.prefix" . }}
template:
metadata:
labels:
name: {{ template "app.prefix" . }}
spec:
nodeSelector:
target_workload: {{ .Values.prefix }}-myApp
containers:
- name: myApp
image: {{ .Values.myApp.image }}
tolerations:
- key: "target_workload"
operator: "Equal"
value: {{ .Values.prefix }}-myApp
effect: "NoSchedule"
---
apiVersion: v1
kind: Service
metadata:
name: {{ template "app.prefix" . }}
spec:
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 8080
type: LoadBalancer
selector:
role: {{ template "app.prefix" . }}
我已准備好以下內容: https : //kubernetes.io/docs/concepts/services-networking/dns-pod-service/
這讓我覺得主機名是myService.myNamespace.sxc.cluster-domain.myCluster,但是我的VM上運行的容器正在拋出一個Unknown主機異常。
在GCP中使用服務type: LoadBalancer
,它會自動為您分配一個ExternalIP:
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.12.0.1 <none> 443/TCP 162m
nginx-svc LoadBalancer 10.12.15.100 35.232.130.5 80:30826/TCP 8m27s
在此示例中,域看起來像以下5.130.232.35.bc.googleusercontent.com
我已經通過在nginx pod中執行nslookup
來檢查它
$ kubectl exec nginx-deployment-85c9bf4fd7-h5tt9 nslookup 35.232.130.5
Server: 10.12.0.10
Address: 10.12.0.10#53
Non-authoritative answer:
5.130.232.35.in-addr.arpa name = 5.130.232.35.bc.googleusercontent.com.
請記住,默認nginx
映像中沒有nslookup,因此您需要安裝它。
希望這是你想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.