【K8s】专题二:Kubernetes 相关概念

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!

公众号二维码


目录

一、基本概念

二、对象介绍(部分)

三、组件介绍


一、基本概念

1、Master 节点

Kubernetes 集群的管理节点,主要作用:

  • 集中管理和控制整个 Kubernetes 集群
  • 调度和分配容器应用程序到 Node 节点上
  • 监控集群中的节点和应用程序的状态
  • 提供 API 和命令行工具,用于管理和操作集群

2、Node 节点

Kubernetes 集群的资源节点,主要作用:

  • 是运行容器应用程序的实际节点
  • 运行容器运行时(如 Dockerd 或 Containerd)和 Kubernetes 代理(kubelet)
  • 接收 Master 节点分配的应用程序任务,并启动、停止和监控容器的生命周期
  • 执行容器网络和存储的配置和管理
  • 提供资源(CPU、内存等)和服务(如服务发现和负载均衡)

3、API 对象

Kubernetes 集群的管理操作单元,包括 Pod、Deployment、Service、ConfigMap、Secrete 等。

每个 API 对象都有三大类属性:

  • metedata:对象元数据
  • spec:对象规范,用于描述对象的预期状态
  • status:对象状态

Kubernetes 集群的管理操作都是声明式的,可以避免操作丢失或多次运行。

4、资源清单

Kubernetes 集群是一个完全以资源为中心的系统,所有对象都使用资源清单 manifest(YAML 或 JSON 格式) 来定义。
 


二、对象介绍(部分)

1、Namespace

命名空间,是对一组资源和对象的抽象集合,用于对 Kubernetes 集群中的资源进行隔离。

特殊的是,Node, PersistentVolume,StorageClass 等部分资源不属于任何 Namespace。

2、Pod

Kubernetes 集群调度的最小单位,是容器的二次封装。

  • 每个 Pod 由一个根容器(Pause)和若干个业务容器组成,业务容器通过根容器共享网络和存储
  • 每个 Pod 表示某个应用程序的一个实例

3、Label

标签,用于实现对象的分类和分组。

4、Deployment

无状态控制器,用于管理 Pod 副本。

创建 Deployment 时需要指定两个东西:

  • Pod 模版:用于创建 Pod 副本
  • Label 标签:用于监控 Pod 副本

5、ReplicaSet

副本集控制器,是 Pod 副本的抽象,用于对 Pod 副本进行伸缩和版本管理。

6、Service

Service 对象将背后的 Pod 聚合在一起,以单一入口的方式对外提供服务。

它定义了 Pod 的访问方式,使得其他应用程序通过 Service 对象即可访问到这些 Pod,而无需关心 Pod 的 IP 地址、端口号等。

  • 匹配 Label 标签的 Pod IP 和端口列表组成 Endpoints(负载均衡列表),由 kube-proxy 将服务 IP 负载均衡到这些 Endpoints 上
  • 每个 Service 都会自动分配一个 clusterIP(VIP)和 DNS 域名,其他容器可以通过该地址或 DNS 来访问服务,而不需要了解后端应用程序的运行

🔔 关于各类对象的详细概念,请前往官方文档自行查阅:Concepts | Kubernetes


三、组件介绍

1、Master 节点核心组件

  • etcd:存储 Kubernetes 集群的后端数据(即集群的状态信息),是一种键值数据库
  • kube-apiserver:资源操作的唯一入口,负责 etcd 的所有操作,如注册、发现、安全等
  • kube-controller-manager:资源控制中心,负责维护集群的状态,如自动伸缩、滚动更新等
  • kube-scheduler:调度 Pod,为 Pod 分配节点并绑定

2、Node 节点核心组件

  • kubelet:负责处理 Master 下发到本节点的任务,管理 Pod 和 Pod 内的容器
  • container runtime:容器运行时,用于运行容器
  • cni 插件:容器运行时接口,提供网络通信服务,如 Flannel 或 Calico
  • kube-proxy:负载均衡网络流量,为 Service 对象提供内部服务发现

3、可选组件

  • ingress:为 Kubernetes 集群服务提供外网入口
  • kube-dns / coredns:为 Kubernetes 集群提供 DNS 服务
  • metrics:为 Kubernetes 集群提供资源监控服务
  • dashboard:为 Kubernetes 集群提供 GUI 可视化界面

4、组件通信
以 Pod 创建流程为例:

  • 用户通过 HTTP REST API(kube-apiserver)提交创建请求
  • kube-apiserver 将其写入 etcd
  • kube-controller-manager 创建资源
  • kube-scheduler 检测到未绑定 Node 节点的 Pod,开始分配 Node 节点并进行绑定
  • kube-apiserver 将其写入 etcd
  • kubelet 检测到有新的 Pod 调度过来,通过 container runtime 将其运行起来
  • kubelet 通过 container runtime 获取 Pod 状态,并更新到 kube-apiserver 中
  • kube-apiserver 将其写入 etcd

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-29 17:06:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-29 17:06:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-29 17:06:02       87 阅读
  4. Python语言-面向对象

    2024-04-29 17:06:02       96 阅读

热门阅读

  1. MYSQL

    2024-04-29 17:06:02       31 阅读
  2. Yarn的安装和使用

    2024-04-29 17:06:02       34 阅读
  3. 写一个在创建css文件之后的初始化样式

    2024-04-29 17:06:02       34 阅读
  4. 各个GPT能力测试

    2024-04-29 17:06:02       26 阅读
  5. 【Android 实现AES-CMAC加密】

    2024-04-29 17:06:02       34 阅读
  6. Android 在AMS中拦截某个指定Activity的启动

    2024-04-29 17:06:02       31 阅读
  7. CMUS狮身人面像(七)-Android 上的 PocketSphinx

    2024-04-29 17:06:02       38 阅读
  8. golang变量常见问题总结

    2024-04-29 17:06:02       31 阅读
  9. go圣经 ——方法

    2024-04-29 17:06:02       38 阅读
  10. 【AI大模型】Prompt Engineering 基础知识与挑战

    2024-04-29 17:06:02       35 阅读
  11. 【Spring AI】03. 图像生成 API

    2024-04-29 17:06:02       31 阅读
  12. git版本控制基础工作流

    2024-04-29 17:06:02       31 阅读