Kubernetes核心组件
迪丽瓦拉
2025-06-01 17:12:42
0

什么是k8s,解决什么问题

纯容器的部署问题

纯docker的运行模式,是一个docker主机,单独管理一堆容器应用,但是发现数量多了之后,配置复杂之后,难以维护管理多个容器,并且跨主机下的容器集群,更是维护复杂。

  1. 业务容器数量庞大,哪些容器部署在哪些节点,使用了哪些端口,如何记录、管理、需要登录到每台机器去管理?

  1. 跨主机通信,多个机器中的容器之间相互调用如何做,iptables规则手动维护?

  1. 跨主机容器间相互调用,配置如何写?写死固定ip+端口?

  1. 如何实现业务高可用?多个容器对外提供服务如何实现负载均衡?

  1. 容器的业务中断了,如何可以感知到,感知到以后,如何自动启动新的容器?

  1. 如何实现滚动升级保证业务的连续性?

K8S是什么

Kubernetes是用于自动部署,扩缩和管理容器化应用程序的开源系统

它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现

Kubernetes 源自Google15年生产环境的运维经验,

Google每周运行数十亿个容器,

本质上就是一个工具,一个平台,维护docker容器的

部署时代架构

v1 物理机

v2 虚拟化,vmware商业版为代表,出现开源版的openstack

v3 容器化部署,容器化大规模应用后,难以维护,出现了

K8S

为什么会出现k8s

容器是打包和运行应用程序的好方式

在生产环境下,需要管理运行着应用程序的容器,并确保服务不会下线

例如,如果一个容器发生故障,需要启动另一个容器。

如果这个过程,是自动创建容器,自动生成新容器,保证业务高可用,k8s就是实现容器自动化管理的一个框架系统。

K8S是一个平台框架

k8s提供了很多的功能,简化了对容器的部署管理

基于容器对应用的发布管理、更新、升级、降级

负载均衡、服务发现

跨机器、跨地区的网络模式

自动扩缩容功能

针对如nginx无状态服务的运行组件,如mysql等有状态服务的运行组件

支持丰富的插件

k8s并不是包括所有,它本身只有自己的一些组件,而其他功能,如消息队列,数据库,存储都需要额外安装在k8s上。

K8S是一个平台框架

本质:大而全的平台,组件很多,提供了很多功能组件,目的是为了让你更好的去管理容器。

k8s核心概念组件

提供了很多组件,方便从各个角度,更好的去维护,管理容器。

  1. 容器运行高可用,数量保障,版本升级、扩容、缩容

  1. 容器之间的网络关系

  1. 容器之间的数据共享关系

  1. 容器内的配置文件加密

  1. 以上都是k8s提供的各个组件的作用

如何设计一个容器管理平台

1、集群架构,至少2台机器,master主节点,node工作节点

master根据维护者,写的yaml,对容器的运行描述,创建具体的容器,到node工作节点

2、该容器管理平台,应该自动识别,目标节点的,状态,选择最合适的节点部署新容器

3、容器管理平台,能实现确保,应用的副本数是健康,正确的,后端的容器数量

4、容器内的负载均衡,反向代理,如何配置(k8s的组件就可以实现)

K8S核心组件

安装启动好之后,至少看到的几个组件以及后续,部署你的应用,再用其他的组件。

1、etcd保存了整个集群的状态,分布式高性能数据库。
2、api-server提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制。

K8S作为一个高级的容器管理平台,对每一个发来的请求,都要进行校验,该请求是否被集群允许,删除集群中的一个容器组,是否被允许,k8s默认运行后,6个组件,每一个组件的请求,与相应的,都要经过这个api-server组件校验。

3、controller manager负责维护集群的状态、比如故障检测、自动扩展、滚动更新等

具体部署容器,到目标节点,使用的控制器,容器负载均衡部署,Deployment控制器就是之一。

Replication Controller

Node controller

ResourceQuota Controller

Namespace Controller

ServiceAccount Controller

Token Controller

Service Controller

Endpoints Controller

4、scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的Node机器上

scheduler 决定容器部署到哪个节点上的组件。

5、kubelet负责维护容器的生命周期,同时也负责Volume 和网络 的管理

拉去镜像,运行容器

运行在每一个node节点上的代理软件:

pod管理

容器健康检查

容器监控

Container runtime 负责镜像管理及Pod和容器的真正运行
kube-proxy负责为Service提供cluster内部的服务发现和负载均衡,主要提供iptables、ipvs规则
6、kubecli 命令行接口,用于对Kubernetes集群运行命令

在master节点上敲打的命令,就docker命令一样,客户端命令和api-server交互

以上为六大组件

组件通信架构图

k8s里面不再直接去操作容器,而是k8s提供了一个组件,叫pod,封装了一组容器,容器都是被pod管理,根容器,创建隔绝的网络,文件系统,用户,进程空间。

k8s集群是被一组称为Node的节点机器组成,这些节点上运行k8s管理的容器进程

具体Node节点机器上运行的容器被一个叫作Pod的组件管理

在安装完毕k8s后,就得到一个集群环境

集群是指有一堆Node节点机器,并且这些节点运行Pod,也就是容器了

k8s组件工作流程图

pod是如何被创建到目标机器的,原理流程

创建一个无状态的nginx应用,部署一个pod(nginx)即可。

1、在master节点,写yaml描述你对容器的运行要求,创建pod的要求,

2、使用kubectl命令去创建,应用这个资源描述文件,才设计k8s组件交互发出请求,我要创建一个pod去运行nginx了,请求发给谁?

kubectl create -f install-nginx.yml

api-server

3、验证Kubectl命令发来的请求是否被允许利用本地https证书,直接写入Kubectl配置文件的该请求被允许后,才会执行。

4、api-server将nginx-pod创建的信息,记录到etcd数据库中(数据库记录了一些信息,nginx镜像版本,容器名,是否要端口暴漏)

5、api-server会通知下一个组件,调度器组件,scheduler准备pod调度

6、scheduler调度,会去etcd里面查询,部署的pod信息到底是如何,scheduler,调度,判定出一个合适的node节点去部署pod(选择好了具体的机器,还未执行)。

7、scheduler调度器,会告诉api-server自己决定pod要部署到哪台node节点上

8、api-server会将这个信息,再写入etcd中,数据更新了(nginx本身的容器信息+绑定关系,部署到哪个机器上)

9、此时api-server会通知远程具体机器,如k8s-node2上的工作进程kubelet,去读取etcd里面的信息,根据这些信息,创建nginx镜像,以及创建POD(nginx容器)

Node概念

ECS机器,k8s运行的一个环境

pod等资源,属于k8s安装好后的,集群内的一个资源信息。

1、k8s工作节点,node运行环境可以是::::vmware创建的一个虚拟机,k8s-node-11 k8s-node-12

2、node上具体运行啥,运行容器,k8s部署的应用,都是跑在容器里,还得装docker

3、初始化,运行工作节点,或者主节点,背后逻辑是

3.1下载k8s自身的一些组件的镜像

3.2 运行镜像,创建对应的容器,到对应的目标机器上(k8s-master、k8s-node)

以上就是部署架构逻辑。

Pod图解作用

Kubernetes使用Pod来管理容器,每个Pod可以包含一个或多个紧密关联的容器。

Pod是一组紧密关联的容器集合,他们共享进程间通信和Network namespace,是Kubernetes调度的基本单位。

Pod内的多个容器共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。

Pod的设计理念是支持多个容器在一个Pod中共享网络地址和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。

Pod是K8s集群中所有业务类型的基础,可以看作运行在k8s集群中的小机器人,不同类型的业务就需要不同类型的小机器人去执行。

目前K8s中的业务主要可以分为长期伺服型、批处理型、节点后台支撑型和有状态应用型

分别对应的小机器人控制器为Deployment、Job、DaemonSet和StatefulSet

  • Pod是k8s集群中运行部署应用或服务的最小单元,它是可以支持多容器的。

  • Pod的IP是随机变化的,删除pod、ip变化

  • pod内部都有一个根容器

  • 一个pod内可以有一个,多个容器

  • 一个pod内的所有容器,共享根容器的网络名称空间,文件系统,进程资源

  • 一个pod内的容器网络地址,由根容器提供。

图解K8s概念作用

  1. pod运行状态概念

  1. label标签概念

node打标签,作用用于部署pod

  1. Namespace,资源组,名称空间,k8s再创建资源的时候,可以单独创建一个资源。

k8s里可以基于创建namespce,管理不同环境下的资源,也是一个重要资源,

先了解Pod

再学控制器,去维护你的pod

pod要对外提供访问服务,就得再学service等资源

k8s-Master部署

k8s-Node部署

k8s-网络插件部署与pod实践。

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...