簡體   English   中英

多節點 Virtualbox 驅動程序 Minikube 上的 Ingress Niginx

[英]Ingress Niginx on Multi-Node Virtualbox Driver Minikube

我正在按照本教程在 Minikube 上使用 Ingress-Nginx 設置 Ingress。 但我似乎無法讓它工作。 當我嘗試連接到 minikube minikube ip返回的 VM IP 地址上的端口 80 時,連接被拒絕

我的設置是這樣的:

  • Minikube 版本:v1.25.1
  • VirtualBox 版本:6.1
  • Kubernetes 版本:v1.22.5

ingress-nginx 命名空間具有以下資源:

NAME                                            READY   STATUS    RESTARTS   AGE
pod/ingress-nginx-controller-85f4c5b458-2dhqh   1/1     Running   0          49m

NAME                                         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
service/ingress-nginx-controller             NodePort    10.102.88.109   <none>        80:30551/TCP,443:31918/TCP   20h
service/ingress-nginx-controller-admission   ClusterIP   10.103.134.39   <none>        443/TCP                      20h

NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ingress-nginx-controller   1/1     1            1           20h

NAME                                                  DESIRED   CURRENT   READY   AGE
replicaset.apps/ingress-nginx-controller-85f4c5b458   1         1         1       20h

NAME                                       COMPLETIONS   DURATION   AGE
job.batch/ingress-nginx-admission-create   1/1           6s         20h
job.batch/ingress-nginx-admission-patch    1/1           6s         20h

默認命名空間具有以下資源

NAME                       READY   STATUS    RESTARTS   AGE   IP           NODE           NOMINATED NODE   READINESS GATES
pod/web-79d88c97d6-rvp2r   1/1     Running   0          47m   10.244.1.4   minikube-m02   <none>           <none>

NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE   SELECTOR
service/kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP          20h   <none>
service/web          NodePort    10.104.20.14   <none>        8080:31613/TCP   20h   app=web

NAME                                        CLASS   HOSTS              ADDRESS     PORTS   AGE
ingress.networking.k8s.io/example-ingress   nginx   hello-world.info   localhost   80      20h

Minikube 公開了這些服務:

|---------------|------------------------------------|--------------|-----------------------------|
|   NAMESPACE   |                NAME                | TARGET PORT  |             URL             |
|---------------|------------------------------------|--------------|-----------------------------|
| default       | kubernetes                         | No node port |
| default       | web                                |         8080 | http://192.168.59.106:31613 |
| ingress-nginx | ingress-nginx-controller           | http/80      | http://192.168.59.106:30551 |
|               |                                    | https/443    | http://192.168.59.106:31918 |
| ingress-nginx | ingress-nginx-controller-admission | No node port |
| kube-system   | kube-dns                           | No node port |
| kube-system   | registry                           | No node port |
|---------------|------------------------------------|--------------|-----------------------------|

創建 Ingress部分的第 4 步教程中提到了這一點:

Add the following line to the bottom of the /etc/hosts file on your computer (you will need administrator access):

172.17.0.15 hello-world.info

Note: If you are running Minikube locally, use minikube ip to get the external IP. The IP address displayed within the ingress list will be the internal IP. 

這是一個使用 VirtualBox 的三節點集群。 我嘗試將 Minikube ingress-nginx-controller 服務的 IP(192.168.59.106,這也是 minikube ip 的結果)添加到我的主機文件中,但它不起作用。 據我所知,我不能在主機文件中包含服務的節點端口 30551 來測試它。

非常感謝有關如何使這項工作的一些指導

你是對的。 您不能在/etc/hosts文件中包含該端口。 要到達那里,您需要在瀏覽器或其他一些應用程序中指定完整路徑,如下所示(假設沒有連接問題):

  • hello-world.info:30551

我建議您具體說明您遇到的問題類型。 可能有多個問題,每個問題都有不同的解決方案。

例如,無法訪問服務和收到404消息之間會有區別。


我不確定它是否相關,但是當我通過以下方式創建集群時遇到了連接問題:

  • minikube start --driver="virtualbox"
  • minikube node add
  • minikube node add

但是,當我運行以下命令時,我沒有遇到任何人:

  • minikube start --driver="virtualbox" --nodes=3

假設您想公開您的Nginx Ingress controller在端口80443上可用,而不是在NodePort's可用,您可以這樣做:

apiVersion: v1                                                                                                                                     
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.59.200-192.168.59.210"
  • 將您的服務ingress-nginx-controller更改為LoadBalancer而不是NodePort ( kubectl edit svc -n ingress-nginx ingress-nginx-controller )
  • 檢查服務
    • kubectl get svc -n ingress-nginx ingress-nginx-controller
NAME                       TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)                      AGE
ingress-nginx-controller   LoadBalancer   10.106.63.253   192.168.59.201   80:30092/TCP,443:30915/TCP   23m
  • Ingress controllerEXTERNAL-IP放到/etc/hosts文件中。
  • 創建一個與您輸入的/etc/hosts名稱相匹配的Ingress資源,並具有一些后端。

其他資源:

按照教程進行操作時,我在創建集群后通過運行minikube addons enable ingress啟用了入口插件

這似乎成功了,但是當嘗試連接到minikube ip (這也是 ingress-nginx-controller minikube 服務地址)返回的 IP 地址上的端口 80 時,我得到了一個連接被拒絕。 這可以通過運行來驗證:

nc -zv $(minikube ip) 80

但是,當我使用此命令在初始集群創建時啟用入口時:

minikube start --driver=virtualbox \
--kubernetes-version=v1.22.5 --nodes 3 \
--addons=ingress

然后運行nc -zv $(minikube ip) 80 ,連接被接受。 我不確定這是否是 Minikube 或 VirtualBox 的問題,但在初始集群創建時啟用入口,而不是隨后為我工作

然后,我可以僅使用 minikube 節點的 IP 和 hello-world.info 主機來更新我的主機文件

如果您經常創建和刪除集群,還有一件事可能值得注意,我有時在更新 Mac 上的主機文件時發現舊 IP 被緩存。 運行sudo dscacheutil -flushcache可能對此有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM