先决条件和通用部署命令 注意: 默认配置从所有命名空间中监视Ingress对象。使用标志--watch-namespace将范围限制为特定命名空间。 如果多个Ingress为同一主机定义不同的路径,则ingress-controller将合并定义。 如果正在使用GKE,则需要使用以下命令将用户初始化为集群管理员。 kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole cluster-admin \ --user $(gcloud config get-value account) 所有部署都需要强制执行以下命令。 kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml 裸机部署 不同的云平台部署过程不同,可以参考这里。 使用NodePort暴露Ingress-controller访问端口。 kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/service-nodeport.yaml 验证部署 检查ingress-controller是否已启动,请运行以下命令: kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx --watch 查看已安装的版本 要检查处于运行状态的ingress-controller是哪个版本的,进入这个pod然后执行nginx-ingress-controller version命令。 POD_NAMESPACE=ingress-nginx POD_NAME=$(kubectl get pods -n $POD_NAMESPACE -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{.items[0].metadata.name}') kubectl exec -it $POD_NAME -n $POD_NAMESPACE -- /nginx-ingress-controller --version 使用Helm部署 从charts官方的仓库中使用这个chart,来安装ingress-controller以my-nginx作为实例名字。 helm install stable/nginx-ingress --name my-nginx # 如果kubernetes集群开启了RBAC,执行如下命令 helm install stable/nginx-ingress --name my-nginx --set rbac.create=true # 检查安装的版本 POD_NAME=$(kubectl get pods -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{.items[0].metadata.name}') kubectl exec -it $POD_NAME -- /nginx-ingress-controller --version