Skip to content

Commit

Permalink
核心组件部分1
Browse files Browse the repository at this point in the history
  • Loading branch information
lee-cq committed Aug 2, 2024
1 parent 6020b2f commit d71fd44
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 3 deletions.
7 changes: 4 additions & 3 deletions content/post/k8s/01_概览.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
---
title: "ip命令解析"
title: "Kubernetes概览"
author: "Li, Caleb Chaoqun"
date: "2024-08-01"
description: "K8s核心组件"
description: "K8s为容器化的应用提供资源调度,部署运行,服务发现,扩容缩容等一整套功能,本质上是基于容器技术的Micro-PaaS平台。"
typora-copy-images-to: ""
tags:
- "K8s"
- "Kubernetes"
- "运维"
- "概览"
---

# K8s概览
# Kubernetes概览

Kubernetes是Google开源的容器集群管理系统;它构建在容器技术之上,为容器化的应用提供资源调度,部署运行,服务发现,扩容缩容等一整套功能,本质上是基于容器技术的Micro-PaaS平台,Kubernetes的灵感来源于Google内部的Borg系统。

Expand Down
84 changes: 84 additions & 0 deletions content/post/k8s/02_核心组件.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
---
title: "Kubernetes核心组件"
author: "Li, Caleb Chaoqun"
date: "2024-08-01"
description: "K8s核心组件"
typora-copy-images-to: ""
tags:
- "K8s"
- "Kubernetes"
- "运维"
- "概览"
---

# 核心组件


## Etcd (公共核心组件)

etcd是一个分布式key-value存储系统,为Kubernetes提供原数据的存储。

- **接口简单:** 通过客户端或HTTP的方式访问;
- **数据表示简单:** 存储key-value数据,可理解为一个有序的map;
- **方便数据订阅:** 支持watch机制;

![Etcd-同步策略.png](Etcd-同步策略.png)


## Api-Server (Master)

Api-Server通过Master节点上的kube-apiserver进程提供服务,该服务是集群内各个功能模块之间数据交互和通信的中心枢纽,实现了 Kubernetes 对象模型(如 Pods, Services, Deployments 等)的 CRUD 操作。
由于API Server承担了系统内关键的数据通信部分,所以API Server的性能高低决定了集群性能的高低。

使用 etcd 数据库作为持久化存储后端。所有 Kubernetes 对象的状态都保存在 etcd 中。


### API Server提供的API:
1. /api/vi - 核心API
2. /apis - 分组API
3. /healthz - 健康监测
4. /logs - 日志
5. /swaggerapi - SwaggerAPI (OpenAPI)
6. /metrics - 性能度量

### 访问控制
1. 授权
2. 身份验证
3. 准入控制

### 服务注册

1. Pod
2. NameSpace
3. Service
4. Apps
5. Storage
6. ...


## Controller Manager (Master)

在Kubernetes中,每个Controller是一个控制回路,通过APIServer监视集群内Node、Pod的等资源的状态,并确保其当前状态(由spec字段规定)接近期望状态。

Controller按照其实现方式,可以分为内部控制器和外部控制器。
Kubernetes内部几乎每种特定资源都有特定的Controller维护管理,而ControllerManager的职责便是把所有的Controller聚合起来,以达到以下目的:
- 提供基础设施,启动和维持Controller的正常运行,降低Controller的实现复杂度。
- 通过Watch apiserver监控资源状态变化,对不同的Controller分发事件通知。

### Controller工作流程

Controller Manager主要提供了一个分发事件的能力,而不同的Controller只需要注册对应的Handler来等待接收和处理事件。在Controller Manager的帮助下,Controller的逻辑可以做的非常纯粹,只需要实现相应的EventHandler即可。以Deployment controller为例:

![Controller Manager 工作流程](controller工作流程.jpg)

### 内部控制器
1. Deployment Controller: 用于管理应用程序的部署过程。
它基于 ReplicaSets 来管理 Pods,并支持滚动更新和回滚等高级部署策略。
2. ReplicaSet: 确保指定数量的副本(Pods)始终处于运行状态。如果 Pod 数量减少,它会自动创建新的 Pod;如果 Pod 数量超过期望值,则删除多余的 Pod。
3. StatefulSet Controller: 管理有状态的应用程序实例。维护持久的标识符和稳定的持久卷绑定。
4. DaemonSet Controller: 确保所有(或某些)节点上运行一个 Pod 的副本。常用于运行守护进程,如日志收集或监控代理。
5. Job Controller: 确保一个或多个任务完成指定次数的执行。通常用于批处理作业或一次性任务。
6. CronJob Controller: 创建基于时间的 Jobs,类似于 Unix cron 任务。
7. Namespace Controller: 管理 Namespace 的生命周期,包括删除 Namespace 及其关联资源。
8. Node Controller: 用于监控节点的状态,标记不健康的Node,并迁移其上的POD。
9. Endpoints Controller: 更新每个Service的Endpoint列表,以反映实际可用的Pod。
Binary file added content/post/k8s/Etcd-同步策略.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/post/k8s/controller工作流程.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit d71fd44

Please sign in to comment.