我在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时,我根本没有看到安装的入口控制器。如有需要,我该如何安装?
感谢您的建议
答案 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端口。因此,这里有很多选择。