社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

如何在Kubernetes中配置Ingress nginx?

user2831852 • 7 年前 • 1179 次点击  

我正在测试Kubernetes群集版本1.11,需要使POD由主服务器IP和POD端口(在本例中是通过端口80的nginx映像)进行外部访问,我正在尝试启用和配置Ingress nginx以获得此访问。

为了运行测试,我使用以下命令将Ingress nginx添加到集群中:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml

然后我尝试创建一个入口,如本例中所述: https://koudingspawn.de/install-kubernetes-ingress/ -我只是没有做数字海洋的负载平衡部分。

碰巧它不起作用,我无法访问配置的IP或主机,因此,我怀疑是否在集群中正确地添加了入口nginx,如果示例出现故障,或者是否必须遵循另一条路径?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39003
文章 [ 2 ]  |  最新文章 7 年前
Rico
Reply   •   1 楼
Rico    7 年前

我不确定您看到了什么错误,发布它们会很有帮助,但从这开始是正确的:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml

如中所述 main documentation page 用于nginx入口控制器。如果您使用的是数字海洋,您只需按照 NodePort/Bare-metal instructions 因为目前还没有对数字海洋负载均衡器的支持。

之后,您要检查您的nginx入口控制器是否正在运行:

$ kubectl -n ingress-nginx get pods
NAME                                        READY     STATUS    RESTARTS   AGE
default-http-backend-xxxxxxxxxx-xxxxx       1/1       Running   0          1h
nginx-ingress-controller-xxxxxxxxxx-xxxxx   1/1       Running   0          1h

您还可以检查日志:

$ kubectl -n ingress-nginx nginx-ingress-controller-xxxxxxxxxx-xxxxx

然后您可以创建一个 Ingress 和A Service 那是为入口服务的。

然后,您可以使用 kubernetes.io/ingress.class: "nginx" 注释。

Radek 'Goblin' Pieczonka
Reply   •   2 楼
Radek 'Goblin' Pieczonka    7 年前

这两种规范方法都不能满足您的需求。

典型的解决方案包括使用LoadBalancer服务类型或节点报告,并手动配置网络LB以指向节点报告服务的端口。

我将在这里做3个假设:

  • 您没有可用的LB服务,因此要将HTTP连接到主服务器的IP。
  • 您的主主机在6443之类的端口上承载kube api,或者除了80/443之外,您希望用于Web通信的任何其他端口。
  • 你说的是单主人,把它用在交通上。这是一个明显的配偶,所以我想你不会那么在乎哈。

有鉴于此,您需要调整入口部署以满足您的需要。

nginx入口,在它的网络名称空间中,监听标准端口(80/443)。如果,而不是用 Service 你和他一起跑 hostNetwork: true ,您将看到入口在80/443上直接收听。要确定它正在您的主服务器上运行,您需要允许它在主服务器上调度(可能通过公差),并确保它在主服务器上调度,而不是在其他节点上调度(nodeselector/nodeaffinity或守护进程在集群中的每个节点上运行它)。

另一个解决方案可以是按照规范的方式,让入口监听一些节点报告,然后让另一个软件作为负载均衡器,通过kube部署到master。( hostNetwork )或者通过完全自主的机制(即作为SystemD服务单元),监听80/443和TCP将流量转发到节点报告。