[英]How to configure ingress-nginx in Kubernetes?
我正在測試 Kubernetes 集群 1.11 版,需要使主服務器 IP 和 POD 端口(在本例中為通過端口 80 的 nginx 映像)從外部訪問 POD,我正在嘗試啟用和配置 ingress-nginx獲得此訪問權限。
為了運行測試,我使用以下命令將 ingress-nginx 添加到集群中:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
然后我嘗試按照本示例中的描述創建一個入口: https : //koudingspawn.de/install-kubernetes-ingress/ - 我只是沒有做 Digital Ocean 的 LoadBalancer 部分。
碰巧它不起作用,我無法訪問配置的 IP 或主機,因此,我懷疑我是否在集群中正確添加了 ingress-nginx,如果示例失敗或者我有走另一條路?
兩種規范方法都不會給你你想要的東西。
典型的解決方案包括使用 LoadBalancer 服務類型或 NodePort 並手動配置您的網絡 LB 以指向 NodePort 服務的端口。
我將在這里做出 3 個假設:
考慮到這一點,您需要調整您的入口部署以滿足您的需求。
Nginx 入口在其網絡命名空間內偵聽標准端口 (80/443)。 如果不是使用Service
公開它,而是使用hostNetwork: true
運行hostNetwork: true
,您將看到直接在 80/443 上偵聽的入口。 為了確定它在你的主節點上運行,你需要允許它在主節點上調度(可能通過容忍)並確保它被調度在主節點上而不是其他節點(nodeSelector/NodeAffinity 或 DaemonSet 在 ~每個節點上運行它在集群中)
另一種解決方案可以是實際采用規范方式並讓入口監聽某些節點端口,然后讓另一塊軟件充當負載均衡器,通過 kube( hostNetwork
)或完全自主的機制(即作為 systemd服務單元),它將偵聽 80/443 並將流量轉發到節點端口。
我不確定您看到了什么錯誤,發布它們會有所幫助,但從這里開始是正確的:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
如 nginx 入口控制器的主文檔頁面中所述。 如果您使用的是 Digital Ocean,您只需按照NodePort/Bare-metal 說明進行操作,因為目前尚不支持 Digital Ocean 負載均衡器。
之后,您要檢查您的 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和一個服務於該 Ingress 的服務。
然后,您可以使用kubernetes.io/ingress.class: "nginx"
注釋創建使用該 Ingress 的任何部署和服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.