如何让Kubernetes Service使用保留的IP地址在GKE上公开我的部署?

nvbavucw  于 2023-06-28  发布在  Kubernetes
关注(0)|答案(1)|浏览(108)

我在Google Cloud Kubernetes引擎上有一个部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: graph-service-2-deployment
  labels:
    app: graph-service-2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: graph-service-2
      tier: web
  template:
    metadata:
      labels:
        app: graph-service-2
        tier: web
    spec:
      containers:
        - name: graph-service-container
          image: gcr.io/myimage:latest
          ports:
            - containerPort: 8080
          resources:
            limits:
              cpu: 1000m
              memory: 2Gi
              ephemeral-storage: 4Gi
            requests:
              cpu: 500m
              memory: 512Mi
              ephemeral-storage: 1Gi

我正在尝试使用Service公开此部署:

apiVersion: v1
kind: Service
metadata:
  name: graph-service-2-service
  labels:
    app: graph-service-2
spec:
  type: LoadBalancer
  loadBalancerIP: 35.212.191.164
  selector:
    app: graph-service-2
    tier: web
  ports:
    - port: 80
      targetPort: 8080

我的应用程序在8080上侦听。
我如何保留IP:
gcloud compute addresses create graph-service-2-ip --region us-west1 --network-tier=STANDARD
gcloud compute addresses describe graph-service-2-ip --region us-west1
我应用配置
kubectl apply -f service
kubectl apply -f deployment
部署完成了。
我可以在Google Cloud VPC IP地址UI中看到我的IP地址,有趣的是它说它没有用途:

期望:从我的Web浏览器转到保留的外部IP,并通过http与我的应用程序通信。
实际情况:我从Web浏览器转到保留的IP地址,遇到以下错误页面:页面没有找到!
我也在这里遵循谷歌的指南,并尝试了他们建议的许多变化。

如果我使用相同的端口转发规则通过ui创建并公开服务,它就可以正常工作,我可以访问我的应用程序。

请让我知道为什么我不能使用我的保留IP访问我的应用程序。如果你也有任何建议,我如何可以改善我的设置在其他方面,我会很高兴听到他们。

7uzetpgm

7uzetpgm1#

您保留的静态IP似乎使用标准网络层。
您需要将以下注解添加到服务规范中:

cloud.google.com/network-tier: Standard

就像

apiVersion: v1
kind: Service
metadata:
  name: graph-service-2-service
  labels:
    app: graph-service-2
  annotations:
    cloud.google.com/network-tier: Standard
...

注意:您可以找到所有可能的参数here

相关问题