当前位置: 首页 > news >正文

K8S集群1.24使用docker作为容器运行时出现就绪探针间歇性异常

文章目录

  • 1. 环境介绍
  • 2. 异常信息
  • 3. 分析问题
    • 3.1 kubernetes 健康检查
      • 3.1.1 存活探针
      • 3.1.2 就绪探针
      • 3.1.3 启动探针
    • 3.2 检测方法
  • 4. 解决办法


1. 环境介绍

组件版本
kubernetes1.24.2
docker18.03.1-ce
cri-docker0.2.6

2. 异常信息

  最近监测到 kubernetes 集群上 calico-node Pod 运行 2 天后就挂了,重启 calico-node 所在的云主机节点后,服务恢复正常,但是过 2 天后又挂了。查看 calico-node 的事件信息,错误提示如下所示:

(combined from similar events): Readiness probe errored: rpc error: code = Unknown 
desc = failed to exec in container: failed to create exec "d926d9226559a6673c1dbb904262c...398387ad3b04420": 
cannot exec in a stopped state: unknown

  kubernetes 提示 calico-node 就绪检测失败。

3. 分析问题

3.1 kubernetes 健康检查

  Kubernetes 有三种常见的健康检查探针,分别是:

  • Liveness:存活探针
  • Readiness:就绪探针
  • Startup:启动探针,1.18版本后引入新功能

3.1.1 存活探针

  kubelet 使用存活探针来确定什么时候要重启容器。 例如,存活探针可以探测到应用死锁(应用程序在运行,但是无法继续执行后面的步骤)情况。 重启这种状态下的容器有助于提高应用的可用性,即使其中存在缺陷。

3.1.2 就绪探针

  kubelet 使用就绪探针可以知道容器何时准备好接受请求流量,当一个 Pod 内的所有容器都就绪时,才能认为该 Pod 就绪。 这种信号的一个用途就是控制哪个 Pod 作为 Service 的后端。 若 Pod 尚未就绪,会被从 Service 的负载均衡器中剔除。

3.1.3 启动探针

  kubelet 使用启动探针来了解应用容器何时启动。 如果配置了这类探针,你就可以控制容器在启动成功后再进行存活性和就绪态检查, 确保这些存活、就绪探针不会影响应用的启动。 启动探针可以用于对慢启动容器进行存活性检测,避免它们在启动运行之前就被杀掉。

3.2 检测方法

  • httpGet:向容器内服务发送HTTP请求进行健康检测
  • exec :到容器执行命令,进行健康检测
  • tcpSocket:向容器内服务发送Socket(TCP协议)请求进行健康检测
  • grpc:向容器内服务发送GRPC请求进行健康检测

  本次kubernetes 集群的异常出现在就绪检测探针,使用 exec 检测 calico-node Pod 异常,calico-node 容器所在 Pod 上报还未就绪的信息,并且不接受通过 Kubernetes Service 的流量,导致 calico-node 一直处于 Running 状态,但是 Ready 实例为 0,造成服务不可用。

  通过查阅相关文档资料,猜测问题可能出现在容器运行时,由于 kubernetes 推行 CRI (Container Runtime Interface)标准的容器运行时接口,但是 docker 并不支持 CRI 标准接口,但是 kubernetes 早期为了兼容 docker,于是开发了 docker shim 来适配 docker 容器。 kubernetes 1.22 以后的版本中移除了 docker shim 相关代码,导致了 kubernetes 1.22 以后的版本如果想要继续使用 docker 作为容器运行时,需要额外的安装 cri-docker 服务。当前的 cri-docker 服务可能并不太稳定,所以,当服务运行几天后就会出现异常情况,导致 kubelet 使用就绪探针对 Pod 进行健康检查时异常。

4. 解决办法

  想要在 kubernetes 1.22 以后的集群中继续使用 docker,可能需要继续等待开源社区做更多的优化,所以,建议切换容器运行时,将 docker 容器运行时切换到 containerd。containerd 实际上也是 docker 共享给开源社区的一款非常优秀的容器运行时,并且 docker 本身也是基于 containerd 构建的更高层次应用的容器服务。
   docker 切换到 containerd 的操作步骤可参考:kubernetes 将容器运行时从docker升级到containerd。经过持续多天的观测,发现之前每隔2天就会异常的就绪探针报错问题没有复现,初步判断之前的猜测是对的,所以,在生产环境中尝试最新版本的 kubernetes 有一定的风险,升级需要谨慎,升级之前在测试环境中做持续性的观察。

相关文章:

K8S集群1.24使用docker作为容器运行时出现就绪探针间歇性异常

文章目录1. 环境介绍2. 异常信息3. 分析问题3.1 kubernetes 健康检查3.1.1 存活探针3.1.2 就绪探针3.1.3 启动探针3.2 检测方法4. 解决办法1. 环境介绍 组件版本kubernetes1.24.2docker18.03.1-cecri-docker0.2.6 2. 异常信息 最近监测到 kubernetes 集群上 calico-node Pod 运…...

士大夫身份第三方水电费第三方

package com.snmocha.snbpm.job;import org.springframework.stereotype.Component;import com.xxl.job.core.handler.annotation.XxlJob;import lombok.extern.slf4j.Slf4j;/*** Demo定时任务.* Author:zhoudd* Date:2023-01-15*/ Component Slf4j publ…...

RDO一体化部署OpenStack

RDO一体化部署OpenStack 环境准备 安装centos7 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J785hZvT-1677578418769)(C:\Users\HONOR\AppData\Roaming\Typora\typora-user-images\image-20230228171254675.png)] 使用vmware安装安装centos7&a…...

CC2530+ESP8266使用MQTT协议上传阿里云的问题

ATMQTTPUB<LinkID>,<"topic">,<"data">,<qos>,<retain>LinkID: 当前只支持 0 topic: 发布主题, 最长 64 字节 data: 发布消息, data 不能包含 \0, 请确保整条 ATMQTTPUB 不超过 AT 指令的最大长度限制 qos: 发布服务质量, 参…...

Java基础:爬虫

1.本地爬虫 Pattern:表示正则表达式 Matcher:文本匹配器&#xff0c;作用按照正则表达式的规则去读取字符串&#xff0c;从头开始读取。在大串中去找符合匹配规则的子串。 1.2.获取Pattern对象 通过Pattern p Pattern.compile("正则表达式");获得 1.3.获取Matc…...

纯手动搭建大数据集群架构_记录008_搭建Hbase集群_配置集群高可用---大数据之Hadoop3.x工作笔记0169

首先准备安装包 然后将安装包分发到集群的其他机器上去 然后因为运行hbase需要zookeeper支持,所以这里首先要去,启动zk 走到/opt/module/hadoop-3.1.3/bin/zk.sh 然后 zk.sh start 启动一下,可以看到启动了已经 然后zk.sh status 可以看zookeeper的状态 然后我们再去启动一下…...

Linux系统认知——驱动认知

文章目录一、驱动相关概念1.什么是驱动2.被驱动设备分类3.设备文件的主设备号和次设备号4.设备驱动整体调用过程二、基于框架编写驱动代码1.驱动代码框架2.驱动代码的编译和测试三、树莓派I/O口驱动的编写1.微机的总线地址、物理地址、虚拟地址介绍2.通过树莓派芯片手册确定需要…...

Spring boot装载模板代码并自动运行

Spring boot装载模板代码涉及的子模块及准备省心Clickhouse批量写JSON多层级数据自动映射值模板代码生成及移交控制权给Spring IOC涉及的子模块及准备 最近比较有空&#xff0c;之前一直好奇&#xff0c;提交到线上考试的代码是如何执行测试的&#xff0c;在实现了基础的demo后…...

全国领先——液力悬浮仿生型人工心脏上市后在同济医院成功植入

2023年2月22日&#xff0c;华中科技大学同济医学院附属同济医院&#xff08;同济医院&#xff09;心脏大血管外科团队举办了一场气氛热烈的小规模庆祝活动&#xff0c;魏翔主任、程才副主任、王星宇副主任医师和李师亮医师到场&#xff0c;为终末期心衰患者黄先生“庆生”&…...

基于蚂蚁优化算法的柔性车间调度研究(Python代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…...

云原生周刊:开源漏洞仍然是开发人员面临的挑战 | 2023.2.27

Synopsys 发布了最新一期的开源安全年度报告&#xff0c;开源安全和风险分析 (OSSRA)。这份报告由Synopsys 网络安全研究中心 (CyRC)创建&#xff0c;着眼于 Black Duck 审计服务团队进行的 1,700 多次商业代码库审计的结果。 自 2019 年以来&#xff0c;OSSRA 所有 17 家企业…...

Docker学习总结

1、镜像操作 1.1 拉取、查看镜像 步骤一&#xff1a; 首先去镜像仓库搜索nginx镜像&#xff0c;比如[DockerHub]( Docker Hub Container Image Library | App Containerization ) : 步骤二&#xff1a; 根据查看到的镜像名称&#xff0c;拉取自己需要的镜像 通过命令&…...

Android 9.0系统源码_通知服务(三)应用发送状态栏通知的流程

前言 应用发送一个显示在状态栏上的通知&#xff0c;对于移动设备来说是很常见的一种功能需求&#xff0c;本篇文章我们将会结合Android9.0系统源码具体来分析一下&#xff0c;应用调用notificationManager触发通知栏通知功能的源码流程。 一、应用触发状态栏通知 应用可以通…...

python中的序列——笔记

一、介绍 ABC语言时一个致力于为初学者设计编程环境的长达十年的研究项目。 Python也从ABC那里继承了用统一的风格去处理序列数据这一特点。不管是哪种数据结构&#xff0c;字符串、列表、字节序列、数组、XML元素&#xff0c;抑或是数据库查询结果&#xff0c;它们都共用一套…...

taobao.user.seller.get( 查询卖家用户信息 )

&#xffe5;开放平台基础API必须用户授权 查询卖家用户信息&#xff08;只能查询有店铺的用户&#xff09; 只能卖家类应用调用。 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 点击获取key和secret请求示例…...

WebRTC Qos策略

1.WebRTC 用于提升 QoS 的方法&#xff1a;NACK、FEC、SVC、JitterBuffer、IDR Request、PACER、Sender Side BWE、VFR&#xff08;动态帧率调整策略&#xff09;https://blog.csdn.net/CrystalShaw/article/details/80432267丢包重传NACK&#xff1a;一种通知技术&#xff0c;…...

Mysql数据查询

文章目录1 group by子句2 回溯统计3 having子句1 group by子句 group by子句**&#xff1a;分组统计&#xff0c;根据某个字段将所有的结果分类&#xff0c;并进行数据统计分析 分组的目的不是为了显示数据&#xff0c;一定是为了统计数据group by子句一定是出现在where子句之…...

Kafka入门(五)

下面聊聊Kafka常用命令 1、Topic管理命令 以topic&#xff1a;test_1为例 1.1、创建topic ./bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 3 --partitions 3 --topic test_1参数说明&#xff1a; –bootstrap-server&#xff1a;…...

如何快速在windows系统中切换node.js版本

前言 最近在同时维护公司的两个项目&#xff0c;一个是新项目&#xff0c;另一个是老项目&#xff0c;二者所依赖的node版本是不一致的。 这就导致我在切换项目的时候必须重新安装对应版本的 node.js&#xff0c;否则就会报各种神马错误。 但这一卸一装可着实烦死个银&#xf…...

设计模式-单例模式(java)

单例是一种常用的设计模式&#xff0c;它的目的是确保一个类只有一个实例&#xff0c;并提供一个全局访问点。在Java编程语言中&#xff0c;实现单例有多种方法&#xff0c;本篇文章将介绍其中的两种实现方式。 方式一&#xff1a;饿汉式单例模式 饿汉式单例模式是最简单的实…...

Revit中复合墙图层的规则和CAD识别翻模墙

一、Revit中用于指定复合墙图层的规则&#xff0c;具体内容? 在编辑复合墙的结构时&#xff0c;请使用“指定图层”工具将“编辑部件”对话框中的行指定给图层或预览窗格中的区域&#xff0c;并遵循这些原则。 在预览窗格中&#xff0c;样本墙的各个行必须保持从左到右的顺序显…...

【DL】Paddle BML Codelab环境使用说明 - 知识点目录

《Paddle BML Codelab环境使用说明》 1. 编辑区 Code Cell 1.1 Code Cell 操作 Magic关键字/魔术命令 Magic命令含义%timeit测试单行语句的执行时间%%timeit测试代码块的执行时间%matplotlib inline显示matplotlib生成的图形%run调用外部python脚本%pdb 调试程序%pwd 查看当…...

python正则表达式处理文本-re模块

python正则表达式处理文本-re模块 1.概述 正则表达式通常用于含有大量文本处理的应用当中。例如&#xff0c;它们经常用作开发者使用的文本编辑程序的搜索模式&#xff0c;包括 vi&#xff0c;emacs 和现代集成开发环境。它们也是 Unix 命令行工具的组成部分&#xff0c;例如…...

换了固态硬盘需要重装系统吗?教你如何实现不重装系统!

电脑大家都用过嘛&#xff0c;如果您的计算机装的还是机械硬盘&#xff0c;想必阁下肯定是修身养性的高手&#xff0c;因为在这个浮躁的社会中&#xff0c;是很少有人能够忍受5分钟甚至更久的开机时间的&#xff0c;不仅开机慢&#xff0c;应用程序的响应速度也很慢&#xff0c…...

网上医疗预约挂号系统

技术&#xff1a;Java、JSP等摘要&#xff1a;网上医疗预约挂号系统是主要是对居民的保健、护理、疾病预防等健康信息实行有效的预约挂号管理。医疗机构为居民建立完整的健康档案&#xff0c;安排体检以及实施免疫等预防措施。而基于Web的远程保健平台以网上医疗预约挂号系统为…...

专题:一看就会的C++类模板讲解 (1)

目录 一.类模板的作用 二.类模板的定义&#xff1a; 三.类模板的声明格式&#xff1a; 四.类模板对象 五.再举一个例子 一.类模板的作用 面向对象的程序设计编程实践中&#xff0c;我们可能会面临这样的问题&#xff1a;要实现比较两个数的大小。明明比较两个数的方法都一样…...

什么是“奥卡姆剃刀”,如何用“奥卡姆剃刀”解决复杂问题?复杂问题简单化

什么是“奥卡姆剃刀”&#xff0c;如何用“奥卡姆剃刀”解决复杂问题&#xff1f;复杂问题简单化问题什么是“奥卡姆剃刀”?如何使用“奥卡姆剃刀”解决问题复杂问题简单化“汉隆剃刀”小结问题 假设你在夜空中看到一颗闪闪发光的「不明飞行物」&#xff0c;你认为这会是什么呢…...

角谷定理(递归)

已知有角谷定理&#xff1a; 输入一个自然数&#xff0c;若为偶数&#xff0c;则把它除以2&#xff0c;若为奇数&#xff0c;则把它乘以3加1。经过如此有限次运算后&#xff0c;总可以得到自然数值1。求经过多少次可得到自然数1。如&#xff1a;例如数据22的变化过程&#xff…...

数学小课堂:微积分复盘(高等数学本质上是对趋势的动态描述,是对各种相关性抽象的表述。)

文章目录 引言I 复盘1.1 概念和表述1.2 现实与虚构1.3 有穷和无穷1.4 静态和动态1.5 直觉和逻辑II 通过数学逻辑,理解人生。2.1 精明与聪明2.2 朋友和理性的对手2.3 攒钱和赚钱2.4 荣誉和财富引言 高等数学本质上是对趋势的动态描述,是对各种相关性抽象的表述。 I 复盘 1.…...

JAVA线程池原理详解一

JAVA线程池原理详解一 一. 线程池的优点 线程是稀缺资源&#xff0c;使用线程池可以减少创建和销毁线程的次数&#xff0c;每个工作线程都可以重复使用。可以根据系统的承受能力&#xff0c;调整线程池中工作线程的数量&#xff0c;防止因为消耗过多内存导致服务器崩溃。 二…...

官方网站欣赏/江苏关键词推广seo

运算符是告诉编译器执行特定数学或逻辑函数的符号。C语言内置运算符丰富&#xff0c;并提供以下类型的运算符 -算术运算符关系运算符逻辑运算符按位运算符分配运算符其他运算符在文中&#xff0c;我们将研究每个操作符的工作方式。下表显示了C语言支持的所有算术运算符。假设变…...

乐站_网站建设_自助建站/宁波seo外包方案

摘要&#xff1a;一、故障描述 ASM磁盘组掉线 &#xff0c;ASM实例不能mount。ASM磁盘组有4个500G的磁盘组成&#xff0c;数据库和ASM软件为10.2.0.1&#xff0c;急需恢复oracle数据库。 二、故障分析 分析组成ASM磁盘组的磁盘&#xff0c;取出ASM元数据&#xff0c;对元数据进…...

discuz做网站赚钱经历/女装标题优化关键词

### 以下是常用的代码收集&#xff0c;没有任何技术含量&#xff0c;只是填坑的积累。转载请注明出处&#xff0c;谢谢。 #### 1. PC - js- 返回指定范围的随机数(m-n之间)的公式javascriptMath.random()*(n-m)m - [return false](http://stackoverflow.com/questions/1357118/…...

私密浏览器在线观看/潜江seo

设置制表位如果您想使用标尺在文档左侧、中间和右侧设置手动制表位。(提示&#xff1a; 如果看不到文档顶部的水平标尺&#xff0c;请单击垂直滚动条顶部的 “查看标尺” 按钮。)这时您可以快速设置制表符&#xff0c;方法是单击标尺左端的制表符选择器&#xff0c;直到显示出您…...

网站优化有哪些/公司网站搭建

数据链路层(一)3.1 使用点对点信道的数据链路层3.1.1 数据链路层和帧数据发送模型数据链路层的信道类型数据链路层使用的信道主要有以下两种类型&#xff1a;点对点信道。这种信道使用一对一的点对点通信方式。广播信道。这种信道使用一对多的广播通信方式&#xff0c;因此过程…...

建设网站明细报价表/柳州今日头条新闻

Theano 学习笔记(一)theano为什么要定义共享变量&#xff1f; 定义共享变量的原因在于GPU的使用&#xff0c;如果不定义共享的话&#xff0c;那么当GPU调用这些变量时&#xff0c;遇到一次就要调用一次&#xff0c;这样就会花费大量时间在数据存取上&#xff0c;导致使用GPU代码…...