服务无法从VMWare服务器从外部访问

时间:2019-07-16 05:09:58

标签: kubernetes kubernetes-ingress

我们已经将应用程序部署到了本地部署中在本地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打开网页时,应该会打开该页面。

3 个答案:

答案 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