pod进阶版(1)

pod的相关知识

k8s的pad重启策略:

Always deployment的yaml文件只能是Always pod的yaml三种模式都可以。
Onfailure:只有异常退出状态码非0才会重启。正常退出不重启。
Never:非正常退出和非正常退出都不重启。
容器的退出了pod才会重启。
pod可以有多个容器,只要有一个容器退出,整个pod都会重启,pod内的所有容器都会重启。


docekr的重启策略:

docker的默认策略是Never。
on-failure:非正常退出,才会重启容器。
always:只要容器退出都会重启。
unless-stopped:只要退出就会重启,docker守护进程时已经停止的容器,不会重启。


单机部署:docker就够用了
集群化部署:k8s部署

yaml模板文件快速生成的三种方式

可以生成pod、service、deployment等yaml文件

1、手写

2、对已有资源进行导出

kubectl get deployments.apps nginx -o yaml > /opt/lyw.yaml

3、通过api的组件,使对象不执行命令生成文件

kubectl create deployment nginx1 --image=nginx:1.22 --dry-run=client -o yaml >  /opt/test1.yaml
--dry-run=client 只是调用api的对象不执行命令

pod的状态:

pod状态简述说明说明
pending挂起状态

pod已被创建,但是尚未被分配到运行的node节点

(原因:节点资源不够或等待其他pod节点调度)

running运行中pod已经被分配到了node节点,pod内部的所有容器都已经启动,运行状态正常,稳定。
completed 成功运行完毕并退出容器内部的进程运行完毕,正常退出,没有发生错误。
successded
faild运行错误并退出

pod中的容器非正常退出,发生了错误。

需要通过查看详细和日志来定位问题。

Unkown未知

由于某些原因,k8s集群无法获取pod的状态。

APIserver出了问题

terminating在终止中

这个pod正在被删除,里面的容器正在终止。

终止过程中,资源回收、垃圾清理、以及终止过程中需要执行的命令。

crashloopbackoffpod当中的容器退出,kubelet正在重启
imagepullbackoff正在重试拉取镜像
errimagepull

镜像拉取出错

(1、网速太慢  2、镜像名字写错了  3、镜像仓库挂了)

Evictepod被驱赶(node节点的资源不足部署pod,或者是资源不足,kubelet自动选择一个pod驱逐。)

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

1、request:需要的资源
2、limit    最高占用系统多少资源
   limit需要多少,最多也只能占用这么多

两个限制(cpu、内存):

cpu :
    cpu的个数限制:
    1 2 0.5 0.2 0.3  1:可以占用1个cpu  0.1是最小单位(要么整数,要么就是小数点后只能跟一位)
   cpu时间分片原理:
        cpu时间分片: 通过周期性的轮流分配cpu时间给各个进程。多个进程可以在cpu上交替,在k8s中就是占用cpu的比率,单位:m(millicores)100m是最小单位(等于0.1)
内存:Ki 字节   Mi-mb   Gi-gb  Ti-tb

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

如果超出范围

ready  status

 0/1        crashloopbackoff

超过资源限制,进程会被立即杀死

k8s怎么设置拉取镜像的策略:

镜像默认策略:
IfnotPresent: 如果本地镜像有,就不拉取,本地没有才会去镜像仓库拉取。默认策略
Always: 不论镜像是否存在,创建时(重启) 都会重新拉取镜像
Never:  仅仅使用本地镜像,不进行拉取镜像

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

pod探针

pod的容器健康检查------探针

探针probe、k8s对容器的定期检查,诊断。

探针的三种规则:

存活探针

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

所有的探针策略伴随整个pod的生命周期。

就绪探针

探测容器是否进入ready状态,并做好接受请求的准备。探测失败 READY 0/1 没有进入ready状态。

service会把这个资源对象的端点从当中踢出,service也不会把请求转发到这个pod。

启动探针

只是在容器的启动后进行检测,容器内的应用是否启动成功,在启动探测成功之前,所有的探针都处于禁用状态,但是,一旦启动探针结束,后续的操作不再收启动探针影响。

在一个容器当中的可以有多个探针。启动探针:只在容器启动时探测。

Probe的检查方法:

1、exec探针:  在容器内部执行命令,如果命令的返回码是0,表示成功。
适用于需要在容器内部自定义命令来检查容器的健康情况。

2、httpGet:对指定ip+端口的容器发送一个httpget的请求。响应状态码大于等于200,小于400都是成功。
适用于检查容器是否能响应http的请求,web容器(nginx,tomcat)

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

诊断结果:
1、成功 容器通过了,正常运行
2、失败 存活探针将会重启
3、未知状态 

exec探针

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: centosname: centos
spec:replicas: 1selector:matchLabels:app: centostemplate:metadata:labels:app: centosspec:containers:- image: centos:7name: centosimagePullPolicy: Nevercommand: ["/bin/bash","-c","touch /opt/123.txt; sleep 3600"]livenessProbe:exec:command: ["/usr/bin/test","-e","/opt/123.txt"]initialDelaySeconds: 3
#核心指标;表示容器启动之后多少秒来进行探测,时间不要设置的太短,可能会导致无效的探测periodSeconds: 2
#核心指标;表示探针探测的间隔时间。每隔多少秒进行检查。根据应用的延迟敏感度,这个应用非常重要,是核心组件。failureThreshold: 2
#核心指标;表示如果探测失败,失败几次之后,把容器标记为不健康。successThreshold: 1
#表示只要成功一次就标记为就绪,标记为健康,ready。只能为1timeoutSeconds: 1
#表示每次探测的超时时间,就是探测这个过程耗时,小于间隔时间,在这个秒数没必须完成探测。

httpGet探针

apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: nginx:1.22name: nginx1livenessProbe:httpGet:port: 80path: /index.htmlinitialDelaySeconds: 4periodSeconds: 2

正常示范

错误示范1

错误示范2

tcpSocket探针

apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: nginx:1.22name: nginx1livenessProbe:tcpSocket:port: 81initialDelaySeconds: 4periodSeconds: 2

总结

探针:
存活探针:检测失败之后,会杀死容器,然后重启。
探针将伴随整个容器的生命周期
exec 相当于执行了一个shell命令: 容器里面执行
shell命令执行成功:
返回码:0表示成功
成功一次就是探测成功


httpGet:对web容器发起get请求,可以添加path,指定访问的资源。返回码大于等于200 小于400 之内算成功

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

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

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

相关文章

实战:使用docker容器化服务

本文介绍使用docker安装mysql和redis,通过这两个的实战,了解一般的安装容器化服务的流程,体会服务容器化的好处 1.使用docker安装MySQL docker 拉取 mysql 镜像 docker pull mysql:5.7运行 mysql 镜像 docker run -p 3306:3306 --name mysql…

spring Security源码讲解-WebSecurityConfigurerAdapter

使用security我们最常见的代码: Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(HttpSecurity http) throws Exception {http.formLogin().permitAll();http.authorizeRequests().antMatcher…

为什么我国的计算机教育那么差?

建议看看计算机科学速成课,一门很全面的计算机原理入门课程,短短10分钟可以把大学老师十几节课讲不清楚的东西讲清楚!整个系列一共41个视频,B站上有中文字幕版。 每个视频都是一个特定的主题,例如软件工程、人工智能、…

C++:ifstream通过getline读取文件会忽略最后一行空行

getline是读取文件的常用函数,虽然使用简单,但是有一个较容易被忽视的问题,就是文件最后一行空行会被忽略。 #include <iostream> #include <fstream> #include <string> using namespace std;void readWholeFileWithGetline(string fileName) {string t…

设计模式的艺术P1基础—2.1 uml概述

设计模式的艺术P1基础—2.1 uml概述 设计模式的艺术P1基础—第2章 UML类图与面向对象设计原则 UML类图可用于描述每一个设计模式的结构以及对模式实例进行说明&#xff0c;而模式结构又是设计模式解法的核心组成部分。学一个设计模式&#xff0c;如果不能绘制和理解其结构图&am…

顺序表实现(下)(C语言)

几道相关例题,帮助大家更好理解顺序表. 文章目录 前言 一、顺序表二、创建顺序表并初始化三.删除非递减顺序表L中的重复元素四.在非递减顺序表中删除[s,t]之间的元素五.设计算法逆置顺序表L,并将序列L循环左移六.顺序表A和B的元素个数分别为m,n.A表升序排序,B表降序排序,两表中…

数据库系统原理总结之——数据库系统概述

数据库系统概述 第一章 数据库系统概述一、数据库基本概念二、数据库管理技术的发展三、数据库系统的三级模式结构四、数据库系统的运行与应用结构五、数据模型的分类 第一章 数据库系统概述 一、数据库基本概念 数据&#xff08;Data&#xff09; &#xff1a;描述事务的符号…

12306 抢票的糟糕体验

又到了一年一度的 12306 抢票时&#xff0c;和秒杀&#xff0c;抢购一样&#xff0c;这种事往往给人的体验非常差&#xff0c;去年经历过上海四月的应该深有感触。 我此前论述过随着网络带宽增加的速度超过 buffer 容量增加的速度&#xff0c;端到端拥塞控制将越来越不起作用&a…

【Leetcode】239.滑动窗口最大值(Hard)

一、题目 1、题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例1: 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[…

AI变现项目:刚做五天收益突破单日破50+,干货经验谈

今日是我单号操作的第五天。 打开今日头条&#xff0c;发现收益破新高了。 我这是一个号操作&#xff0c;10个号&#xff0c;20个号呢&#xff1f; 下面主要说说我的操作经验。 先确定领域 我是做的情感故事领域。 为什么做这个领域&#xff1f;(简单&#xff0c;原创度高…

家用洗地机哪款好用?洗地机品牌排行榜推荐

在如今的日常生活中&#xff0c;家用洗地机已经成为了家庭清洁中不可或缺的工具。然而&#xff0c;市面上各种不同品牌型号的洗地机让人眼花缭乱&#xff0c;让人难以选择。那么&#xff0c;家用洗地机现在买什么牌子质量好呢?为了解答这个问题&#xff0c;笔者选了几款品牌质…

120°AGV|RGV小车激光障碍物传感器|避障雷达DE系列安装与连线方法

120AGV|RGV小车激光障碍物传感器|避障雷达DE系列包含DE-4211、DE-4611、DE-4311、DE-4511等型号&#xff0c;根据激光飞行时间&#xff08;TOF&#xff09;测量原理运行的&#xff0c;利用激光光束对周围进行 120 半径 4m&#xff08;90%反射率&#xff09;扫描&#xff0c;获得…

鸿蒙开发解决agconnect sdk not initialized. please call initialize()

文章目录 项目场景:问题描述原因分析:解决方案:总结:项目场景: 鸿蒙开发报错: agconnect sdk not initialized. please call initialize() 问题描述 报错内容为: 10-25 11:41:01.152 6076-16676 E A0c0d0/JSApp: app Log: 数据查询失败: {“code”:1100001,“messag…

Linux的Inode号和日志服务管理

目录 一、Inode号 1.inode和block 2.查看inode信息 二、日志服务管理 1.日志的级别 2.日志的种类 3.日志的功能和日志文件的分类 4.日志的格式和分析工具 三、rsyslog日志处理系统 1、使用Rsyslog创建日志优点 2、Rsyslog配置文件解析 3.通过rsyslog将ssh服务的日志…

基于sigma-delta和MASHIII调制器的频率合成器simulink建模与仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 Sigma-Delta调制器原理 4.2 数学模型 4.3 噪声整形 4.4 MASH III调制器原理 4.5 基于Sigma-Delta和MASH III的频率合成器 5.算法完整程序工程 1.算法运行效果图预览 其误差当系统进…

Django(五)

员工管理系统(部门管理) 1.新建项目 2.创建app python manage.py startapp app012.1 注册app 3. 设计表结构&#xff08;django&#xff09; from django.db import modelsclass Department(models.Model):"""部门表"""title models.CharFiel…

sentinel相关问题及答案(2024)

数据结构和算法 1、什么是哨兵值&#xff1f;它在算法中是如何使用的&#xff1f; 哨兵值是在计算中用作标记或信号的特殊值&#xff0c;通常用于指示数据结构的边界或结束&#xff0c;或者作为检测特定条件的触发器。在算法中&#xff0c;哨兵值的使用可以简化代码并提高效…

熟悉HBase常用操作

1. 用Hadoop提供的HBase Shell命令完成以下任务 (1)列出HBase所有表的相关信息,如表名、创建时间等。 启动HBase: cd /usr/local/hbase bin/start-hbase.sh bin/hbase shell列出HBase所有表的信息: hbase(main):001:0> list(2)在终端输出指定表的所有记录数据。 …

数据通讯平台建设方案(物联网数据采集平台)

1.数据通讯平台 软件开发全资料获取&#xff1a;软件项目开发全套文档下载_软件项目技术实现文档-CSDN博客 1.1.1.系统概述 对不同的数据协议、数据模式进行采集适配。基于XX智慧平台统一数据交换标准&#xff0c;与第三方系统对接&#xff0c;实现数据交换&#xff1b;实现不…