精句k8s资源管理概述

Posted Friends of the wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了精句k8s资源管理概述相关的知识,希望对你有一定的参考价值。

目录


一、计算资源

计算资源是什么?
主要指应用程序运行时所需的cpu资源和内存资源。

k8s如何实现计算资源管理?

资源分区管理:每个node都提供了cpu、内存、网络、磁盘等可以从分区的方式宏观的进行资源划分。

k8s通过三种级别提供计算资源的管理。

Namespace:提供总体的资源使用量限制,一方面可以设置pod可使用到的计算资源总量上限;另一方面可以设置某种类型对象的总数上限如:可以创建的Pod、Service、secret、PVC等资源对象数量。

Pod:可以对多个容器组成的pod进行资源限制。

Container:对cpu和内存资源的配置项包括两种,一种是资源请求(resource requests) 表示容器希望被分配到的资源量;另一种是资源限制(resource limits)表示容器能用的资源上限,还可设置默认的request和limit值。

二、网络资源

1.跨主机容器之间网络互通

overlay网络是指在不改变现有网络配置的前提下,通过某种额外的网络协议,将原ip报文封装,形成一个逻辑的新网络,需要通过CNI插件方式部署容器网络。

flannel:是CoreOS公司为k8s集群设计的一个overlay网络方案,通过实现以下两种功能,实现各node上的容器之间网络互通。

1)为每个node上的docker0网桥配置一个互不冲突的IP地址池
2)为各node的docker0虚拟网络建立一个覆盖网络(overlay network)通过这个覆盖网络,将数据包原封不动地传递到目标容器中。

支持以下几种模式
VxLAN:使用Linux kernel的VxLAN功能完成创建和管理。
UDP:使用UDP完成封包和解包的操作。
host-gw:将主机当作网关使用,要求所有主机都在同一个局域网内,保证二层网络联通。

2.多租户之间和服务之间的网络隔离

通过由第三方网络组件提供的网络策略管理

3.集群边界路由器Ingress管理

Ingress与service的区别,service仅能作用与k8s集群内的应用访问;Ingress可以支持集群外应用的访问。可以通过对Ingress资源对象的配置,将不同URL的访问请求转发到后端不同的service,可以实现7层负载均衡功能,通过Ingress控制器将跳过kube-proxy提供的4层负载均衡,直接转发到service的后端pod,以提高网络转发效率。

常用的Ingress策略
1)将请求转发到单个后端服务上
2)将到同域名不同URL的请求转发到不同的后端服务
3)将到不同域名的请求转发到不同的后端服务
4)不使用域名转发规则

4.集群DNS域名服务管理

coreDNS组件:具有灵活、可扩展的插件式模型,各种插件根据请求提供不同的操作,例如:日志记录、重定向、自定义DNS记录等

自定义DNS服务器和上游DNS服务器
目前在pod定义中支持两个DNS策略:default和ClusterFirst,默认是ClusterFirst。

三、存储资源

对存储资源的使用需求通常包括以下几个方面:

1)应用配置文件、密钥管理
2)应用的数据持久化存储
3)在不同的应用间共享数据存储

k8s支持的volume类型

1)临时目录(随着pod销毁而销毁)
emptyDir

2 ) 配置类(以volume形式挂载到pod内)
ConfigMap:将保存在ConfigMap资源对象中的配置文件信息挂载到容器内的某个目录下
secret:将保存在secret资源对象中的密码密钥等信息挂载到容器内的某个文件中
downwardAPI:将数据以环境变量或文件的形式注入容器中
gitRepo:将某Git代码库挂载到容器内的某个目录下

3)本地存储类
hostPath:将宿主机的目录或文件挂载到容器内进行使用
local:将本地存储以PV形式提供给容器使

4)共享存储类
PV:将共享存储定义为一种“持久存储卷”,可被多个容器应用共享使用
PVC:用户对存储资源一次“申请”,像使用本地目录一样使用

存储资源的应用场景

emptyDir将存储放在容器内部
优点:配置简单。便于容器的水平扩展;存储性能优,几乎没有I/O损耗
缺点:无法持久化保存困难,每个容器实例存储的文件相互无关联
适用:系统运行过程中产生的临时文件

hostPath将存储挂载在外部宿主机上
优点:可永久保存数据;存储性能优,几乎没有I/O损耗
缺点:多实例应用在同一台宿主机上的目录配置复杂,要求各实例互不干扰;另外,如果历史数据在后续的业务处理过程中仍然需要用,则容器应用将对Node宿主机形成绑定关系,不利于故障恢复时选择其他可用的node重建。
适用:有状态类型的容器应用,以及对磁盘I/O要求非常高的应用,例如:mysql、MongoDB

PV或StorageClass使用外部共享存储
优点:配置简单,数据的持久化、备份都由共享存储提供了解决方案,便于水平扩展。
缺点:读写经过网络传输,存储性能比直接在物理机差
适用:有状态类型的容器应用,以及对磁盘I/O要求不高的应用,例如:小型数据库类应用。

四、镜像资源

包括对镜像生命周期的管理、多用户权限管理、远程复制、审计

Harbor的特性:
基于角色的访问控制
镜像复制
UI管理界面
审计日志
提供API供外部客户端调用
漏洞扫描

功能组件:
proxy:代理,接受客户端请求,然后转发给后端不同的服务
registry:负责docker镜像的存储,并处理docker push/pull命令
core service:核心服务,包括web管理界面、webhook和token服务
database:保存镜像相关信息的数据库
job service:负责到另一个镜像库的镜像复制任务
log collector:对各组件的日志统一收集管理

以上是关于精句k8s资源管理概述的主要内容,如果未能解决你的问题,请参考以下文章

Docker&K8s---K8s跨宿主机pod通信之Flannel

Docker&K8s---K8s跨宿主机pod通信之Flannel

k8s APIserver 安全机制之 rbac 授权

k8s之存储卷及pvc

[论文阅读] (19)英文论文Evaluation(实验数据集指标和环境)如何描述及精句摘抄——以系统AI安全顶会为例

k8s容器的资源限制