Не удается получить доступ к IP-адресу Banalcer из Google Cloud Shell после создания кластера GKE - PullRequest
0 голосов
/ 13 апреля 2020

Я изучаю службы GKE и создал GKE cluster с информацией ниже

 $ gcloud container clusters list
   NAME       LOCATION    MASTER_VERSION  MASTER_IP       MACHINE_TYPE   NODE_VERSION    NUM_NODES  STATUS
   mycluster  us-east1-b  1.14.10-gke.27  35.X.X.X        n1-standard-1  1.14.10-gke.27  3          RUNNING

Я создал свой собственный VPC subnet с диапазоном ниже, который я назначил для кластера.

   IP address range : 10.7.0.0/24

Нижеследующий вторичный диапазон IP-адресов был назначен механизмом GKE

   Secondary IP range

  gke-mycluster-pods-765b8f97       10.44.0.0/14    
  gke-mycluster-services-765b8f97   10.237.0.0/20 

После создания кластера информация об узле выглядит следующим образом:

  $kubectl get nodes          

  NAME                                       STATUS   ROLES    AGE   VERSION
  gke-mycluster-default-pool-c2ddd83e-km5k   Ready    <none>   21m   v1.14.10-gke.27
  gke-mycluster-default-pool-c2ddd83e-trrl   Ready    <none>   21m   v1.14.10-gke.27
  gke-mycluster-default-pool-c2ddd83e-x4w3   Ready    <none>   21m   v1.14.10-gke.27

Мой YAML развертывания выглядит следующим образом, что создает nginx контейнер:

  apiVersion: apps/v1
  kind: Deployment
  metadata:
     name: mywebapp-replicaset
     labels:
       app: mywebapp
       type: front-end
     spec:
       template:
         metadata:
         name: myngix-pod
           labels:
             app: mywebapp
             type: front-end
  spec:
    containers:
      - name: nginx
        image: nginx
        ports:
          - containerPort: 80
    replicas: 3
    selector:
    matchLabels:
       type: front-end

Ниже приведено определение моей службы

  apiVersion: v1
  kind: Service
  metadata:
     name: mywebapp-services
     labels:
       app: mywebapp
       type: front-end
  spec:
     type: LoadBalancer
     ports:
       - targetPort: 80
         port: 80
     selector:
       app: mywebapp
       type: front-end 

После создания службы с помощью команды kubectl она выглядит следующим образом

  $ kubectl get services
   NAME                TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
   kubernetes          ClusterIP      10.237.0.1      <none>        443/TCP        23h
   mywebapp-services   LoadBalancer   10.237.12.141   <pending>     80:31102/TCP   6s

Теперь, если я пытаюсь получить доступ к LoadBalancer IP из Gcloud shell, время истекло, я что-то упускаю

 $ curl http://10.237.12.141:80
 curl: (7) Failed to connect to 10.237.12.141 port 80: Connection timed out

1 Ответ

2 голосов
/ 15 апреля 2020

Адрес 10.xxx является частным IPv4-адресом в вашем VP C. Cloud Shell не работает в вашем VP C. Поэтому адрес не доступен. Вы должны использовать Внешний IP.

Для получения дополнительной информации о частных адресах IPv4:

Частные адреса IPv4

Существуют также частные адреса IPv6. VPC Google Cloud не поддерживают IPv6. Некоторые службы Google Cloud, такие как HTTP (S) Load Balancers, поддерживают IPv6, но эти ресурсы не являются частью VPC вашего проекта.

VP C сети поддерживают только одноадресный трафик IPv4 c. Они не поддерживают широковещательный, многоадресный или IPv6 трафик c в сети; Виртуальные машины в сети VP C могут отправлять только адресаты IPv4 и получать трафик c из источников IPv4. Однако можно создать адрес IPv6 для глобального балансировщика нагрузки.

VP C обзор сети - Технические характеристики

...