Как использовать бессерверный доступ к VPC для облачных функций - PullRequest
1 голос
/ 20 апреля 2019

Я создал кластеры Kubernetes с примером приложения Spring Boot, и он хорошо работает с публичного ip. Теперь я хочу получить доступ к конечной точке загрузки Spring в кластерах Kubernetes. Я уже следовал руководству Google по настройке бессерверного доступа VPC. (https://cloud.google.com/vpc/docs/configure-serverless-vpc-access?hl=bg). Я создал доступ к серверу VPC и использовал его в одной из облачных функций.

Теперь моя проблема в том, как я могу подключить внутренний ip кластеров Kubernetes из своей облачной функции ?. Я написал код на Go.

package p

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func HelloWorld(w http.ResponseWriter, r *http.Request) {
    fmt.Println("Starting the application...")

    response, err := http.Get("http://10.59.247.177:47002/")
    if err != nil {
        fmt.Fprint(w, "The HTTP request failed with error %s\n", err)
    } else {
        data, _ := ioutil.ReadAll(response.Body)
        fmt.Fprint(w, string(data))
    }
}

Но я получаю ошибку: HTTP-запрос не выполнен с ошибкой% s Получите http://10.59.247.177:47002/: наберите tcp 10.59.247.177:47002: тайм-аут ввода-вывода

1 Ответ

1 голос
/ 20 апреля 2019

По умолчанию службы Kubernetes являются внутренними по отношению к кластеру Kubernetes.Вы должны предоставить сервисы, чтобы к ним могли подключаться приложения из-за пределов Kubernetes.

Существует три основных способа предоставления услуг в Kubernetes:

  1. Балансировщик общедоступной нагрузки.Сервис выставлен на интернет.
  2. Внутренний балансировщик нагрузки.Сервис предоставляется внутри VPC и региона.
  3. NodePort.Служба предоставляется на IP-адресах узлов Kube через порт с большим номером.Это делает сервис видимым внутри и между регионами внутри VPC.

Подробнее здесь https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types и здесь https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer

...