我在gcp中托管了一个负载均衡kubernetes服务,该服务在名称空间myNamespace中称为myService。我给它加上了“ myKubeTag”标签。我也有一个正在运行的虚拟机,它本身正在运行一个想要与myService通信的docker容器。我创建了一个防火墙规则,以允许两者之间的TCP通信。
我可以将服务的IP地址提供给vm进行连接,我想知道的是,如何设置名称代理,以便vm可以按名称进行引用?
工作负载和服务从掌舵启动,如下所示:
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 host异常。
答案 0 :(得分:0)
一旦您在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吊舱内部进行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,因此您需要安装它。
希望这就是您想要的。