利用k8s Infra 容器,解决pod网络故障注入的问题

目录

一、infra容器作用

二、pod网络故障注入问题

三、充分利用pod infra容器


一、infra容器的作用

我们知道,在kubernetes中,pod中容器的资源隔离主要通过namespace和cgroup来实现。那如果我们需要为pod中的容器共享某种资源应该怎么做。kubernetes 中的 pause 容器就提供了以下功能:

  • 在 pod 中担任 Linux 命名空间共享的基础;
  • 启用 pid 命名空间,开启 init 进程。

二、pod网络故障注入问题

背景:

在给pod注入网络故障,模拟pod网络延迟,丢包的场景下,会出现注入故障的目标container重启,进而导致故障恢复失败,最后只能重启相应pod来恢复故障。

如上图所示,注入故障后显示0/1的pod。

问题分析:

是什么原因导致目标pod会重启呢?故障注入本身是由tc实现的,并不会引起该问题。然后想到容器具有探针机制,当用户容器配置了livenessProbe探针时,由于容器被注入了各种网络延迟或者丢包,会导致探针失败,从而使kubelet重启container,导致后续一系列依赖之前容器的操作失败。

三、充分利用pod infra容器

思考:

那有没有一种办法可以既可以注入故障,又可以不受重启container的影响?这边想到两种方案。

1.重启查询新启动的container,对新的目标container进行故障恢复。

2.通过前面infra容器的前置知识,可以知道infra container是和pod所有容器共享networknamespace的,因此可以直接把故障做在infra容器上,并且infra容器的生命周期是和pod相同的。

解决:

有了上述两种方案,我们再对其进行比较。

在方案1中,有下面几种情况仍然会出现恢复失败:

1.在恢复过程中,恰巧目标container重启了。

2.恢复时间点在新旧container重启的间隙。

3.尝试重试并且成功的时间间隔和新旧container重启并启动的时间间隔相关。

因此,需要不停重试,直到恢复成功为止,并不是一个看上去很好的解决方案。

再看看方案2,和没有重启的故障注入、恢复假设一模一样。通过分析和尝试最后选择了方案2。

四、参考

  • The Almighty Pause Container
  • Pause 容器 · Kubernetes 中文指南——云原生应用架构实战手册

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/371419.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

91.网游逆向分析与插件开发-游戏窗口化助手-游戏窗口化助手的UI设计

内容参考于:易道云信息技术研究院VIP课 上一个内容:项目需求与需求拆解-CSDN博客 码云地址(游戏窗口化助手 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:e512d44da1b7e6a8726b1be0…

用GOGS搭建GIT服务器

GOGS官网 Gogs: A painless self-hosted Git service 进入文件所在目录 cd /usr/local/develop 解压文件 tar -xvf gogs_0.13.0_linux_amd64.tar.gz 解压之后 进入gogs 目录 cd gogs 创建几个目录 userdata 存放用户数据 log文件存放进程日志 repositories 仓库根目…

docker 网络模型

一、docker的网络模型分为四种 【1】Host(与宿主机共享一个网络),宿主机的localhost 及 容器内的localhost 【2】Bridge(与宿主机共享一个局域网,有自己的网络;docker运行默认Bridge);容器内localhost不是宿主机localhost 【3】…

Scrapy:Python中强大的网络爬虫框架

Scrapy:Python中强大的网络爬虫框架 在当今信息爆炸的时代,从互联网上获取数据已经成为许多应用程序的核心需求。Scrapy是一款基于Python的强大网络爬虫框架,它提供了一种灵活且高效的方式来提取、处理和存储互联网上的数据。本文将介绍Scrap…

初始数据库

华子目录 什么是数据库DBMS(数据库管理系统)数据库系统和文件系统的区别文件系统数据库系统对比区别优缺点总结 常见数据库关系型数据库ACID原则关系型数据库的优缺点优点缺点 非关系型数据库存储方式常见的非关系型数据库非关系型数据库的优缺点优点缺点…

docker 构建个人博客网站

1、项目地址 https://gitee.com/hhll/blog-hangliang.git 2、打包docker镜像并上传docker hub 【1】注册docker hub账号https://hub.docker.com/ 【2】在docker hub建对应的仓库 【3】登录docker hub并打包上传前后端镜像 sudo docker login -u xxxx 密码 xxxxxx 后端&am…

Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(五)

原文:Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 译者:飞龙 协议:CC BY-NC-SA 4.0 第十二章:使用 TensorFlow 进行自定义模型和训练 到目前为止,我们只使用了 TensorFlow 的高级 API&#…

栈--数据结构

初始化栈、入栈、出栈 栈&#xff1a;只允许在一端进行插入或删除操作的线性表 栈顶&#xff08;Top&#xff09; 代码实战步骤依次是初始化栈&#xff0c;判断栈是否为空&#xff0c;压栈&#xff0c;获取栈顶元素&#xff0c;弹栈。 代码 #include <stdio.h>#define …

安卓平台valgrind交叉编译

背景 通过上次的文章valgrind跨平台调试及其问题分析,为同事们在大部分平台下进行内存问题分析提供了帮助。但是也遇到了阻塞情况&#xff1a;android 平台&#xff0c;无法交叉编译通过。大家对于编译这件事&#xff0c;似乎天然有一种排斥&#xff0c;本能的拒绝&#xff0c…

微信小程序checkbox多选

效果图 <view class"block"><view class"header"><view class"header-left"><text class"pu-title">数据</text><text class"pu-tip">至少选择一个指标</text></view>&l…

JS 基本语句

函数调用&#xff0c;分支&#xff0c;循环&#xff0c;语句示例。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"&g…

如何在Vue应用程序中使用Vue-Router来实现路由嵌套动画效果

Vue-Router是Vue.js官方的路由管理插件&#xff0c;可以帮助我们轻松管理应用程序的路由。除了基本的路由功能外&#xff0c;Vue-Router还允许我们在切换路由时添加动画效果&#xff0c;提升用户体验。本文将介绍如何使用Vue-Router来实现路由嵌套动画效果&#xff0c;并提供具…

vscode 括号 python函数括号补全

解决方法 在setting.json中添加 “python.analysis.completeFunctionParens”: true 打开设置&#xff1b; 点击图中按钮打开setting.json文件 添加 “python.analysis.completeFunctionParens”: true

在 iOS 上安装自定企业级应用

了解如何安装您的组织创建的自定应用并为其建立信任。 本文适用于学校、企业或其他组织的系统管理员。 您的组织可以使用 Apple Developer Enterprise Program 创建和分发企业专用的 iOS 应用&#xff0c;以供内部使用。您必须先针对这些应用建立信任后&#xff0c;才能将其打…

电气器件系列四十六:固态继电器规格参数

ssr选型的时候&#xff0c;要和温控器的参数对应起来&#xff0c;我选的温控器&#xff08;ai-207d1g&#xff09;上&#xff0c;明确给出了给ssr的电压数据&#xff08;5vdc&#xff0c;30ma&#xff09;&#xff0c;买的这个ssr(ssr40n)是3-32v&#xff0c;8ma的. 关断电压&a…

Elasticsearch:使用 Inference API 进行语义搜索

在我之前的文章 “Elastic Search 8.12&#xff1a;让 Lucene 更快&#xff0c;让开发人员更快”&#xff0c;我有提到 Inference API。这些功能的核心部分始终是灵活的第三方模型管理&#xff0c;使客户能够利用当今市场上下载最多的向量数据库及其选择的转换器模型。在今天的…

IDEA如何进行远程Debug调试(二)解决jar包运行报错的问题

一、解决jar包运行报错的问题 上文提到在进行debug远程调试的时候&#xff0c;打包后的jar包本地无法运行&#xff0c;报如下的错误 ​​​​​​​IDEA如何进行远程Debug调试-CSDN博客 查看报错是找不到对应的类&#xff0c;那么我们使用jd-gui的反编译工具&#xff0c;看看…

Linux的库文件

概述&#xff1a; 库文件一般就是编译好的二进制文件&#xff0c;用于在链接阶段同目标代码一块生成可执行文件&#xff0c;或者运行可执行文件的时候被加载&#xff0c;以遍调用库文件中的某段代码。 动态链接都是索引的.so文件&#xff0c;静态链接都是压缩打包的.a文件。 …

机器学习本科课程 大作业 多元时间序列预测

1. 问题描述 1.1 阐述问题 对某电力部门的二氧化碳排放量进行回归预测&#xff0c;有如下要求 数据时间跨度从1973年1月到2021年12月&#xff0c;按月份记录。数据集包括“煤电”&#xff0c;“天然气”&#xff0c;“馏分燃料”等共9个指标的数据&#xff08;其中早期的部分…

Electron实战(一):环境搭建/Hello World/打包exe

文章目录 Electron安装Node.jsNodeJs推荐配置开始Electron项目创建index.js文件创建src目录运行打包生成exe生成安装包踩坑 下一篇Electron实战(二)&#xff1a;将Node.js和UI能力&#xff08;app/BrowserWindow/dialog)等注入html Electron Electron是一个使用JavaScript, HT…