0

我正在学习 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 IPGcloud shell它访问它超时,我错过了什么

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

1 回答 1

2

地址 10.xxx 是您的 VPC 中的私有 IPv4 地址。Cloud Shell 未在您的 VPC 中运行。因此无法访问该地址。您必须使用外部 IP。

有关私有 IPv4 地址的更多信息:

私有 IPv4 地址

还有私有 IPv6 地址。Google Cloud VPC 不支持 IPv6。某些 Google Cloud 服务(例如 HTTP(S) 负载均衡器)确实支持 IPv6,但这些资源不属于您项目的 VPC。

VPC 网络仅支持 IPv4 单播流量。它们不支持网络内的广播、多播或 IPv6 流量;VPC 网络中的虚拟机只能发送到 IPv4 目标,并且只能接收来自 IPv4 源的流量。但是,可以为全局负载均衡器创建 IPv6 地址。

VPC 网络概览 - 规格

于 2020-04-15T19:01:00.647 回答