kubernetes - 无法访问 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: {}
解决方案
公共负载均衡器在设计上对 Internet 开放,因此没有什么会阻止您的 LB。但是,如果您在 Internet 和集群之间有防火墙,您可能会在流量尝试进入集群时切断流量。如果您执行“kubectl get svc xxx”,您应该会看到该服务的外部 IP,并且应该可以根据上述规范通过端口 80 访问该 IP。或者您可以使用您的工作节点之一公共 IP 和节点端口并尝试从那里访问它。如果其中任何一个失败,则说明您在某处阻塞了某些东西。
如果您仍然遇到问题,请通过在此处注册https://bxcs-slack-invite.mybluemix.net/进入 slack ,然后在 @john 上给我一个 ping。
我们可以在那里为您提供详细的帮助,然后在我们确定您的问题后回来解决这个帖子。