(二十二)、k8s 中的关键概念

文章目录

  • 1、总体概览
  • [2、第一层:物理机、集群、Node、Pod 之间的关系](#2、第一层:物理机、集群、Node、Pod 之间的关系)
  • [2、第二层:命名空间 Namespace](#2、第二层:命名空间 Namespace)
  • 3、定义
  • [4、控制平面(Control Plane)](#4、控制平面(Control Plane))
  • [5、特别的概念 Service](#5、特别的概念 Service)
  • 6、Deployment

经过 之前几篇文章对 k8s 的实践,结合实践,对 k8s 中的主要概念进行一下梳理。

1、总体概览

(图片来自互联网)

2、第一层:物理机、集群、Node、Pod 之间的关系

物理机是构建集群的基础。

集群由多个Node组成,Node 是集群的工作单元。

每个Node可以运行多个Pod,这些 Pod 执行具体的应用程序。

简单说,如下

复制代码
真实物理机
   └── 集群
       ├── Node 1
       │    ├── Pod A
       │    └── Pod B
       ├── Node 2
       │    └── Pod C
       └── Node 3
            ├── Pod D
            └── Pod E

2、第二层:命名空间 Namespace

在 k8s 中,命名空间(Namespace)是集群内的一种逻辑归类。

由于k8s 的特性,命名空间 只是一种 集群内资源的逻辑归类,该Namespance 所管理的资源具体部署在哪一个 Node 的哪一个Pod 是k8s 自己决定的。

3、定义

  1. 真实物理机(Physical Machine)
    定义:这是运行 Kubernetes 集群的实际硬件。
    角色:提供计算、存储和网络资源。
  2. 集群(Cluster)
    定义:由多个节点(Node)组成的集合,形成一个统一的计算环境。
    角色:管理和调度容器化应用,提供高可用性和负载均衡。
  3. Node
    定义:Kubernetes 集群中的一个工作机器,可以是物理机或虚拟机。
    角色:
    运行容器化应用的实际环境。
    Node 上运行一个或多个 Pod。
    每个 Node 运行一个 Kubelet 进程,用于管理 Pod。
  4. Pod
    定义:Kubernetes 中的最小可部署单位,表示一个或多个容器的集合,通常共享网络和存储。
    角色:
    执行应用程序的实际实例。
    可以包含一个或多个容器,通常是紧密相关的服务。
  5. 命名空间(Namespace)
    定义:Kubernetes 中的一种逻辑隔离机制,用于将资源分组。
    角色:
    提供资源的隔离和组织,允许在同一集群中创建多个环境(如开发、测试、生产)。
    同一命名空间内的资源可以互相访问,而不同命名空间间的资源需要明确的网络策略。

4、控制平面(Control Plane)

在 Kubernetes 中,控制平面(Control Plane)是负责管理和协调集群的组件集合。它确保集群的状态与用户的期望相符,处理所有的管理任务。以下是控制平面的主要组成部分及其功能:

  1. 主要组件
    kube-apiserver:
    提供集群的 API 接口,所有的操作(如创建、更新、删除资源)都是通过 API Server 进行的。
    负责验证和处理 API 请求,并将其存储在 etcd 中。
    etcd:
    一个高可用的键值存储系统,用于保存 Kubernetes 集群的所有数据和状态信息。
    作为集群的后端存储,提供数据的持久性和一致性。
    kube-scheduler:
    负责将新创建的 Pod 调度到适合的 Node 上。
    根据 Node 的资源、标签、污点等信息做出调度决策。
    kube-controller-manager:
    运行各种控制器,负责监控集群状态并执行相应的操作。
    常见的控制器包括节点控制器、复制控制器、端点控制器等。它们确保集群中资源的实际状态与期望状态一致。
  2. 控制平面的功能
    集群管理:控制平面负责整个集群的管理和协调,确保资源的创建、更新和删除操作能够顺利执行。
    状态监控:通过控制器,控制平面持续监控集群状态,并根据需要进行调整,确保系统的健康状态。
    负载均衡:调度器确保 Pod 在集群中均匀分布,优化资源利用率。
  3. 与数据平面的关系
    数据平面(Data Plane)指的是实际运行应用的 Node 和 Pod。控制平面与数据平面分离,确保集群的管理与应用的运行相互独立。
    控制平面通过 API 与数据平面进行通信,发出指令,而数据平面负责执行这些指令。
    总结
    控制平面是 Kubernetes 的核心,负责集群的管理、调度和状态监控。它与数据平面紧密配合,确保集群能够高效、稳定地运行。通过这种分离的架构,Kubernetes 能够实现高可用性和灵活的扩展性。

5、特别的概念 Service

Service 是 Kubernetes 中一个非常重要的概念。下面是对 Kubernetes 中 Service 的详细介绍,包括其功能和工作原理。

Service 的定义

Service 是 Kubernetes 中用于定义一组 Pod 的访问策略的抽象。它为这些 Pod 提供了一个稳定的网络标识和访问方式,即使 Pod 的 IP 地址发生变化,Service 仍然可以保持稳定的访问。

主要功能

负载均衡:

Service 可以将流量分发到一组后端 Pod 上,确保请求能够均匀地分配,提升服务的可用性和性能。

稳定的访问点:

Pod 的 IP 地址可能会变化(例如,Pod 重启或调度到其他 Node),但 Service 提供了一个固定的 DNS 名称和 IP 地址,客户端可以通过这个稳定的接口访问 Pod。

服务发现:

Kubernetes 自动为每个 Service 创建 DNS 记录,允许其他 Pod 通过 Service 名称进行访问,简化了服务间的连接。

Service 的类型

Kubernetes 中有几种不同类型的 Service,每种类型适用于不同的场景:

ClusterIP(默认类型):

只在集群内部可访问,提供一个内部 IP 地址,用于在集群内进行服务发现。

NodePort:

在每个 Node 上开放一个端口,允许外部访问。通过 Node 的 IP 地址和指定的 NodePort,可以访问 Service。

LoadBalancer:

在云环境中使用时,自动创建一个外部负载均衡器,并将其分配给 Service。适合需要外部访问的服务。

ExternalName:

将 Service 映射到外部的 DNS 名称,允许 Kubernetes 集群中的 Pod 通过 Service 名称访问外部服务。

工作原理

选择器(Selector):

Service 使用标签选择器(Label Selector)来确定其后端 Pod。只有与选择器匹配的 Pod 会接收流量。

端点(Endpoints):

Kubernetes 会自动创建和维护 Endpoints 对象,它代表与 Service 相关联的 Pod 的 IP 地址和端口。当 Pod 的状态变化时,Endpoints 会自动更新。

网络代理:

Kube-proxy 运行在每个 Node 上,负责实现 Service 的负载均衡和网络代理。它根据 Service 的类型配置网络规则,将流量转发到后端 Pod。

总结

Service 是 Kubernetes 中连接和管理 Pod 的关键组件,提供了稳定的访问点、负载均衡和服务发现能力。通过不同的 Service 类型,用户可以灵活地配置服务的访问方式,满足不同的需求。

6、Deployment

定义:Deployment 是一种较高层次的 Kubernetes 资源,用于管理 Pod 的副本和生命周期。它定义了所需的 Pod 数量以及如何更新这些 Pod。

自动化管理:Deployment 可以自动处理 Pod 的创建、更新、回滚和故障恢复。它监控当前的 Pod 状态,并确保期望的状态(如 Pod 的副本数)与实际状态一致。

滚动更新:Deployment 支持滚动更新,可以在不影响服务可用性的情况下逐步更新 Pod。

用途:适用于需要高可用性和可扩展性的应用,通常在生产环境中使用。

相关推荐
zyplanke35 分钟前
Kubernetes(四):Service
云原生·容器·kubernetes·k8s
Nazi610 小时前
sealos部署k8s
运维·kubernetes·k8s
伟大的大威2 天前
K8s基于节点软亲和的高 CPU Pod 扩容与优先调度方案
k8s·cpu
听说唐僧不吃肉4 天前
DevOps篇之通过GitLab CI 流水线实现k8s集群中helm应用发布
k8s·devops
java资料站7 天前
k8s集群1.20.9
k8s·kubelet
退役小学生呀11 天前
十九、云原生分布式存储 CubeFS
分布式·docker·云原生·容器·kubernetes·k8s
久绊A11 天前
Minikube win安装步骤
k8s
照物华14 天前
深入理解Kubernetes核心:标签与标签选择器实战解析
云原生·容器·kubernetes·k8s
裸奔的大金毛14 天前
K8S - NetworkPolicy的使用
容器·kubernetes·k8s
ezreal_pan16 天前
Kubernetes 负载均衡现象解析:为何同一批次请求集中于单个 Pod
运维·云原生·k8s·traefik