k8s之pod基础

k8s之pod基础 

pod:

pod是k8s中最小的资源管理组件

pod也是最小化运行容器化的应用的资源管理对象

pod是一个抽象的概念,可以理解为一个或者多个容器化应用的集合

在一个pod当中运行一个容器是最常用的方式

在pod当中同时运行多个容器,在pod当中可以同时封装几个需要耦合的互相协作的容器

这些多个容器共享资源,也可以互相协作组成一个service单位

注意:

不论是运行一个容器还是多个容器,k8s管理的都是pod,而不是容器

一个pod内的容器,必须都运行在同一个节点。基于现代容器技术的要求,一个pod运行一个容器,一个容器只运行一个进程

横向扩展,方便扩缩容

解耦,一个pod内运行多个容器,耦合度太高,一旦一个进程失败,整个pod将全部失败,实现解耦,基于pod可以创建多个副本,实现高可用和负载均衡

管理方便,简单直观

pod内的容器共享资源。共享机制:pause底层基础容器来提供共享资源的机制

pause是基础容器,也可以成为父容器,管理pod内容器的共享操作

pause还可以管理容器的生命周期

k8s提供了pause容器

pause的作用:

1、为pod内的所有容器提供了一个命名空间

2、启动容器的pid命名空间,每个pod中都作为pid为1的进程(init进程),回收僵尸进程

3、创建pod时,先创建pause容器,然后拉取镜像,生成容器,形成pod

第一步:master节点发出指令,pod使用的镜像nginx  pod的副本数

第二部:kube-scheduler来分配执行的node节点

第三步:node节点的kubelet收到master的指令,拉pause,再拉nginx:1.22 再创建副本1

第四步:pause容器掀起的,提供命名空间,进程管理pid号1,来为pod内的容器提供共享服务以及容器的进程管理

pause容器共享两种资源

网络:每个pod都会被分配一个集群内部的唯一ip地址。pod内的容器共享网络,pod再集群内部的ip地址和端口

pod内部的容器可以使用localhost互相通信。也就是说pod中的容器与外部通信时,从共享的资源当中进行分配,宿主机的端口映射

存储:

pod可以指定多个共享的volume,pod内的容器共享这些vlome

volume可以是实现数据的持久化

防止pod重新构建之后文件消失

总结:

每个pod都有一个基础容器pause容器

pause容器对应的镜像属于k8s集群的一部分。创建集群就会有pause这个基础镜像

pod里面包含了一个或者多个相关的容器

pod外再设置一个基础镜像:

1、pod内部有一组容器,挂了一个,就算整个pod失效了吗?引入pause禁止,代表整个容器的组的状态

可以解决对pod内部容器整体状态的判断

2、pod内的容器共享ip  共享volume,解决了容器内网络通信的问题,也解决了容器内部文件共享的问题

pod的分类:

自主式pod:pod不会自我修复,pod内容器的进程终止,被删除,缺少资源被驱逐,这个pod没有办法自愈

deployment daemanset

控制器管理pod:滚动升级,可以自愈(自动重启),可以管理pod的数量以及pod的扩缩容

pod生命周期:

1、pending 挂起

pod已被创建,但是尚未被分配到运行的node节点(如果一直pending,那么有可能是节点上资源不够,需要等待其他pod的调度)

2、running:运行中,pod已经被分配到了node节点,pod内部的所有容器都已经启动,运行状态正常

3、complete:容器内部的进程运行完毕,正常退出,没有发生错误

4、faild:pod中的容器非正常退出,发生了错误,需要通过查看详情和日志来定位问题

5、UNkown:由于某些原因,k8s集群无法获取pod的状态。(一般都是APIserver出了问题

6、terminating:终止中,pod正在被删除,里面的容器正在终止。终止过程中,资源回收,垃圾清理,以及终止过程中需要执行的命令

创建pod的容器分类:

1、基础容器:pause

2、init容器(初始化容器):init

3、业务容器

init容器的作用:

环境变量

可以在创建的过程中为业务容器定制好相关的代码和工具

init容器独立与业务容器,他是单独构建的一个镜像,对业务容器不产生任何安全影响

init容器能以不同于pod内应用容器的文件系统视图运行。secrets的权限。应用容器无法访问secerts的权限

总结:init容器提供了应用容器运行之前的先决条件,提供了一种阻塞或者延迟机制来控制应用容器的启动。只有前置条件满足,才会创建pod的应用容器

1、在pod的启动过程中,启动容器时按照初始化容器先启动,每个容器必须在下一个容器启动之前,要成功退出

2、如果运行失败,会按照容器的重启策略进行指定动作,restartPolicy重启策略:  Always  never  OnFailure(非正常退出才会重启)

3、所有的init容器没有成功之前,pod是不会进入ready状态的

init容器与service无关,不能对外提供访问

4、如果重启pod,所有的init容器一定会重新执行

5、如果修改init容器的spec(参数),只限制于image,其他的修改字段都不生效(基于deployment)

6、每个容器的名称都要唯一,不能重复

init容器用yaml文件的方式编写:

apiVersion: v1

kind: Pod

metadata:

  name: nginx-init

spec:

  containers:

  - name: nginx

    image: nginx:1.22

#定义的业务容器

#定义了两个init容器,创建完pause之后,分别运行centos centos1之后,才会拉起nginx

  initContainers:

  - name: init-centos

    image: centos:7

    command: ["echo","hello,world"]

  - name: init-centos1

    image: centos:7

    command: ["echo","i am ready"]

#k8s的pod的重启策略(基于容器的状态)

#always:只要容器退出,总是重启,无论容器的状态码是否正常。默认策略,可以不加

#Never:只要容器退出,不论是否正常,都不重启

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

#在deployment的yaml文件当中,重启的策略只能是always

总结:

pause容器:底层容器/基础容器

提供pod内容器的网络和存储共享,以及pod内容器退出之后资源回收

init容器:人为设定的,业务容器启动之间的必要条件

pod的生命周期:

1、pause基础容器

2、init容器------全部成功退出------业务容器

3、poststart prestop容器的钩子

启动时命令和退出时的命令

4探针:探测容器的健康状态,伴随pod

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

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

相关文章

[机缘参悟-123] :实修 - 东西方各种思想流派实修的要旨与比较?

目录 前言: 一、东方各种思想流派实修的要旨? 1.1 儒、释、道、法的主要思想 1.2 儒、释、道、法各种追求的目标 1.3 儒、释、道、法各自修行的法门或修行的途径 二、西方灵修的各种派别的要旨? 2.0 西方灵修的各种派别 2.1 玛雅星系…

Java异常处理解析

在 Java 编程中,异常处理是一种重要的机制,用于处理程序运行时可能发生的意外情况。以下是对 Java 异常处理的解析: 异常的概念:异常是指在程序执行过程中发生的意外事件,可能导致程序无法正常运行。Java 中的异常可以…

Qt QRadioButton单选按钮控件

文章目录 1 属性和方法1.1 文本1.2 选中状态1.3 自动排他1.4 信号和槽 2 实例2.1 布局2.2 代码实现 Qt中的单选按钮类是QRadioButton它是一个可以切换选中(checked)或未选中(unchecked)状态的单选按钮单选按钮常用在“多选一”的场…

【算法题】44. 通配符匹配

题目 给你一个输入字符串 (s) 和一个字符模式 (p) ,请你实现一个支持 ? 和 * 匹配规则的通配符匹配: ? 可以匹配任何单个字符。 * 可以匹配任意字符序列(包括空字符序列)。 判定匹配成功的充要条件是:字符模式必须能…

分布式全局id

分布式全局id snowflake 算法是 twitter 开源的分布式 id 生成算法,采用 Scala 语言实现,是把一个 64 位的 long 型的 id,1 个 bit 是不用的,用其中的 41 bits 作为毫秒数,用 10 bits 作为工作机器 id,12 …

基于sprinmgboot实习管理系统源码和论文

随着信息化时代的到来,管理系统都趋向于智能化、系统化,实习管理也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而实习管理…

前端er们,你真的会用useState么?

React开发者们,我们都喜欢useState hook强大且简单的功力,但事实上,即使是经验最丰富的代码员也可能出错。 当涉及到在React中管理状态时,一个错误可能导致bug、性能问题,甚至更糟糕的是你的工作岌岌可危。 在本文中,我们将揭示5个需要你远离的常见useState错误。 继续关注,…

人工智能复习

机器学习中线性回归和逻辑回归: 机器学习的分类: 监督学习和无监督学习,半监督学习 监督学习(Supervised Learning): 监督学习是一种利用带有标签(标记)的数据进行训练的机器学习…

使用Windbg动态调试目标进程的一般步骤详解

目录 1、概述 2、将Windbg附加到已经启动起来的目标进程上,或者用Windbg启动目标程序 2.1、将Windbg附加到已经启动起来的目标进程上 2.2、用Windbg启动目标程序 2.3、Windbg关联到目标进程上会中断下来,输入g命令将该中断跳过去 3、分析实例说明 …

【大厂算法面试冲刺班】day1:数据结构先导课-链表、列表

链表 /*链表结点类*/ class ListNode{int val; //结点值ListNode next; //指向下一结点的指针(引用)ListNode(int x){val x;} //构造函数 }在链表中查找值为target的首个结点 int find(ListNode head, int target){int index 0;while(head ! null){i…

鸿蒙HarmonyOS学习手册_入门篇

鸿蒙HarmonyOS学习手册_入门篇 文章目录 鸿蒙HarmonyOS学习手册_入门篇入门快速入门开发准备基本概念UI框架应用模型工具准备 构建第一个ArkTS应用(Stage模型)-快速入门-入门创建ArkTS工程ArkTS工程目录结构(Stage模型)构建第一个…

【笔记】Helm-2 如何使用-3 Chart发布操作用以自动化GitHub的页面Chart

Chart发布操作用以自动化GitHub的页面Chart 该指南描述了如何 使用Chart发布操作 通过GitHub页面自动发布chart。Chart发布操作是一个将GitHub项目转换成自托管Helm chart仓库的GitHub操作流。使用了 helm/chart-released CLI工具。 Helm Chart Releaser Actions GitHub Ma…

Vue-10、Vue键盘事件

1、vue中常见的按键别名 回车 ---------enter <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>键盘事件</title><!--引入vue--><script type"text/javascript" src"h…

使用Vivado Design Suite平台板、将IP目录与平台板流一起使用

使用Vivado Design Suite平台板流 Vivado设计套件允许您使用AMD目标设计平台板&#xff08;TDP&#xff09;创建项目&#xff0c;或者已经添加到板库的用户指定板。当您选择特定板&#xff0c;Vivado设计工具显示有关板的信息&#xff0c;并启用其他设计器作为IP定制的一部分以…

以数据资产入表为抓手,推动数据资产化

在数字化时代&#xff0c;数据已经成为企业的重要资产。数据资产化是将数据视为一种有价值的资产&#xff0c;对其进行有效管理和利用的过程。而数据资产入表则是将数据资产纳入财务报表&#xff0c;以反映其价值和对企业财务状况的影响。本文亿信华辰 将深入探讨数据资产化与数…

每天学习一点点之 Spring Boot 1.x 升级 2.x 之 allowBeanDefinitionOverriding

最近组内大佬正在进行 Spring Boot 版本的升级&#xff0c;从 1.x 版本升级到 2.x 版本。在查看代码变更时&#xff0c;我注意到我之前编写的一个名为 ShardingRuleStrategy 的类被添加了 Primary 注解。这个类在原来的代码中被标记为 Component&#xff0c;同时也在 API 中被定…

k8s-----存储卷(数据卷)

容器内的目录和宿主机的目录进行挂载。 容器的生命状态是短站的&#xff0c;delete删除&#xff0c;k8s用控制创建的pod&#xff0c;delete相当于重启&#xff0c;容器的状态也会回复到初始状态。 一旦回到初始状态&#xff0c;所有的后天编辑的文件都会消失。 容器和节点之间创…

飞致云1panel v1.9.2 + 雷池WAF社区版 v4.0

可能有许多人都有这个需求&#xff1a;为自己的个人站点套上WAF&#xff0c;增加安全性&#xff0c;本文将介绍如何将1panel面板深度结合长亭雷池防火墙&#xff0c;实现为个人站点套上WAF并且自动续签ssl证书。 由于1panel和雷池WAF功能更新较快&#xff0c;上一篇文章已经不…

Kubernets(K8S)启动和运行01 快速入门

简介 Kubernetes is an open source orchestrator for deploying containerized applications. It was originally developed by Google, inspired by a decade of experience deploying scalable, reliable systems in containers via application-oriented APIs. Kubernete…

软考学习笔记--操作系统概述

操作系统是计算机系统中最重要&#xff0c;最基本的系统软件&#xff0c;它位于硬件和用户之间&#xff0c;一方面可以向用户提供接口&#xff0c;方便用户使用计算机&#xff1b;另一方面能管理计算机软硬件资源&#xff0c;以便充分利用他们。从资源管理的角度来看&#xff0…