kubernetes 如何配置没有“主机”的nginx入口规则

c7rzv4ha  于 2022-12-26  发布在  Kubernetes
关注(0)|答案(2)|浏览(140)

我已经从官方文档中安装了nginx入口。但是在配置规则时没有提到“主机”。我得到了下面的错误。
错误++++++规格规则[0]。主机:要求值
是否可以在不使用主机的情况下配置它,因为我希望仅使用IP地址访问它
我还找到了下面的部署文件,使用该文件我可以在不使用“主机”的情况下应用规则。2但不确定使用该文件是否安全。3请在此处指导我
库贝特尔应用-f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.44.0/deploy/static/provider/cloud/deploy.yaml

gpnt7bae

gpnt7bae1#

是否要配置入口?入口控制器与入口本身不同。如果要配置入口,则host完全是可选的。如果省略host,则默认情况下所有http流量都通过IP地址定向。有关详细信息https://kubernetes.io/docs/concepts/services-networking/ingress/,请参阅此文档

bxjv4tth

bxjv4tth2#

它可以使用ingress-nginx,因为kubernetes入口documentation非常清楚地表明不需要主机。
因为入口nginx控制器的示例实际上运行在集群中的节点上,所以如果云提供商允许为节点分配静态IP地址,nginx入口默认情况下只会接收静态IP地址。例如,在GKE/GCE上,节点接收静态IP地址,但升级不会保留这些IP地址。
只需将ingress-nginx-controller放置在Type=LoadBalancer服务后面即可获得静态IP地址。
首先创建一个负载平衡器服务,然后等待它获取IP:
$ kubectl创建-f静态IP服务。yaml服务“ingress-nginx-lb”已创建
$ kubectl获取服务输入nginx-lb名称群集IP外部IP端口使用期限输入nginx-lb 10.0.138.113 104.154.109.191 80:31457/TCP、443:32240/TCP 15分钟
然后,将--publish-service标志传递给入口控制器,将其更改为使用服务的静态IP(在下一步中使用的示例yaml中,已经将其设置为“ingress-nginx-lb”)。

$ kubectl create -f ingress-nginx-controller.yaml
    deployment "ingress-nginx-controller" created

上一步中分配的IP现在可用于使用nginx ingress.class注解创建的每个入口。

$ kubectl create -f ingress-nginx.yaml
ingress "ingress-nginx" created

$ kubectl get ing ingress-nginx
NAME            HOSTS     ADDRESS           PORTS     AGE
ingress-nginx   *         104.154.109.191   80, 443   13m

$ curl 104.154.109.191 -kL
CLIENT VALUES:
client_address=10.180.1.25
command=GET
real path=/
query=nil
request_version=1.1
request_uri=http://104.154.109.191:8080/

这在how to use the Ingress-NGINX controller to give an Ingress a static IP address中有清楚的解释。有关详细信息,请参阅此内容
在此Stack link中有一个类似的查询
如果您想在kubernetes入口配置中使用静态IP,您需要使用负载均衡器,这在任何云提供商(如GCP、AWS等)中都可以轻松实现

相关问题