• 【精句】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:对各组件的日志统一收集管理

  • 相关阅读:
    java进阶1——JVM
    Linux 软件包管理器 yum
    《uni-app》一个非canvas的飞机对战小游戏实现-敌机模型实现
    js实现一行半文本的截取
    有哪些编辑图片加文字的软件?这些软件值得收藏
    Android超简单的显示网络图片方法
    SPL比SQL更难了还是更容易了?
    1V1音视频实时互动直播系统
    IDEA工具第二篇:自定义Java方法注释模板
    Mysql存储时间,对应Api及对应的java属性
  • 原文地址:https://blog.csdn.net/Friendsofthewind/article/details/126034486