Azure上的Kubernetes-活动性和就绪性探针失败-活动性探针因连接失败:连接被拒绝

如何解决Azure上的Kubernetes-活动性和就绪性探针失败-活动性探针因连接失败:连接被拒绝

我是Azure部署,kubernetes和HA实施的新手。当我在应用程序部署中实施运行状况探针时,运行状况探针将会失败,并且当我尝试通过URL访问应用程序时,最终会遇到503(内部服务器错误)或502(错误网关)错误。删除健康状况探针后,我可以使用其URL成功访问该应用程序。

在实施运行状况探测器时,我使用以下yaml部署配置,该配置由Azure devops管道使用。该应用需要不到5分钟的时间才能使用,因此我将运行状况探测器的initialDelaySeconds设置为300s

apiVersion: apps/v1
kind: Deployment
metadata:
   name: myApp
spec:
   ... 
   template:
     metadata:
       labels:
         app: myApp
     spec:
        ...
        containers:
          - name: myApp
            ...
            ports:
              - containerPort: 5000          
            ...
            readinessProbe:
              tcpSocket:
                  port: 5000
              initialDelaySeconds: 300
              periodSeconds: 5
              successThreshold: 1
              failureThreshold: 3
            livenessProbe:
               tcpSocket:
                  port: 5000
               periodSeconds: 30 
               initialDelaySeconds: 300
               successThreshold: 1
               failureThreshold: 3

...

执行部署并描述Pod时,在输出底部的“事件”下看到以下内容:

  Type     Reason     Age                   From                             Message
  ----     ------     ----                  ----                             -------
  Warning  Unhealthy  2m1s (x288 over 86m)  kubelet,aks-vm-id-appears-here  Readiness probe failed: dial tcp 10.123.1.23:5000: connect: connection refused

(这令人困惑,因为它指出年龄为2m1s-但initialDelaySeconds大于此值-因此我不确定为什么它将其报告为年龄)

就绪探测器随后因相同的错误而失败。该IP地址与我的广告连播的IP地址匹配,我在广告连播说明中的Containers下看到了该地址:

Containers:
....
Port:           5000/TCP

活动性和就绪性探针的失败导致吊舱不断终止并重新启动。

该应用具有默认的index.html页面,因此,我相信如果健康状况探针能够连接,它将收到200响应。

由于运行状况探测失败,因此未将Pod IP分配给端点对象,因此也没有针对该服务分配

如果我从部署中注释掉readinessProbelivenessProbe,则当我通过浏览器使用URL时,应用程序将成功运行,并且pod IP被成功分配为该服务可以使用的端点与交流。端点地址的格式为10.123.1.23:5000-即端口5000似乎是Pod的正确端口。

我不明白为什么健康探测器无法连接?在我看来,应该尝试在看起来像10.123.1.23:5000的IP上进行连接是正确的。

打开该端口可能要花费300秒以上的时间,但是我不知道有什么方法可以检查该端口。如果我在Pod上输入bash会话,则watch不可用(我读到watch ss -lnt可用于检查端口的可用性)。

以下答案建议增加initialDelaySeconds,但我已经尝试过-https://stackoverflow.com/a/51932875/1549918

我看到了这个问题-但是资源利用率(例如CPU / RAM)不是问题 Liveness and readiness probe connection refused

更新

如果我从吊舱的副本卷曲到https://10.123.1.23:5000,则会收到类似的错误(Failed to connect to ...the IP.. port 5000: Connection refused)。为什么会失败?我读到的一些东西暗示,尝试从另一个Pod进行此连接可能也表明健康探针的可达性。

解决方法

如果不确定您的应用程序是否正确启动,请用已知良好的图像替换它。例如httpd

将端口更改为80,将图像更改为httpd。

您可能还希望增加运行状况检查的超时,因为它默认为timeoutSeconds = 5的1秒

此外,如果您的图像是Web应用程序,则最好使用a http probe

,

你的陈述

应用程序有一个默认的 index.html 页面,所以我相信如果它能够连接,健康探测器应该收到 200 响应。

不正确。

您正在执行 tcpSocket 检查。尝试切换到:

  livenessProbe:
    failureThreshold: 3
    httpGet:
      path: /
      port: 5000
      scheme: HTTP

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res