Kubernetes 未更新正确的运行状况探测规则

问题描述 投票:0回答:1

我正在 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 命令中有任何语法错误?

azure kubernetes azure-aks
1个回答
0
投票

您遇到的运行状况探测路径被错误设置为

C:/Program Files/Git/healthz
而不是
/healthz
的问题与您运行
helm
命令的环境有关。当您在 Windows 上使用 Git Bash 时,它会尝试将 POSIX 路径名转换为 Windows 路径名,这就是路径以
C:/Program Files/Git
为前缀的原因。

要解决此问题,您需要阻止 Git Bash 尝试将类 Unix 路径转换为 Windows 路径。如前所述,您可以通过在 Helm 命令中的路径开头使用双正斜杠

//
来实现此目的。

以下是纠正运行状况探测路径的方法

  1. 在 Windows 上打开 Git Bash。

  2. 为您的操作设置命名空间(如果尚未设置):

    export NAMESPACE=your-namespace

enter image description here

使用运行状况探测路径的更正注释运行

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
命令后,检查服务以确保注释已正确设置

enter image description here

输出应显示

service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path: /healthz
。 确认后,再次尝试通过 LoadBalancer IP 访问您的 NGINX 服务。通过使用双斜杠
//healthz
,Git Bash 不会修改路径,并且会在 Azure 负载均衡器配置中正确设置。

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.