首页 > 解决方案 > 无法访问 IBM Cloud 上 Kubernetes 集群的公共 LoadBalancer 或 Ingress 端口

问题描述

默认情况下是否有任何额外的安全设置不允许对 IBM Cloud 上的 Kubernetes 集群进行公共访问?

我使用服务公开了应用程序NodePort,但无法通过 80 端口访问它,甚至我尝试了其他端口。

但它是从 pod 中工作的,例如使用curl命令访问这个公共 LoadBalancer。即使我可以 ping this 的公共 IP 地址,LoadBalancer也会发生这种情况Ingress

Ingress subdomain也已启用。

这是External LoadBalancer我的 Kubernetes 集群中的一个示例:

---
apiVersion: v1
kind: Pod
metadata:
  labels:
    app: hello-world
spec:
  containers:
  - image: us.icr.io/my-space/hello-world
    imagePullPolicy: IfNotPresent
    name: hello-world
    ports:
    - containerPort: 8080
      name: http
      protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: hello-world
  name: hello-world-service
spec:
  ports:
  - nodePort: 31190
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: hello-world
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer: {}

标签: kubernetesibm-cloudibm-cloud-kubernetesiks

解决方案


公共负载均衡器在设计上对 Internet 开放,因此没有什么会阻止您的 LB。但是,如果您在 Internet 和集群之间有防火墙,您可能会在流量尝试进入集群时切断流量。如果您执行“kubectl get svc xxx”,您应该会看到该服务的外部 IP,并且应该可以根据上述规范通过端口 80 访问该 IP。或者您可以使用您的工作节点之一公共 IP 和节点端口并尝试从那里访问它。如果其中任何一个失败,则说明您在某处阻塞了某些东西。

如果您仍然遇到问题,请通过在此处注册https://bxcs-slack-invite.mybluemix.net/进入 slack ,然后在 @john 上给我一个 ping。

我们可以在那里为您提供详细的帮助,然后在我们确定您的问题后回来解决这个帖子。


推荐阅读