我很难将流量路由到k8s API和服务。
首先,我创建了一个带有KOPS的私有集群(k8s.buycheese.com) VPC内的拓扑结构,因此只能使用SSH从堡垒访问主节点和节点。
我在namecheap(buycheese.com)中拥有一个域,并在route53中创建了一个托管区域(k8s.buycheese.com)。
KOPS安装群集后,它向托管区域(如api.k8s.buycheese.com
)添加了两个记录集。
我已经在namecheap中将托管区域的名称空间添加到了我的域中,以便可以访问Kubernetes集群(kubectl)。可以正常工作!
接下来,我安装了一个入口nginx控制器。然后,我创建了2个入口:
然后我使用入口nginx ELB的URL测试了我的nodeJS应用程序,我可以确认它是否有效!所以我知道我的Pod运行正常,ELB正常工作!
但是显然,我希望通过我拥有的域来访问我的应用程序...
所以基本上:
我需要一个新的子域dashboard.buycheese.com
才能进入Kubernetes仪表板。
我需要buycheese.com
和www.buycheese.com
域才能重定向到我的nodeJS应用。
好吧,为此,我在route53中创建了一个名为buycheese.com的新托管区域,并在namecheap的域buycheese.com中添加了4个新的命名空间。
然后,我在同一托管区域中创建了2个别名(A):
dashboard.buycheese.com
与Alias Target:Ingress Nginx的ELB
www.buycheese.com
与Alias Target:进入Nginx的ELB
然后在我的2个入口文件中
# Dashboard
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
name: kubernetes-dashboard-oidc
namespace: kube-system
spec:
rules:
- host: dashboard.buycheese.com
http:
paths:
- path: /
backend:
serviceName: kubernetes-dashboard-oidc
servicePort: 80
# NodeJS App
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
name: app
namespace:default
spec:
rules:
- host: buycheese.com
http:
paths:
- path: /
backend:
serviceName: app-service
servicePort: 3000
总结一下,我有2个托管区域
1)k8s.buycheese.com
2)buycheese.com
托管区域buycheese.com中的2个别名:
1)www.buycheese.com
2)dashboard.buycheese.com
2次入侵以公开仪表板和我的应用
该配置根本不起作用!无法访问以下网址!
dashboard.buycheese.com
www.buycheese.com
buycheese.com
仅ELB的URL有效!
所以首先我想知道我的设置是否正确(显然不是,但是为什么?)
使所有这些URL公开我的服务和应用程序的正确方法是什么?
感谢您的帮助!
答案 0 :(得分:1)
我认为唯一可能发生的事情是Alias Target:
没有转发到ELB。
您可以尝试使用this post。您始终可以从命令行使用dig
进行测试:
$ dig buycheese.com
$ dig www.buycheese.com
$ dig dashboard.buycheese.com
答案 1 :(得分:0)
我在Route 53中使用Type = A创建了新记录集,并为我的ELB DNS名称创建了别名,最初也存在相同的问题,但是在等待一段时间后它开始工作,这可能是denixtry告知的DNS传播问题