我的Kubernetes集群正在Vmware PKS中运行。
我有Ingress资源,spec.rules.host:test.domain.com用于后端服务"测试服务"。我知道,通过在DNS服务器中添加一个条目,当从集群外部(外部(访问时,会将流量路由到我的集群。但是,如果服务器/云中没有DNS条目,我需要通过向/etc/hosts或类似内容添加条目来本地测试Ingress配置。
我在一个baremetal教程中发现,将HA代理IP添加到/etc/hosts文件会将流量重定向到kubernetes集群。就这样,将"ip_of_k8_clustertest.domain.com"添加到/etc/hosts中,以尝试访问,如"curl"http://test.domain.com/"但无法访问URL。
如何在没有主机的实际DNS条目的情况下验证Ingress资源中的主机名(内部(。我想确保我的Ingress资源完美工作,然后我可以请求我的公司管理员在DNS中添加名称。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
name: app-ingress
spec:
rules:
- host: test.domain.com
http:
paths:
- backend:
serviceName: test-service
servicePort: 80
path: /
必须添加到/etc/hosts
的IP不是Kubernetes集群的IP,它必须是入口服务的外部IP。
入口服务的port
和targetPort
也必须正确(在您的情况下,port
到80
,targetPort
到您的入口服务侦听的那个(。
将curl
与--resolve
标志一起使用,例如;
host=test.domain.com
adr=<your-external-or-loadbalancer-ip-for-the-nginx-service>
curl -D - --resolv $host:80:$adr http://$host/
或者使用https;
curl -D - --resolv $host:443:$adr --insecure https://$host/