Как использовать бессерверный доступ VPC для облачных функций

#kubernetes #google-cloud-platform #google-cloud-functions #serverless

#kubernetes #google-облачная платформа #google-cloud-функции #Бессерверный

Вопрос:

Я создал кластеры Kubernetes с образцом приложения Spring Boot, и оно хорошо работает с общедоступного ip. Теперь я хочу получить доступ к конечной точке весенней загрузки в кластерах 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 %sn", 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:

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

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

  1. Общедоступный балансировщик нагрузки. Сервис доступен через Интернет.
  2. Внутренний балансировщик нагрузки. Служба предоставляется внутри VPC и региона.
  3. Порт узла. Сервис предоставляется на 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

Комментарии:

1. Спасибо за ваш ответ. На самом деле, я уже настроил общедоступный балансировщик нагрузки, который работает нормально. Я попробовал этот общедоступный IP-адрес в облачной функции. Это тоже работает. Я попробую внутренний балансировщик нагрузки.

2. Я прочитал в вашем профиле, что вы работаете с openstack. как я могу использовать openstack в качестве балансировщика нагрузки для kubernetes? вы используете magnum или ZUN? мой openstack работает слишком медленно, что мне делать? извините, что спрашиваю об этом здесь, но это важно для меня. Я рад получить ваше электронное письмо. не могли бы вы добавить его в свой профиль?

3. Я следовал рекомендациям по созданию внутреннего баланса нагрузки. ( cloud.google.com/files /… ). Но мой балансировщик нагрузки всегда не работает. Как я могу создать правильный и подключиться к облачной функции? Других руководств или руководств нет

4. Вы должны выполнить следующие действия: cloud.google.com/kubernetes-engine/docs/how-to /…