kubernetes主件介绍与PV卷介绍

本文介绍了Kubernetes的核心组件,如kubelet、Deployment Controller和API Server,并详细阐述了Pod的运行机制、副本(replicas)管理和命名空间操作。讨论了Kubernetes的一级资源,如API版本、资源类型、元数据等。此外,文章深入探讨了Pod的健康检查机制,包括startup probe、liveness probe和readiness probe。还讲解了容器的安全上下文、资源需求和限制。最后,文章重点讲解了存储卷的概念,包括PV(Persistent Volumes)、PVC(Persistent Volume Claims)以及不同类型的存储卷插件,强调了它们在解耦存储资源与Pod生命周期中的作用。
摘要由CSDN通过智能技术生成

kubernetes主件介绍与PV卷介绍

REST资源:固定资源核心对象类型pod

​ 编排应用,编排应用所依赖的存储资源,和网络资源并且还能完成负载均衡和服务发现,还能完成名称解析以上均为k8s底层应用组件完成。

运行一到多个容器,他们基于puase容器共享名称空间和存储资源。

​ 最核心内容:定义容器,真正控制pod容器的式kubelet控制,我们称之为自主式容器

replicas:副本

​ kubelet监视所有pod资源,Deployment contrellor监视所有系统声明资源,这些资源列表都放在APIserver,一个pod中的容器都绑定在同一节点上,共享资源。

五个一级资源:

apiversion 资源类型,的信息字段与其版本号

​ kubectl api-versions

​ kubectl api-versions [–api-group=]

​ kubectl explain TYPE

kind: 资源类型对象本身的名称

metadata:对象元数据

​ name:对象名称在其所属的名称空间必须唯一

​ kube-system:自身相关系统的名称空间是系统自身的名称空间

​ default:默认ns

删除namespace会级联删除

创建名称空间:kubectl create namespace demo

查看名称空间:kubectl delete namespace demo

查看详细信息:kubectl get ns demo -o yaml

不能随便删该名称空间

lables:对象标签,字典类型的数据KV,键前缀可以省略,长度范围[key-prefix]:[value] 255:63,有些资源类型系统会为其维护一到多个lables

查看默认所有名称空间和标签:kubectl get ns --show-labels

​ kubectl get ns demo -o yaml

添加名称空间标签:kubectl label namespace demo environment=prod

移除标签:kubectl label namespace demo environment-

标签过滤: kubectl get pods -l ‘app!=myapp’ --show-labels

过滤条件赋值 等指比较,条件取反

等值过滤:= key=valve 表示存在key,且其值为vlave

​ != key!=valve 表示存在key,但且其值不为vlave或不存在key

集合过滤:存在与列表中:‘key in (valve1,valve2…)’

​ 指定的键不存在指定的列表中,或不存在该键 ‘key noin (valve1,valve2…)’

​ 存在判断 : kubectl get pods -l ‘app’ --show-labels

anntations:对象注解,元数据,不能被标签过滤器过滤,通常用于为应用提供配置

管理命令:kubectl annotate

spec: 用户期望状态

status:资源的实际状态,即是指k8s维护后的状态

通过环境变量传递参数

在容器上嵌套env字段

​ 每个环境变量需要name给出既定的名称,传递的值定义在value字段上

pod的健康状态检测机制

pod 支持的检测类型

​ stratup probe 启动探针用在应用初始化当中

​ liveness probe 周期性检测,报告kubelet,重启pod

​ readiness prode 就绪探测 未必能够正常提供服务所以要提供探测

监测机制

​ exec action : 根据指定命令的结果状态码判定

​ tcpsocket action: 根据相应TCP套接字连接建立状态判定

​ httpget action: 根据指定HTTP/https服务相应URL的相应结果判定

配置参数

​ initialDelaySeconds

​ periodSeconds

​ timeoutSeconds

​ successThreshold

​ failure Threshold

pod及容器的安全上下文

一组用来决定容器是如何创建和运行的约束条件,这些条件代表创建和运行容器时使用的参数

给了用户为pod,或容器定义特权和访问控制机制 user 用户映射改变权限,但在内核级没有映射权限

pod容器的安全上下文设置主要包括以下几个方面

自主访问控制DAC

容器进程运行身份及资源访问权限

linux capabilities 特权

seccomp

APP Armor

selinux

privilgege mode 特权模式

privilgege escalation 特权升级

资源需求和资源限制

豪核相当于内存超分

​ 资源需求(requeste) 最低保障

​ 定义需要系统预留容器使用的最小资源可用值

​ 容器运行时可能用不到这些额度的资源,但用到时必须确保有相应数量的资源可用

​ 资源需求对的定义会影响调度器的决策

​ 资源限制 (limits)

​ 定义该容器可以事情使用资源的最大可用值,超出该值额度的资源使用请求会被拒绝

​ 该限制需求大于requests的值,但系统在其某项资源紧张时容器会收回超分部分

关于容器设计模式

​ 单容器模式:单一容器形式运行的应用

​ 单节点模式: 由强耦合的多个容器协同共生

​ 多节点模式: 基于特定部署单元实现分布式算法

单节点容器模式

一种跨容器的设计模式

​ 目的是在单个节点之上同时运行多个共生关系的容器,因而容器管理需要将他们作为一个原子单元进行统一调度

​ pod概念就是这个模式的实现之一

sideccar 模式

​ pod 中的应用由主应用程序(通常基于HTTP协议的应用程序)以及一个sidecar容器组成

​ 辅助容器用于为主容器提供服务以增强主容器的功能,是主应用程序必不可少的一部分但却未必非得是运行为容器的一部分

Ambassador模式

​ pod应用由主应用程序和一个ambassador容器组成

​ 辅助容器代表主容器发送网络请求至外部环境中,因此可以将其视为主容器大使代表

adapter模式

​ pod中的容器由主应用程序和一个adapter容器组成

​ adapter 容器为主应用程序提供一致的接口,实现了模块复用,支持标准化和规范化主容器应用程序的输出以便于外部模式进行聚合

init container模式

​ 运行在初始化之前,一个pod中可以同时定义多个init容器

​ init容器负责以不同于主容器的生命周期来完成那些必要的初始化任务包括在文件系统上设置特殊权限;数据库模式设置或为主应用程序提供初始化数据等,但这些初始化逻辑无法包括在镜像服务上,或出于安全原因原因程序镜像没有初始化活动的权限

​ init容器需要串行运行,且所有init容器均在正常终止后,才能运行主容器

存储卷基础

从概念上讲,存储卷是可供pod中的所有容器访问的目录

	pod规范中声明的存储卷来源决定了目录的创建方式,使用的

介质存储以及目录的初始内容

​ 存储卷插件(存储驱动)决定了支持的后端存存储介质或服务,并且内置了很多存储卷插件

​ pod在规范中需要指定包含卷以及这些卷在容器中的挂载路径

​ 存储卷对象并非k8s一等公民,它必须依附在pod上,因而卷本身的生命周期同pod,但其后端的存储及其相关数据的声明周期通常要取决于存储介质

存储卷类型和相应的插件

in tree 存储卷插件

​ 临时存储卷插件

		emptyDir

​ 节点本地存储卷

​ hostpath ,local

​ 网络卷存储

​ 文件系统:nfs,ceph,cinder

​ 块设备:FC,RBD,ISCSI vsphere

​ 存储平台:scaleIO,Quobyte,portworxvolume

​ 云存储:awsElasticBlockstore(EBS), (PD),azure file/disk

特殊存储卷:

​ secret,configmap,downwardapi,projected

扩展接口:

​ CSI,Flex volume (最早允许用户自定义对接)

out-of-tree 存储卷插件(带外存储)

NFS存储

持久卷

pv和pvc

在pod级别定义存储卷有俩个弊端

​ 卷对象的生命周期无法独立于pod之外而存在

​ 用户必须熟悉可用的存储及其详情才能在pod上配置和使用卷

pv和pvc可以降低这种耦合关系

​ pv是集群级别的资源,负责将存储空间引入到集群中,通常由管理员自定义

​ PVC是名称空间级别的资源,由用户定义,用于在空闲的pv申请使用过滤符合条件的pv,与选定的pv是one to one 的关系

​ 用户在pod上通过pvc插件请求绑定定义好的资源

​ storage class 资源支持pv动态预置(provision)通过模板按需创建,做到职能分离

PV资源类型

pv是标准的资源类型,出来负责关联至后端存储系统外,它通常还需要定义支持特定的存储特性

​ volumemode :当前pv卷提供存储空间模型,分为块设备和文件系统俩部分

​ storage class :当前PV隶属的存储类

​ accessmode:支持的访问类型,分为单路读写,多路读写,多路只读

​ size:当前pv允许使用的空间上限

在对象言数据上,能够按需定义标签

一般需要定义回收资源:Retain,Delete

PVC资源

pvc也是标准的资源类型,它允许用户按照指定期望的存储特性,并以之位条件按照特定顺序进行PVC筛选

volume mode > lableselector > storage classname > access mode >size

支持动态预置的存储类,还根据PVC的条件按需完成PV创建

storage class 资源

kubernetes支持的标准类型资源

为管理pv资源之便而按需创建的存储资源类型

是pvc筛选pv的过滤条件之一

为动态创建pv提供模板

属于集群级别资源

存储卷的具体操作的管理操作,由相关的控制器向插件发起调用请求来完成

​ AD控制器: 负责存储设备的Attach/Detach

​ Attach: 将设备附加到目标节点

​ Detach:将设备从目标节点上拆除

​ 存储卷管理器:负责完成卷的Mount/Umount操作,以及设备的格式化操作等

​ PV控制器:负责PV/PVC的绑定,生命周期管理,以及存储卷操作

Scheduler:特定调度插件的调度决策会受目标节点上的存储卷影响

​ AD控制器: 负责存储设备的Attach/Detach

​ Attach: 将设备附加到目标节点

​ Detach:将设备从目标节点上拆除

​ 存储卷管理器:负责完成卷的Mount/Umount操作,以及设备的格式化操作等

​ PV控制器:负责PV/PVC的绑定,生命周期管理,以及存储卷操作

Scheduler:特定调度插件的调度决策会受目标节点上的存储卷影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值