Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Networking GKE负载平衡器连接被拒绝_Networking_Kubernetes_Google Cloud Platform_Load Balancing_Google Kubernetes Engine - Fatal编程技术网

Networking GKE负载平衡器连接被拒绝

Networking GKE负载平衡器连接被拒绝,networking,kubernetes,google-cloud-platform,load-balancing,google-kubernetes-engine,Networking,Kubernetes,Google Cloud Platform,Load Balancing,Google Kubernetes Engine,我正在尝试在GKE上设置我的应用程序,并使用内部负载平衡器进行公共访问。我能够部署集群/负载平衡器服务,没有任何问题,但当我尝试访问负载平衡器的外部ip地址时,我的连接被拒绝,我不确定是什么问题/如何调试 以下是我所做的步骤: 我通过kubectl apply-f file.yaml应用了我的部署yaml文件,然后,我使用kubectl apply-f service.yaml应用了我的负载平衡器服务yaml文件。部署完这两个之后,我确实kubectl获得了服务,从负载平衡器获取外部IP地址 这

我正在尝试在GKE上设置我的应用程序,并使用内部负载平衡器进行公共访问。我能够部署集群/负载平衡器服务,没有任何问题,但当我尝试访问负载平衡器的外部ip地址时,我的连接被拒绝,我不确定是什么问题/如何调试

以下是我所做的步骤:

我通过
kubectl apply-f file.yaml
应用了我的部署
yaml
文件,然后,我使用
kubectl apply-f service.yaml
应用了我的负载平衡器服务
yaml
文件。部署完这两个之后,我确实
kubectl获得了服务
,从负载平衡器获取外部IP地址

这是我的
deployment.yaml
文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app-api
          image: gcr.io/...
          ports:
            - containerPort: 8000
          resources:
            requests:
              memory: "250M"
              cpu: "250m"
            limits:
              memory: "1G"
              cpu: "500m"
        - name: my-app
          image: gcr.io/...
          ports:
            - containerPort: 3000
          resources:
            requests:
              memory: "250M"
              cpu: "250m"
            limits:
              memory: "1G"
              cpu: "500m"
apiVersion: v1
kind: Service
metadata:
  name: my-app-ilb
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
  labels:
    app: my-app-ilb
spec:
  type: LoadBalancer
  selector:
    app: my-app
  ports:
  - port: 3000
    targetPort: 3000
    protocol: TCP

这是我的
service.yaml
文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app-api
          image: gcr.io/...
          ports:
            - containerPort: 8000
          resources:
            requests:
              memory: "250M"
              cpu: "250m"
            limits:
              memory: "1G"
              cpu: "500m"
        - name: my-app
          image: gcr.io/...
          ports:
            - containerPort: 3000
          resources:
            requests:
              memory: "250M"
              cpu: "250m"
            limits:
              memory: "1G"
              cpu: "500m"
apiVersion: v1
kind: Service
metadata:
  name: my-app-ilb
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
  labels:
    app: my-app-ilb
spec:
  type: LoadBalancer
  selector:
    app: my-app
  ports:
  - port: 3000
    targetPort: 3000
    protocol: TCP

我的部署文件有两个容器;后端api和前端。我想做的是,我应该能够继续
[外部ip地址]:3000
并查看我的web应用程序

我希望这是足够的信息;如果我还缺少/可以补充什么,请告诉我


谢谢大家!

您需要通过创建防火墙规则来允许流量流入集群

gcloud compute firewall-rules create my-rule --allow=tcp:3000

删除此批注:

  annotations:
    cloud.google.com/load-balancer-type: "Internal"

您需要外部负载平衡器。

您需要通过创建防火墙规则来允许流量流入集群

gcloud compute firewall-rules create my-rule --allow=tcp:3000

删除此批注:

  annotations:
    cloud.google.com/load-balancer-type: "Internal"

您需要外部负载平衡器。

哪些容器是您的web应用?我的web应用是
My app
,使用端口
3000
。哪些容器是您的web应用?我的web应用是
My app
,使用端口
3000
。我刚刚检查了防火墙规则,似乎在我创建服务时GKE已经创建了它。我看到一个用于我的容器,但仍然不起作用。GCE是否为负载平衡器分配了外部IP地址?您可以检查负载平衡器的状态吗?配置负载平衡器需要时间(5-10分钟)。您的负载平衡器不应该是外部的吗?我相信GKE会为负载平衡器分配外部IP地址。部署
service.yaml
文件并等待大约5-10分钟后,出现了外部ip地址。我基本上遵循了本教程的内容:您的教程说:内部TCP/UDP负载平衡使您的集群的服务可供使用相同VPC网络且位于相同GCP区域的集群以外的应用程序访问。换句话说,这不是面向公众的负载平衡器,这是您将在VPC内部使用的内部负载平衡器。啊。。。我从没听说过,这可能就是原因。可能需要找到一种配置外部IP地址的方法。谢谢你抓住了!我刚刚检查了防火墙规则,似乎在我创建服务时GKE已经创建了它。我看到一个用于我的容器,但仍然不起作用。GCE是否为负载平衡器分配了外部IP地址?您可以检查负载平衡器的状态吗?配置负载平衡器需要时间(5-10分钟)。您的负载平衡器不应该是外部的吗?我相信GKE会为负载平衡器分配外部IP地址。部署
service.yaml
文件并等待大约5-10分钟后,出现了外部ip地址。我基本上遵循了本教程的内容:您的教程说:内部TCP/UDP负载平衡使您的集群的服务可供使用相同VPC网络且位于相同GCP区域的集群以外的应用程序访问。换句话说,这不是面向公众的负载平衡器,这是您将在VPC内部使用的内部负载平衡器。啊。。。我从没听说过,这可能就是原因。可能需要找到一种配置外部IP地址的方法。谢谢你抓住了!