Как получить доступ к сервису kubernetes в GCP по имени из виртуальной машины? - PullRequest
0 голосов
/ 18 июня 2019

У меня есть служба балансировки нагрузки kubernetes, размещенная в gcp, которая называется myService в пространстве имен myNamespace. Я дал ему тег «myKubeTag». У меня также есть запущенный виртуальный компьютер, который сам запускает контейнер докера, который хочет связаться с myService. Я создал правило брандмауэра, чтобы разрешить трафик tcp между ними.

Я могу дать IP-адрес службы для подключения к виртуальной машине, что меня интересует, как настроить прокси-сервер имени, чтобы виртуальная машина могла просто ссылаться на него по имени?

Рабочая нагрузка и служба запускаются из 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, однако контейнер, работающий на моей виртуальной машине, вызывает исключение Неизвестный хост.

1 Ответ

0 голосов
/ 19 июня 2019

Как только вы используете Сервис type: LoadBalancer внутри GCP , он автоматически назначает вам 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

Я проверил это, выполнив nslookup изнутри модуля nginx

$ 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 нет, поэтому вам необходимо его установить.

Надеюсь, это то, что вы искали.

...