我在始终运行的服务器上运行的虚拟机上构建了自己的1个主机kubernetes集群(1个主机,1个节点,许多命名空间,许多pod和服务)。
在集群上运行的应用程序运行正常(基本上是NodeJS后端和HTML前端)。 到目前为止,我有一个NodePort服务,该服务公开了端口30000:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
traefik-ingress-service NodePort 10.109.211.16 <none> 443:30000/TCP 147d
因此,现在我可以通过在浏览器地址栏中键入https://<server-alias>:30000
来访问Web界面。
但是我想通过输入https://<server-alias>
来访问它而不提供端口。
我知道,这可以使用kubectl port-forwarding命令完成:
kubectl -n kube-system port-forward --address 0.0.0.0 svc/traefik-ingress-service 443:443
这有效。但这似乎不是一件很专业的事情。
端口转发似乎也时常断开连接。有时,它会引发错误并退出,但会使进程保持打开状态,从而使端口保持打开状态-必须手动终止进程。
那么,有没有办法专业地访问我的应用程序?集群提供程序(AWS,GCP ...)如何做到这一点?
谢谢!
答案 0 :(得分:1)
使用Ingress Nginx,您可以使用名称服务器访问您的网站:
安装完成后,您将拥有一个新的吊舱
NAME READY STATUS
nginx-ingress-xxxxx 1/1 Running
还有一项新服务
NAME TYPE CLUSTER-IP EXTERNAL-IP
nginx-ingress LoadBalancer 10.109.x.y a.b.c.d
第2步:为您的应用程序创建新的部署,但请确保您为nginx ingress svc / pod和您的应用程序使用相同的名称空间,并将svc类型设置为< strong> ClusterIP
第3步:创建Kubernetes入口对象
现在您必须创建入口对象
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
namespace: **Same Name Space**
spec:
rules:
- host: your DNS <server-alias>
http:
paths:
- backend:
serviceName: svc Name
servicePort: svc Port
现在您可以使用。
要免费创建DNS,可以使用freenom或使用/ etc / hosts 用:
更新server-alias a.b.c.d
答案 1 :(得分:0)
由于您的Traefik入口服务的类型为NodePort
,因此您可以访问提供的端口,该端口的值介于30000-32000之间。
您还可以将其配置为LoadBalancer
类型,并与基于云的负载均衡器连接。
参考:https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
这是一个非常相关的问题:Should I use NodePort in my Traefik deployment on Kubernetes?