nginx-ingress
是k8s官方維護的一個Ingress Controller,具體使用,官方有詳細的檔案:https://kubernetes.github.io/ingress-nginx/deploy/
直接按照官方檔案進行安裝,一般都會失敗,本文將幫助你成功安裝他。
官方檔案提供了兩種安裝方式,下面是直接拷貝過來的指令碼
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.5.1/deploy/static/provider/cloud/deploy.yaml
如果不FQ,這兩種方式均會失敗,又或許你個人電腦可以各種方式FQ,但公司的k8s叢集環境可不允許你使用FQ工具。
dockerhub
倉庫先拉取別人上傳的映象,下載官方的YAML Manifest
檔案,修改對應的映象。當然這種不安全。通過上面的方式,雖然麻煩,但是一定可以解決你的問題,但官方的YAML Manifest
預設是以Deployment方式部署nginx-controller
,然後通過Loadbalancer
型別的Service
暴露出去,它將一直處於Pendding狀態,這時需要藉助開源的MetalLB
來直接可用的EXTERNAL-IP,這裡不再繼續折騰了,有興趣的可以按照官方的檔案去解決:https://kubernetes.github.io/ingress-nginx/deploy/baremetal/
在網上找了一些如果以DaemonSet
方式部署nginx-ingress
的文字,有能用的,但是很不官方,也不優雅,基本就是下載YAML Manifest
檔案,進行手動修改,然後kubectl apply -f deploy.yaml
其實是官方推薦的,官方檔案中關於YAML Manifest
方式部署方式下面有段提示:
The YAML manifest in the command above was generated with helm template,
so you will end up with almost the same resources as if you had used Helm to install the controller.
上述命令中的 YAML 清單是使用 helm template 生成的,因此您最終將獲得與使用 Helm 安裝控制器幾乎相同的資源。
因為我的叢集環境中是不能FQ的,直接通過helm
安裝是不行了,一般來說ingress很多是採用DaemonSet
方式部署,官方的helm chatrs
想必可以通過引數控制。
本地安裝helm
:安裝Helm
如果你本地環境可以FQ,則本地新增helm庫
本文為Gui.H原創文章,喜歡請關注公眾號 dotnet之美
helm repo add https://kubernetes.github.io/ingress-nginx
想辦法將這個下載這個charts
[ingress-nginx/charts/ingress-nginx at main · kubernetes/ingress-nginx (github.com)](https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx)
helm template
生成Manifest清單helm template --set controller.kind=DaemonSet --set controller.hostPort.enabled=true --set controller.service.enabled=false --namespace ingress-nginx ingress ingress-nginx/ingress-nginx > ./deploy.yaml
deploy.yaml
清單中的映象kubectl apply -f deploy.yaml
創作不易,如果本文對您有幫助,請動動手點個贊吧。
本文來自部落格園,作者:gui.h,轉載請註明原文連結:https://www.cnblogs.com/springhgui/p/17076095.html