【问题标题】:GCP Couldn't reach Kubernetes External Load Balancer IP from outsideGCP 无法从外部访问 Kubernetes 外部负载均衡器 IP
【发布时间】:2023-03-16 04:35:01
【问题描述】:

我在 GCP 云中创建了一个集群,其中包含一个简单的 k8s YAML 文件。

apiVersion: v1
kind: Service
metadata:
  name: lb-svc
  labels:
    app: lb-demo
spec:
  type: LoadBalancer
  ports:
  - port: 8080
  selector:
    app: np-demo

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: np-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: np-demo
  template:
    metadata:
      labels:
        app: np-demo
    spec:
      containers:
      - name: np-pod
        image: nigelpoulton/k8s-deep-dive:0.1
        imagePullPolicy: Always
        ports:
        - containerPort: 8080

现在;此 YAML 配置有一个 LoadBalancer 服务,该服务作为回报向公众公开一个外部 IP 地址。 因此我们可以使用以下命令查看外部 IP 地址:

kubectl get svc

问题是,我可以在云外壳中使用 curl 轻松访问负载均衡器,但在尝试从外部访问它时无法访问它(示例浏览器)。

试过了:

curl external-ip:8080

有什么帮助吗?

【问题讨论】:

  • 您是否将该 ip 分配给您的服务?
  • 请在您的服务中提及 targetPort: 8080。

标签: kubernetes google-cloud-platform kubectl


【解决方案1】:

您的服务 ip 只能被本地 VPC 访问,如果您需要公开服务或入口您需要保留一个静态 ip,请阅读此处以保留一个静态 ip https://cloud.google.com/compute/docs/ip-addresses/reserve-static-external-ip-address

要将静态 ip 分配给服务,您需要在服务配置中设置 loadBalancerIP

apiVersion: v1
kind: Service
metadata:
  name: lb-svc
  labels:
    app: lb-demo
spec:
  type: LoadBalancer
  loadBalancerIP: <your reserved ip>
  ports:
  - port: 8080
  selector:
    app: np-demo

将您的 ip 分配给入口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: <name of reserved static ip>
  labels:
    app: my-app
spec:
  backend:
    serviceName: lb-svc
    servicePort: 8080

阅读更多here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-02
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2020-10-07
    相关资源
    最近更新 更多