我们已经将应用程序部署到了本地部署中在本地VMWare服务器上配置的Kubernetes Cluster上。我创建了一个默认的入口规则,但是,仍然无法从其他计算机访问该服务。我可以使用“ curl”命令在本地访问。
我已经重新安装了Nginx Ingress控制器并配置了默认的Ingress资源,但无法从外部访问
[root@uat-amk8smaster01 ~]# kubectl -n stackstorm get svc dd-stackstorm-st2web
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dd-stackstorm-st2web NodePort 10.101.23.22 <none> 80:32714/TCP 16h
[root@uat-amk8smaster01 ~]#
[root@uat-amk8smaster01 ~]# kubectl -n stackstorm get ingress
NAME HOSTS ADDRESS PORTS AGE
st2-ingress-default * 80 15h
[root@uat-amk8smaster01 ~]#
# cat st2-default-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
labels:
name: st2-ingress-default
name: st2-ingress-default
namespace: stackstorm
spec:
backend:
serviceName: dd-stackstorm-st2web
servicePort: 80
#
当我们尝试使用IP:32714打开网页时,应该会打开该页面。
答案 0 :(得分:0)
我的建议是使用kubectl describe ingress st2-ingress-default
检查入口的状态,看看它是否有事件,通常是活动性较差的探针和就绪性探针导致无法连接。
此外,您可以查看nginx控制器pod日志,并查看您的流量是否在集群内部。
答案 1 :(得分:0)
如果kubernetes在本地运行,则必须实现自己的入口控制器。 为了使Ingress资源正常工作,集群必须运行一个Ingress Controller。 检查此页面: https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/
答案 2 :(得分:0)
如果您希望通过入口路由流量到您的服务,则流量应如下:
入口->入口控制器服务->入口控制器-> dd-stackstorm-st2web服务-> dd-stackstorm-st2web pod
显然,您正在尝试通过 NodePort 公开dd-stackstorm-st2web
服务,并忽略了进入。
我的假设是您没有公开入口控制器服务。
如果您想直接通过NodePort访问服务
curl http://<node-external-ip>:32714
查找节点外部ip
kubectl get nodes -o wide