kubenetes-pod高可用

一、概述

实现pod层面的高可用,需要避免容器进程被终止避免Pod被驱逐:

  1. 设置合理的resources.memory limits 防止容器进程被 OOMKill,防止Pod被驱逐;
  2. 设置合理的emptydir.sizeLimit 并且确保数据写入不超过emptyDir的限制,防止Pod被驱逐。

二、Pod的QoS 分类

  1. Guaranteed
    -Pod的每个容器都设置了资源CPU和内存需求,Limits 和 requests的值完全一致
  2. Burstable
    -至少一个容器制定了CPU或内存request ,并且requests和limits不一致
  3. BestEffort
    -Pod中的所有容器都未指定CPU或内存资源需求requests.
    在这里插入图片描述
    三种QoS层级关系:
    在这里插入图片描述
    Guaranteed 类型的资源需求,能最大程度保证pod的资源需求,但是可能会造成集群节点的资源利用率不高。而Burstable和BestEffort可以达到资源超卖的效果,因为有些应用的流量有峰谷的差异,比如web应用,只要错峰开来,就能提高资源的利用率,部署更多的pod。
    一般而言,Guaranteed用来保护重要的pod,而Burstable适用于大部分场景。
    当计算节点检测到内存压力的时候,kubenetes会按照BestEffort–>Burstable–>Guaranteed的顺序依次去驱逐pod。

三、基于Taint的驱逐(Evictions)

在这里插入图片描述
当Node出现问题的时候,kubenetes会给Node打上taints,比如Node ping不通的时候打上unreachable,Node上的组件有问题的时候打上not-ready。NoSchedule的动作是会驱逐Node上的pod。
当一个pod创建出来的时候,kubenetes会自动为pod增加Toleration。
有时因为网络原因,导致节点的临时不可达,我们可以适当的增大tolerationSeconds避免pod被驱逐,特别是依赖本地存储的有状态应用

四、健康检查探针

在这里插入图片描述
探针属性:
在这里插入图片描述

合理使用startupProbe,有些应用可能启动时间会比较长,而livenessProbe探测频率比较高,startupProbe可以避免过于频繁的监测从而影响应用的启动。

五、Post-start和Pre-stop Hook

在这里插入图片描述
在这里插入图片描述
postStart结束之前,容器不会被标记为running状态。PreStop完成后,Kubelet会发kill-SIGTERM给容器进程,这时就要看应用是否支持处理SIGTERM信号量了,由/bin/bash起的进程是会忽略SIGTERM的,需要注意。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kubenetes-容器网络接口CNI

一、CNI Kubernetes 网络模型设计的基础原则是: 所有的Pod能够不通过NAT(网络地址转换)就能相互访问。所有的节点能够不通过NAT就能相互访问。容器内看见的IP地址和外部组件看到的容器IP是一样的。 Kubernetes的集群里,IP地址是以Pod为单位进行分配的…

强化学习在文生图中的应用:Training Diffusion Models with Reinforcement Learning

论文链接:Training Diffusion Models with Reinforcement Learning项目地址:Training Diffusion Models with Reinforcement Learning官方代码:https://github.com/kvablack/ddpo-pytorch/tree/maintrl实现:https://huggingface.co/docs/trl/ddpo_trainer🤗关注公众号 fu…

【Linux系统化学习】进程的父子关系 | fork 进程

个人主页点击直达:小白不是程序媛 Linux专栏:Linux系统化学习 目录 前言: 父子进程 父子进程的引入 查看父子进程 查询进程的动态目录 更改进程的工作目录 fork创建进程 fork的引入 fork的使用 fork的原理 fork如何实现的&#…

git diff相关命令

git diff相关命令 git diff git diff此命令比较的是工作目录中当前文件和暂存区中的文件差异,也就是修改之后还没有暂存起来的变化内容。因为后续要将工作目录中的文件添加到暂存区。 示例: 当前工作目录下有一个2.txt的文件,文件的内容是…

JVM虚拟机:CMS垃圾回收器的日志分析

本文重点 本文我们将学习CMS垃圾回收器的日志 使用CMS java -Xms20M -Xmx20M -XX:PrintGCDetails -XX:UseConcMarkSweepGC 类名 日志格式 分析 上面的日志我们分为了两部分,上面表示新生代,下面表示老年代。 ParNew表示年轻代收集器,6144…

【使用vscode在线web搭建开发环境--code-server搭建】

官方版本下载 https://github.com/coder/code-server/releases?q4.0.0&expandedtrue使用大于版本3.8.0,因为旧版本有插件市场不能访问的情况版本太高需要更新环境依赖 拉取安装包 []# wget "https://github.com/coder/code-server/releases/download/v4.0.0/code-…

Python uiautomation获取微信内容!聊天记录、聊天列表、全都可获取

Python uiautomation 是一个用于自动化 GUI 测试和操作的库,它可以模拟用户操作来执行各种任务。 通过这个库,可以使用Python脚本模拟人工点击,人工操作界面。本文使用 Python uiautomation 进行微信电脑版的操作。 以下是本次实验的版本号。…

36 mysql 主键冲突 和 唯一索引冲突

前言 我们这里 来看一下 我们经常碰到的 "duplicate key xxx" 测试表结构如下 CREATE TABLE tz_test (id int(11) unsigned NOT NULL AUTO_INCREMENT,field1 varchar(128) DEFAULT NULL,PRIMARY KEY (id) USING BTREE,KEY field1 (field1) USING BTREE ) ENGINEI…

C++知识点总结(6):高精度乘法

一、高精度数 低精度数 1. 输入两个数字 char a_str[1005] {}; long long b; cin >> a_str >> b; 2. 将高精度数转换为整型 int a[1005] {}; int len_a strlen(a_str); for (int i 0; i < len_a-1; i) {a[len_a-i-1] a_str[i] - 48; } 3. 计算 int …

C++之set/multise容器

C之set/multise容器 set基本概念 set构造和赋值 #include <iostream> #include<set> using namespace std;void PrintfSet(set<int>&s) {for(set<int>::iterator it s.begin();it ! s.end();it){cout<<*it<<" ";}cout&l…

解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.x.x‘ not found问题

目录 1、查找缺少库版本2、动态库版本与gcc版本对应关系3、查找 libstdc.so.6.0.x 库文件4、如果libstdc.so.6.0.21库文件已存在&#xff0c;则按照下面的步骤创建软链接即可4.1 拷贝、软连接4.2验证新的 libstdc.so.6.0.21 库文件是否生效 5、如果libstdc.so.6.0.21库文件不存…

Web前端—移动Web第二天(空间转换、动画、综合案例:全名出游)

版本说明 当前版本号[20231118]。 版本修改说明20231118初版 目录 文章目录 版本说明目录移动 Web 第二天01-空间转换空间转换简介平移视距旋转左手法则rotate3d-了解立体呈现案例-3d导航缩放 02-动画动画实现步骤animation复合属性animation拆分写法案例-走马灯精灵动画多组…