pod进阶:

pod进阶:

探针*

poststart

prestop

pod的生命周期:pod的状态

k8s的重启策略

Always deployment的yaml文件只能是Always pod的yaml三种模式都可以。不论正常退场还是非正常退出都重启

OnFailure:只有状态码非0才会重启,正常退出是不重启的

Never: 正常退出和非正常退出都不重启。

这三个都是对应的容器的状态,容器退出了,pod才会重启。

pod可以有多个容器,只要有一个容器退出,整个pod都会重启。所有的pod内的所有容器都会重启。

docker的重启策略:

docker的默认策略是never。

on-failure:非正常退出时才会重启容器。

always:只要容器退出都会重启。

unless-stoppde:只要容器退出就会重启,docker的守护进程启动时,已经停止的容器,不再重启。

问单机部署:docker就够了

集群化部署;k8s,至少三个节点

yaml文件快速生成:

kubectl create deployment nginx1 --image=nginx:1.22 --replicas=3 --dry-run=client

--dry-run=client:只是调用了api的对象不执行命令

kubectl create deployment nginx1 --image=nginx:1.22 --replicas=3 --dry-run=client -o yaml > /opt/test3.yaml

pod的状态:

CrashLoopBackOff容器退出,kubelet正在将它重启
InvalidImageName无法解析镜像名称
ImageInspectError无法校验镜像
ErrImageNeverPull策略禁止拉取镜像
ImagePullBackOff正在重试拉取
RegistryUnavailable连接不到镜像中心
ErrImagePull通用的拉取镜像出错
CreateContainerConfigError不能创建kubelet使用的容器配置
CreateContainerError创建容器失败
m.internalLifecycle.PreStartContainer 执行hook报错
RunContainerError启动容器失败
PostStartHookError执行hook报错
ContainersNotInitialized容器没有初始化完毕
ContainersNotReady容器没有准备完毕
ContainerCreating容器创建中
PodInitializingpod 初始化中
DockerDaemonNotReadydocker还没有完全启动
NetworkPluginNotReady 网络插件还没有完全启动
Evicte pod被驱赶

crashloopbackoff:pod当中的容器退出,kubelet正在重启

imagepullbackoff:正在重试拉取镜像

errorimagepull:拉去镜像出错了(网速太慢、镜像名字写错了、镜像仓库挂了)

Evicte:POD被驱赶(node节点的资源不够部署pod,或者是资源不足,kubelet自动选择一个pod)

如何对pod内的容器使用节点资源的限制:

1、request:pod内的容器需要的资源

2、limit:限制,最高能占用系统多少资源

写一个limit:需要多少,最多也只能占用这么多

主要两个限制

cpu:

cpu的限制格式:

1、数字加小数点:1占用一个 2两个 0.5半个 .0.2五分之一 0.3,0.1是最小单位,要么是整数,要么是小数点后只能跟一位。

2、m来表示cpu,根据cpu的时间分片原理:通过周期性的轮流分配cpu给各个进程,多个进程可以在cpu上交替执行。

在k8s中就是表示占用cpu的比率: m:millicores 单位

1000m表示1个cpu 500m半个cpu 100m是最小单位

内存:单位用Ki、Mi、Gi、Ti

给内存和cpu做资源限制

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: centosname: centos
spec:replicas: 1selector:matchLabels:app: centostemplate:metadata:labels:app: centosspec:containers:- image: centos:7name: centoscommand: ["/bin/bash", "-c", "sleep 3600"]resources:limits:memory: "1Gi"cpu: "1000m"#在创建pod时,一定要给容器做资源限制。

镜像的拉取策略:

默认策略:

ifNotPresent:如果本地镜像已经存在,就不再拉去,本地没有才回去镜像仓库拉取

Always:不论镜像是否存在,创建时(重启),都会拉去镜像

Never:仅仅使用本地镜像,本地没有也不会主动拉取

如果本地部署用Never,如果涉及到外地部署,默认策略(事前要把docker的镜像导入到目标主机),Always一般不用

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: centosname: centos
spec:replicas: 1selector:matchLabels:app: centostemplate:metadata:labels:app: centosspec:containers:- image: centos:8name: centosimagePullPolicy: Alwayscommand: ["/bin/bash", "-c", "sleep 3600"]resources:limits:memory: "1Gi"cpu: "1000m"

pod容器健康检查

探针

prode

k8s对容器执行的定期诊断

探针三种规则

存活探针livenessProbe探测容器是否正常运行,如果发现探测失败,会杀掉容器,容器会根据重启策略来决定是否重启,不是杀掉pod,只是对容器。

就绪探针readinessProbe:探测容器是否进入ready状态,并做好接收请求的准备,如果探测失败 READY 0/1 没有进入ready状态,但是status还是running状态,但是不可用,service会把这个资源对象的端点从当中剔除。service也不会把请求转发到这个pod

启动探针starupProbe:只是在容器的启动后开始检测,容器内的应用是否启动成功。在启动探测成功之前,所有的其他探针都会处于禁用状态。

但是一旦启动探针结束,后续的操作就不在受启动探针的影响。

在一个容器当中可以有多个探针

第一个启动太真:只在容器启动时探测 、存活探针、就绪谈着

probe的检测方法:

1、exec探针:需要在容器内部执行命令,如果命令返回码0表示成功

适用于在容器内部自定义命令来检查容器的健康状态。

2、httpGet:就是对指定ip+端口的容器发送一个httpGet的请求。响应状态码大于等于200,但是小于400都是成功。400< x >=200

主要时适用于检查容器能否响应http的请求,web容器(nginx,tomcat)

3、tcpSocket:检查端口,对指定端口上的容器的ip地址进行tcp检查(三次握手),端口打开,认为探测成功。 适用于检查特定容器端口的监听状态。 类似于telnet

诊断结果:

1、成功,容器通过了,正常运行

2、失败,只有存活探针会重启

3、未知状态:也是诊断失败

exec方式:

LivenessProbe: exec: command: ["/usr/bin/test", "-e", "/opt/123.txt"

#周期性探测命令,表示容器启动之后多少秒来进行探测,时间不要设置太短,否则容器还>没启动好就探测,可能导致无效探测 initialDelaySeconds: 5 #表示探针探测的间隔时间。每隔多少秒进行一次检查,看应用的延迟敏感度,这个应用非常 重要,是要给核心组件, periodSeconds: 2 #表示如果探测失败,失败几次,把容器标记为不健康 failureThreshold: 2 #只要成功一次即可就标记为就绪,健康或者ready successThreshold: 1 #表示每一次探测的超时时间,在多少秒内必须完成探测,不能比perioSeconds大 timoutSecond: 1

liveness杀死容器重启,所有探针策略伴随整个pod的生命了,除了启动探针

apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: tomcat:8.0.52name: nginx1livenessProbe:httpGet:scheme: HTTPport: 8080path: /index.jspinitialDelaySeconds: 4periodSeconds: 2

总结

探针三个方法

存活探针:检测失败之后,会杀死容器然后重启

探针将伴随整个容器的生命周期

exec相当于执行了一个shell命令:容器里面执行

返回码为0,表示成功,成功1次就是探测成功

httpGet:对外部容器发起了一次get请求,可以添加path指定访问的资源

返回码在大于等200小于400都算成功

tcpSocket:相当于telnet,指定的容器监听端口是否打开,是否能和指定的容器监听端口进行通信

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

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

相关文章

UG装配-引用集

引用集是控制组件的图素在装配体中显示与隐藏 装配体体环境控制组件显示与隐藏的四种方式 1、图层 2、引用集 3、隐藏命令 Ctrl B 4、抑制&#xff0c;取消此组件装配&#xff0c;但保留操作在导航器方便启用 引用集有两种类型 1、UG自动创建的引用集 2、用户定义的引…

Java 泛型深入解析

Java 中的泛型是一种强大的编程特性&#xff0c;允许我们编写更加通用和类型安全的代码。本篇博客将深入探讨 Java 泛型的各个方面&#xff0c;包括泛型类、泛型方法、泛型接口以及泛型通配符。 1. 泛型类 首先&#xff0c;让我们看一个简单的泛型类的例子。在下面的代码中&a…

Spring中的ApplicationContext和BeanFactory的区别??

ApplicationContext&#xff1a;只要一读取配置文件&#xff0c;默认情况下就会创建对象。 UserServiceImpl&#xff1a; package com.by.service;import com.by.dao.UserDao;/*** 业务层实现类*/ public class UserServiceImpl implements UserService {private UserDao user…

Flink 维表关联方案

Flink 维表关联方案 1、Flink DataStream 关联维表 1&#xff09;概述 1.分类 实时数据库查找关联&#xff08;Per-Record Reference Data Lookup&#xff09; 预加载维表关联&#xff08;Pre-Loading of Reference Data&#xff09; 维表变更日志关联&#xff08;Refere…

源头厂家定制直线度测量仪 在线与离线检测均可

直线度的检测不再局限于直尺法、重力法等人工检测方式&#xff0c;随着自动化的发展&#xff0c;直线度检测也更需要自动化方便快捷的检测仪器。为此&#xff0c;研发了在线直线度测量仪与离线直线度测量仪&#xff0c;根据不同的需要&#xff0c;选择合适的设备即可。 数据计…

轻量检测模型PP-PicoDet解析

Paper&#xff1a;PP-PicoDet: A Better Real-Time Object Detector on Mobile Devices official implementation&#xff1a;https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.7/configs/picodet Backbone 作者通过实验发现&#xff0c;ShuffleNetV2在移动…

NeRF-RPN: A general framework for object detection in NeRFs 全文翻译

摘要 Abstract 本文提出了第一个重要的物体检测框架 NeRF-RPN&#xff0c;它直接在 NeRF 上运行。给定一个预先训练好的 NeRF 模型&#xff0c;NeRF-RPN 的目标是检测场景中所有物体的边界框。通过利用包含多尺度三维神经体积特征的新颖体素表示法&#xff0c;我们证明…

ubuntu环境安装配置nginx流程

今天分享ubuntu环境安装配置nginx流程 一、下载安装 1、检查是否已经安装 nginx -v 结果 2、安装 apt install nginx-core 过程 查看版本&#xff1a;nginx -v 安装路径&#xff1a;whereis nginx nginx文件安装完成之后的文件位置&#xff1a; /usr/sbin/nginx&#xf…

Axure鲜花商城网站原型图,网上花店订花O2O本地生活电商平台

作品概况 页面数量&#xff1a;共 30 页 兼容软件&#xff1a;仅支持Axure RP 9/10&#xff0c;非程序软件无源代码 应用领域&#xff1a;鲜花网、花店网站、本地生活电商 作品特色 本作品为「鲜花购物商城」网站模板&#xff0c;高保真高交互&#xff0c;属于O2O本地生活电…

OpenVINS学习5——VioManager.cpp/h学习与注释

前言 之前又看到说VioManager.cpp/h是OpenVINS中的核心程序&#xff0c;这次就看看这里面都写了啥&#xff0c;整体架构什么样&#xff0c;有哪些函数功能。具体介绍&#xff1a; VioManager类 整体分析 VioManager类包含 MSCKF 工作所需的状态和其他算法。我们将测量结果输…

python的课后练习总结3之条件语句

1,简单点&#xff0c;只有IF IF 后面加入条件然后冒号: 条件成立执行的代码1 条件成立执行的代码2 条件是否成立都执行的代码 身高 float(input(请输入你的身高(米):)) if 身高 > 1.3:print(f您的身高是{身高}米,请您买票) print(祝您旅途愉快) 2,IF 加个else if 条件:…

Spring AOP的环境搭建、切入点表达式、通知注解

Spring AOP的实现 Spring AOP环境搭建AOP坐标依赖引入添加xml配置实现三层架构 定义切入点Pointcut("匹配规则")切入点表达式1. 执行所有的公共方法2.执行任意的set方法3.设置指定包下的任意类的任意方法 (指定包: com.svt.service)4.设置指定包及于包下的任意类的任…

用 Python 抓取 bilibili 弹幕并分析!

01 实现思路 首先&#xff0c;利用哔哩哔哩的弹幕接口&#xff0c;把数据保存到本地。接着&#xff0c;对数据进行分词。最后&#xff0c;做了评论的可视化。 02 弹幕数据 平常我们在看视频时&#xff0c;弹幕是出现在视频上的。实际上在网页中&#xff0c;弹幕是被隐藏在源代码…

【熔断限流组件resilience4j和hystrix】

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容起因resilience4j落地实现pom.xml依赖application.yml配置接口使用 hystrix 落地实现pom.xml依赖启动类上添加注解接口上使用 &#x1f4e2;文章总结&#x1f4e5;博主目标 &#x1f50a;博主介绍 &#x1f31f;我是廖志伟…

【期末复习向】数据可视化技术

一、重点复习 题型&#xff1a;填空题&#xff08;15道&#xff0c;2分一个&#xff09;与简答题&#xff08;3道题目&#xff0c;10分一个&#xff09;与绘图题&#xff08;选画2个类型的图&#xff09; 1.什么是数据可视化 在计算机视觉领域&#xff0c;数据可视化是对数据的…

Linux 进程(八) 进程的退出码

main 函数的返回值叫做进程的退出码。当进程成功退出的时候&#xff0c;我们一般用0来表示。进程失败的时候一般用非零来表示。我们使用不同的数字来表示进程退出时不同的失败原因。 我们查看系统的有多少退出码以及其含义时需要用到strerror() 他的头文件和用法如下。 通过一…

CSS 放大旋转动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ rotate-scale-up: isAnimating }"><!-- 元素内容 -->&l…

从零开始搭建企业级前端项目模板(vue3+vite+ts)

文章目录 主要内容一、vite脚手架工具初始化项目二、项目代码加入eslint校验和自动格式化2.1安装对应依赖插件2.2 配置script脚本&#xff0c;项目安装eslint配置2.3 安装完成后&#xff0c;后面启动项目还缺少一些依赖&#xff0c;提前按需安装好 三&#xff0c;修改eslintrc.…

3D目标检测(教程+代码)

随着计算机视觉技术的不断发展&#xff0c;3D目标检测成为了一个备受关注的研究领域。与传统的2D目标检测相比&#xff0c;3D目标检测可以在三维空间中对物体进行定位和识别&#xff0c;具有更高的准确性和适用性。本文将介绍3D目标检测的相关概念、方法和代码实现。 一、3D目…

2023年12月青少年软件编程Python等级考试(三级)真题试卷

2023年12月青少年软件编程Python等级考试&#xff08;三级&#xff09;真题试卷 题目总数&#xff1a;38 总分数&#xff1a;100 选择题 第 1 题 单选题 一个非零的二进制正整数&#xff0c;在其末尾添加两个“0”&#xff0c;则该新数将是原数的&#xff1f;&#x…