Как заставить службу Google Kubernetes Engine LoadBalancer получать внешний трафик при использовании облачного кода Google ItelliJ?
У меня есть рабочий кластер GKE, обслуживающий контент через порт 80. Как заставить службу балансировки нагрузки доставлять контент на внешний (зарезервированный региональный) статический IP-адрес 111.222.333.123?
я вижу это
kubectl get service
показывает, что внешний статический IP-адрес успешно зарегистрирован. Внешний IP-адрес действительно отвечает на запросы ping.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.16.0.1 <none> 443/TCP 17h
myapp-cluster NodePort 10.16.5.168 <none> 80:30849/TCP 84m
myapp-service LoadBalancer 10.16.9.255 111.222.333.123 80:30879/TCP 6m20s
Кроме того, консоль Google Cloud Platform показывает, что правило переадресации установлено и правильно ссылается на целевой пул GKE.
Манифест развертывания и обслуживания, который я использую, показан ниже:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
labels:
app: myapp
spec:
replicas: 2
selector:
matchLabels:
app: myapp
environment: sandbox
template:
metadata:
labels:
app: myapp
environment: sandbox
spec:
containers:
- name: myapp
image: myapp
imagePullPolicy: Always
ports:
- containerPort: 8080
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
selector:
app: myapp
environment: sandbox
ports:
- port: 80
targetPort: 8080
type: LoadBalancer
loadBalancerIP: "111.222.333.123"
Связанный файл конфигурации skaffold для справки:
apiVersion: skaffold/v2beta18
kind: Config
metadata:
name: myapp
build:
artifacts:
- image: myapp
context: .
docker: {}
deploy:
kubectl:
manifests:
- gcloud_k8_staticip_deployment.yaml
Что мне не хватает, чтобы разрешить трафику достигать кластера GKE при запуске этой конфигурации с помощью Google Cloud Code?
Приносим извинения, если об этом спрашивали раньше. Рада взять указатель, если я пропустил правильное решение, рассматривая вопросы.
2 ответа
Я воспроизвел вашу настройку и столкнулся с той же проблемой, что и ваша (смог проверить IP-адрес службы, но не смог подключиться к нему из браузера).
Затем я изменил порт контейнера развертывания на 80, целевой порт службы на 80 и порт службы на 8080, и это сработало, затем я смог подключиться к развертыванию из браузера, используя IP-адрес службы.
Насколько я знаю, приведенная в этом вопросе конфигурация действительно должна работать, если изображение указывает на доступное место. Я подтвердил, что эта конфигурация работает с использованием игрушечной установки полностью без IDE, просто с использованием оболочки gcloud, и все работает хорошо.
Проблема возникает из-за того, что Google Cloud Code изменяет контекст kubectl без каких-либо дополнительных предупреждений, когда в конфигурации запуска настроен переключатель контекста.