Ingress仅可用于Minikube吗?在Ubuntu安装中不起作用

时间:2019-04-28 15:30:12

标签: kubernetes kubernetes-ingress nginx-ingress

我在minikube中成功测试了Ingress,一点问题都没有。 然后,我将应用程序部署到ubuntu中,如果我使用服务NodePort,它也可以很好地工作。之后,我考虑将Ingress用作路由器流量的负载平衡器,以使外部url不再是难看的长端口。 但不幸的是,我没有成功,总是失败。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: dv
    annotations:
        ingress.kubernetes.io/rewrite-target: /
spec:
    rules:
    - http:
          paths:
          - path: /test
            backend:
                serviceName: ngsc
                servicePort: 3000

kubectl get ing
NAME   HOSTS   ADDRESS   PORTS   AGE
dv     *                 80      12s
root@kmaster:/home/ubuntu/datavisor# kubectl describe ing dv
Name:             dv
Namespace:        default
Address:          
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host  Path  Backends
  ----  ----  --------
  *     
        /   ngsc:3000 (192.168.1.14:3000,192.168.1.17:3000,192.168.1.18:3000)
Annotations:
  ingress.kubernetes.io/rewrite-target:  /
Events:                                  <none>

然后,当我尝试访问时,出现以下错误:

curl http://cluster-ip
curl: (7) Failed to connect to <cluster-ip> port 80: Connection refused

我真正希望的是让外部暴露的网址是http://ipaddress,而不是http://ipaddress:30080

我知道我可以轻松地从kubernete中使用nginx来满足此要求,但这并不理想,我希望kubernete能够处理它,以便即使服务端口已更改,一切仍然正常。

您可以检查上面的输出并告诉我这是什么错误吗?我检查了很多文档,每个地方似乎都只专注于minikube,与真正的集群部署无关。我需要安装任何东西才能使入口正常工作吗?当我使用kubectl获得所有--all-namespaces时,我根本没有看到安装的入口控制器。如有需要,我该如何安装?

感谢您的建议

1 个答案:

答案 0 :(得分:2)

嗯,实际上Kubernetes并没有提供任何现成的Ingress控制器。您必须安装Nginx Ingress或Traefik Ingress或其他任何工具。入口控制器必须在集群中的某个位置运行,这是必须的。实际上,入口控制器是代理到您的应用程序的流量的实际代理。

我想您应该知道,引擎盖下的minikube也使用nginx-ingress-controller(请参阅https://github.com/kubernetes/minikube/tree/master/deploy/addons/ingress)。

在云环境中,入口控制器在云负载平衡器后面运行,该负载平衡器在群集节点之间执行负载平衡。

如果运行本地群集-通常,您的入口控制器将作为NodePort服务运行,并且您可以创建指向节点IP地址的DNS记录。也可以在专用节点上运行入口控制器并使用library(dplyr) library(lubridate) df %>% group_by(id) %>% summarise(date = list(seq(floor_date(min(date_start),unit = "month") - months(1), floor_date(max(date_end), unit = "month"), by = "month"))) %>% tidyr::unnest() # id date # <fct> <date> # 1 a 2012-02-01 # 2 a 2012-03-01 # 3 a 2012-04-01 # 4 a 2012-05-01 # 5 a 2012-06-01 # 6 a 2012-07-01 # 7 a 2012-08-01 # 8 b 2015-05-01 # 9 b 2015-06-01 #10 b 2015-07-01 #11 b 2015-08-01 #12 c 2017-09-01 #13 c 2017-10-01 #14 c 2017-11-01 #15 c 2017-12-01 #16 c 2018-01-01 #17 c 2018-02-01 。这将允许使用标准的80/443端口。因此,这里有很多选择。