我正在 AKS 集群中使用以下命令安装入口控制器
helm upgrade --install nginx ingress-nginx/ingress-nginx \
--version 4.7.1 \
--namespace $NAMESPACE \
--namespace $NAMESPACE \
--create-namespace \
--set controller.replicaCount=2 \
--set controller.nodeSelector."kubernetes\.io/os"=linux \
--set controller.admissionWebhooks.patch.nodeSelector."kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."kubernetes\.io/os"=linux \
--set controller.ingressClassResource.name=$NAMESPACE \
--set controller.ingressClassResource.name=$NAMESPACE \
--set controller.ingressClass=$NAMESPACE \
--set controller.ingressClassResource.controllerValue="nginx.com/nginx" \
--set controller.ingressClassResource.enabled=true \
--set controller.ingressClassByName=true \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \
-f nginx.yaml
安装成功,但我无法通过负载均衡器 IP 访问 nginx。
调试后,我们发现运行状况探针设置为 C:/Program Files/Git/healthz 而不是 Azure 负载均衡器中的 /healthz。
如果我们将 maullay 更改为 /healthz,它就可以工作。
请帮助修复为什么设置 C:/Program Files/Git/healthz helm 命令中有任何语法错误?
您遇到的运行状况探测路径被错误设置为
C:/Program Files/Git/healthz
而不是 /healthz
的问题与您运行 helm
命令的环境有关。当您在 Windows 上使用 Git Bash 时,它会尝试将 POSIX 路径名转换为 Windows 路径名,这就是路径以 C:/Program Files/Git
为前缀的原因。
要解决此问题,您需要阻止 Git Bash 尝试将类 Unix 路径转换为 Windows 路径。如前所述,您可以通过在 Helm 命令中的路径开头使用双正斜杠
//
来实现此目的。
以下是纠正运行状况探测路径的方法
在 Windows 上打开 Git Bash。
为您的操作设置命名空间(如果尚未设置):
export NAMESPACE=your-namespace
使用运行状况探测路径的更正注释运行
helm
命令
helm upgrade --install nginx ingress-nginx/ingress-nginx \
--version 4.7.1 \
--namespace $NAMESPACE \
--create-namespace \
--set controller.replicaCount=2 \
--set controller.nodeSelector."kubernetes\.io/os"=linux \
--set controller.admissionWebhooks.patch.nodeSelector."kubernetes\.io/os"=linux \
--set defaultBackend.nodeSelector."kubernetes\.io/os"=linux \
--set controller.ingressClassResource.name=$NAMESPACE \
--set controller.ingressClassResource.controllerValue="nginx.com/nginx" \
--set controller.ingressClassResource.enabled=true \
--set controller.ingressClassByName=true \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=//healthz \
-f nginx.yaml
运行更正后的
helm
命令后,检查服务以确保注释已正确设置
输出应显示
service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path: /healthz
。
确认后,再次尝试通过 LoadBalancer IP 访问您的 NGINX 服务。通过使用双斜杠 //healthz
,Git Bash 不会修改路径,并且会在 Azure 负载均衡器配置中正确设置。
参考资料: