当前位置: 首页 > article >正文

Kubernetes 详解笔记

1. 概述

Kubernetes(简称 K8s)是一个开源的容器编排平台,用于自动化部署扩展和管理容器化应用程序。它最初由 Google 设计和开发,目前由云原生计算基金会(CNCF)维护。Kubernetes 的目标是简化容器化应用程序的部署和管理,提高资源利用率,并支持大规模分布式系统的运行

2. 核心概念

2.1 Pod

Pod 是 Kubernetes 中最小的部署单元,可以包含一个或多个容器。这些容器共享网络、存储和生命周期。Pod 内的容器可以相互通信,而无需通过网络。

2.2 Service

Service 是一种抽象资源,用于定义一组 Pod 的逻辑集合和访问策略。它允许外部流量访问 Pod,同时隐藏 Pod 的具体实现细节。

2.3 Deployment

Deployment 是一种控制器,用于管理 Pod 的副本数量和更新策略。它确保指定数量的 Pod 副本始终,并运行支持滚动更新。

2.4 Node

Node 是 Kubernetes 集群中的一个工作机器,可以是物理机或虚拟机。每个 Node 上运行着 kubelet、容器运行时(如 Docker 或 containerd)等组件。

2.5 Cluster

Cluster 是由多个 Node 组成的集群,用于运行容器化应用程序。集群由控制平面(Control Plane)和工作节点(Worker Nodes)组成。

3. 核心组件

3.1 控制平面组件

控制平面是 Kubernetes 集群的“大脑”,负责集群的管理和调度,主要组件包括:

  • API Server:提供 RESTful 接口,用于集群管理操作,如创建、更新和删除资源。它是集群的通信中心。

  • etcd:分布式键值存储,用于持久化集群状态。

  • Controller Manager:运行控制器进程,如节点控制器、副本控制器等。

  • Scheduler:负责决定将 Pod 分配到哪个 Node 上运行。

3.2 工作节点组件

工作节点是运行应用程序容器的机器,主要组件包括:

  • Kubelet:在每个 Node 上运行,负责管理 Pod 和容器的生命周期。

  • Kube-proxy:网络代理,用于实现 Service 的网络转发。

  • Container Runtime:容器运行时,如 Docker 或 containerd。

4. 运行原理

Kubernetes 采用主从架构,由控制平面(Master)和工作节点(Worker Nodes)组成。以下是其运行原理的详细说明:

4.1 控制平面的工作原理

控制平面的核心组件协同工作,确保集群的正常运行:

  1. API Server:作为集群的入口,接收来自用户或内部组件的请求,并将资源状态存储到 etcd。

  2. Controller Manager:运行各种控制器,如 ReplicaSet Controller、Deployment Controller 等,确保集群的实际状态与期望状态一致。

  3. Scheduler:监控待调度的 Pod,并根据资源需求和调度策略将 Pod 分配到合适的 Node 上。

4.2 工作节点的工作原理

工作节点上的组件负责容器的运行和管理:

  1. Kubelet:监控 Node 上的 Pod,确保容器按照定义运行。

  2. Kube-proxy:维护网络规则,实现 Pod 之间的通信和负载均衡。

  3. 容器运行时:负责容器的生命周期管理,包括创建、启动、停止和销毁。

5. 工作过程

Kubernetes 的工作过程可以总结为以下几个步骤:

  1. 用户提交请求:用户通过 kubectl 提交资源定义(如 Deployment)到 API Server。

  2. 资源状态存储:API Server 将资源状态存储到 etcd。

  3. 控制器监控资源变化:Controller Manager 中的控制器(如 ReplicaSet Controller)监控资源变化,并创建或管理 Pod。

  4. Pod 调度:Scheduler 监控未分配的 Pod,并根据资源需求和调度策略将 Pod 分配到合适的 Node。

  5. 容器启动:Kubelet 在 Node 上接收 Pod 定义,并通过容器运行时启动容器。

  6. 网络通信:Kube-proxy 确保 Pod 之间的网络通信和负载均衡。

6. 网络模型

Kubernetes 使用 CNI(容器网络接口)插件来管理集群网络。常见的 CNI 插件包括 Calico、Flannel 等。这些插件负责为 Pod 分配 IP 地址,并确保 Pod 之间可以相互通信。

7. 安全与扩展性

7.1 安全性

Kubernetes 提供了多种安全机制,包括:

  • RBAC(基于角色的访问控制):用于控制用户对集群资源的访问。

  • 网络策略:通过 CNI 插件实现 Pod 之间的网络隔离。

  • 安全上下文:为 Pod 和容器设置安全策略。

7.2 扩展性

Kubernetes 支持水平扩展和垂直扩展:

  • 水平扩展:通过增加 Pod 或 Node 的数量。

  • 垂直扩展:通过增加 Node 的资源(如 CPU 或内存)

8. 使用场景

Kubernetes 广泛应用于以下场景:

  • 微服务架构:管理微服务的部署和扩展。

  • CI/CD 流水线:支持持续集成和持续部署。

  • 混合云和多云环境:统一管理不同云平台上的资源。


http://www.kler.cn/a/567556.html

相关文章:

  • Word快速替换修改学术论文所有中的中括号引用未上标格式
  • BiliBili视频下载-原理与实现Python+FFmpeg
  • 【Netty】五种经典 IO 模型详解,附各种模型流程图及流程详解
  • 特征值与特征向量
  • 【GraphQL API 漏洞简介】
  • vue3+TS使用i18n.global.locale,页面要刷新时才更新
  • 第十四届蓝桥杯:DFS之飞机降落
  • 如何在VUE框架下渲染出来一个水球图
  • 建筑兔零基础人工智能自学记录34|深度学习与神经网络2
  • AI时代保护自己的隐私
  • 【多模态大模型】阶跃星辰放大招Step-Audio:统一语音理解与生成的智能语音交互模型
  • Java在物联网(IoT)中的应用研究
  • 250301-OpenWebUI配置DeepSeek-火山方舟+硅基流动+联网搜索+推理显示
  • 【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.3.2Kibana可视化初探
  • Linux----网络通信
  • RabbitMQ——消息发送的双重保障机制
  • ctfshow——vim临时文件泄露
  • 3.对象生活的地方—Java环境搭建
  • 架构师面试(九):缓存一致性
  • 计算机网络基础:剖析网络的构成要素