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:特定调度插件的调度决策会受目标节点上的存储卷影响