4 存储与资源管理

k8s卷管理

k8s和docker默认使用本地的主机磁盘

容器卷生命周期

在资源短缺下,k8s可能会停止容器,在相同或另一个k8s节点上重新启动容器

Pod内共享卷

k8s中通一个Pod的多个容器可以共享相同IP地址、网络端口和IPC,程序间可以通过localhost网络相互通信,但文件系统是相互隔离的

示例:同个Pod中Tomcat和Nginx容器,可以通过localhost互相通信,但不能访问彼此的配置文件

无状态和有状态程序

无状态应用程序中使用临时卷,容器上应用程序不需要保留数据

示例:通过k8s中的emptydir卷共享日志文件

有状态应用会使用持久卷,如ES,即使容器重新启动也必须保留数据

不需要在相同pod中配置ES容器,ES可独立扩展

Kubernetes持久卷和动态配置

Persistent Volumne(PV),如AWS EBS、Google Persisten Disk

支持网络(分布式)文件系统,如NFS、ClusterFS、Ceph

还支持块设备,如iSCSI和FC

持久卷抽象层声明

直接将持久卷指定到配置文件中,与特定基础设施构成紧耦合

从容器角度,pod定义不应锁定到特定环境,基础设施因环境而异,理想pod应该是灵活的抽象的,仅指定卷名和挂载点

k8s提供抽象层,在pod和持久卷之间关联,称为持久卷声明 persistent volume claim,PVC,使基础设施被分离出来,k8s管理员只需预先分配所需容量的持久卷,然后k8s将绑定持久卷和PVC

动态配置和存储类型

PVC为持久卷管理提供灵活性,但是预分配持久卷池不具备成本效益,尤其公有云

k8s通过支持持久卷的动态配置dynamics provision来改善这种情况

k8s管理员定义持久卷provisioner,称为存储类storageClass,持久卷声明要求storageClass动态分配持久卷,后将其与PVC关联

使用状态集(StatefulSet)管理具有持有卷的Pod

状态集和持久卷组合功能强大,可以使应用程序变得更灵活,从而更方便进行扩展

状态集涵盖了Pod和持久卷之间的绑定,当Pod扩展或收缩时,将同时创建或删除Pod和持久卷

Pod的创建过程是串行的,如当请求k8s扩展另外两个StatefulSet时,k8s先创建持久卷声明1和po1,再创建持久卷声明2和pod2

即使一个pod已销毁,状态集也会保留pod的位置(名称、IP、相关metadata)及持久卷,然后尝试重新创建一个容器,重新分配到同一个pod并挂载相同的持久卷

可帮助控制Pod、持久卷的数量,同时通过Scheduler保证应用程序始终在线

具有持久卷的状态集需要动态配置和存储类,状态集时刻扩展的,添加pod时,k8s需要知道如何配置持久卷

持久卷示例

ES集群

ES使用多个节点来构建集群,有不同类型的节点,如master、data、coordinate,每个节点在集群中有不同的角色和职责,相应的k8s配置和持久卷应与之保持一致

示例:ES节点组件和角色

ES主节点:唯一,其他节点需要指向它进行注册,使用statefulSet分配固定的DNS名称

ES备份节点:主节点的备用节点,扩展StatefulSet来分配,无需另外创建k8s对象

ES数据节点:负责存储数据,如有更大的数据量或更多查询请求,使用StatefulSet和持久卷进行横向扩展,不需要DNS名称,不需要为ES数据节点创建服务

ES协调节点:负责负载均衡,需要水平扩展以处理更多来自外部的HTTP流量,并不需要对数据持久保存,可以将复制集ReplicaSet与服务结合使用,对外暴露HTTP接口

Kubernetes资源管理

资源服务质量(QoS)

可以关注管理员按不同优先级分配和管理容器

根据Pod设置,按优先级将pod分为三类:Guaranteed Pod->Burstable Pod->BestEffort Pod

配置BestEffort Pod

QoS中最低优先级,资源短缺下,该类Pod将首先被终止(资源限制设置为0或不指定)

BestEffort Pod常用于无状态和可恢复的应用程序,如worker进程、代理或缓存节点

配置Guaranteed Pod

QoS中最高优先级,资源短缺下,k8s调度器会长期保障该类容器到最后

用来运行关键任务,如带持久卷的后端数据库、主节点

需要将资源限制和资源请求显示设置为相同值,或仅设置资源限制

如不确定应用程序所需CPU和内存资源,可先试用Burstable类型观察一段时间

配置Burstable Pod

资源限制配置不是强制性的,当节点资源充足时,pod可以尽可能的消耗CPU和内存

任何类型的应用都可以使用

如已知道应用程序最小内存大小,可指定请求资源,有助于k8s调度器分配正确的节点

QoS颗粒度是Pod级别而不是容器级别,如具有两个容器的Pod,容器A容器GB配置B,则选B

资源使用监控

如资源不足,Pod可能无法由k8s调度器进行部署

kubectl describe nodes可以查看分配资源

如节点已运行了Burstable Pod配置,但没资源分配,则不用执行该pod,需要k8s节点提供更多资源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349