• 容器技术 -- 简单了解 Kubernetes 的对象


    什么是Kuerbebates(k8s)

    k8s 是谷歌开源的容器集群管理,是 google 大规模容器管理技术 google bolg 的开源版本,主要功能包括:

    • 基于容器技术的应用部署、维护和滚动升级
    • 负载均衡和服务发现
    • 跨机器和跨地区的集群调度
    • 自动伸缩
    • 无状态服务和有状态服务
    • 插件机制保证扩展性

    k8s 是一个声明式的系统

    声明式系统:
           仅限于描述要达到什么目的,如何达到目的交给系统去操作。
           直接声明:直接说明我想要达到什么目的
           间接声明:不直接说明我需要达到什么目的,只会把我的需求放在指定的位置,可以在方便的时候拿来处理。
    命令式系统:
           给出指令之后需要获取到系统的反馈才能决定下一步怎么做,即系统按照我们的指令一步步执行。

    k8s的所有管理能力构建在对象抽象的基础上,核心对象包括:

    • Node:计算节点的抽象,用来描述计算节点的资源抽象,健康状态等。
    • Namespace:资源隔离的基本单位。
    • Pod:用来描述应用实例,包括镜像地址,资源需求等。
    • Service:提供将应用发布成服务的功能,本质上是负载均衡和域名服务的声明。

    k8s 架构

    图源网络
    请添加图片描述k8s 会将一部分节点当作 master 节点(控制节点),剩下的节点都是 worker node

    MASTER 节点

    etcd

    基于 Raft 协议的分布式 key-value 存储数据库,可用于服务发现、共享配置以及一致性服务

    Api Server

    整个云平台的 api 网关:即是这个云平台集群的入口,用来接收所有用户的请求,然后将需要保存的用户请求保存在一个 etcd
    主要功能:

    • 提供集群管理的 REST API ,包括 认证、 授权 、准入
    • 提供其他模块之间数据交互和通知的枢纽,只有 API SERVER 可以查询或修改数据,能直接操作 etcd
    • 提供 etcd 缓存以减少集群对 etcd 的访问
    • etcd 一样,支持监听机制

    Controller

    controller 里面包含各种对象控制器,比如 node controller 监控 node 节点的健康状态,从而判断节点是不是要做一些操作,service controller 可以判断创建的 service 是不是需要创建负载均衡等。

    Scheduler

    调度器:监控当前集群所有未调度的pod。会先判断这个 pod 之前有没有做过调度,如果没有就会创建调度任务,调度完之后将数据保存在 etcd 中。
    调度器其实是一个特殊的控制器,工作原理一致。
    调度阶段:
    1、预测阶段: 过滤不能满足业务需求的节点,如资源不足、端口冲突等
    2、最优选阶段:对满足需求的节点进行评分,并选择最优节点
    3、绑定阶段:将最优节点和 pod 绑定

    WORKER 节点

    kubelet

    • 上传节点的各种信息到 Api Server,包括健康状态、资源利用率等。
    • 从不同源获取 pod 清单,并处理当前节点被调度的 pod 的生命周期,按需求启停 pod 的核心组件
    • 负责 pod 的健康检查和状态汇报

    kube-proxy

    • 监控集群中用户发布的服务,并完成负载均衡
    • 每个节点上的 kube-proxy都会配置相同的负载均衡策略,整个集群的服务发现建立在分布式负载均衡之上,服务调用无需经过额外的网络跳转

    K8S 插件

    • kube-dns:负责整个集群提供 DNS 服务
    • Ingress Controller:未服务提供外网入口
    • MetricsServer:提供资源监控
    • Dashboard:提供GUI
    • Federation:提供跨可用区的集群
    • Fluentd-elasticsearch:提供集群日志采集、存储与查询
  • 相关阅读:
    imx6获取和同步时间
    UDS知识整理(五):安全访问——0x27服务
    Ablebits Ultimate Suite for Excel
    【文章阅读】Frustratingly Simple Few-Shot Object Detection
    React---组件进阶
    【面试心得】WebBench 整理
    Linux C语言 vim编辑器 使用 sqlite3数据库 makefile 的网络编程 qq 聊天室项目
    .Net Core 配置文件读取 - IOptions、IOptionsMonitor、IOptionsSnapshot
    改进的DBSCAN算法(附open3d python代码)
    SpringBoot 整合ORM
  • 原文地址:https://blog.csdn.net/qq_40096897/article/details/125961583