[云原生2. ] Kubernetes的简单介绍

news2024/11/27 22:19:52

文章目录

  • 1. Kubernetes 概述
    • 1.1 简介
    • 1.2 作用
    • 1.3 Kubernetes 的特点
    • 1.4 Kubernetes 主要功能
  • 2. Kubernetes 集群架构与组件
    • 2.1 Master 组件
      • 2.1.1 Kube-apiserver
      • 2.1.2 Kube-controller-manager
      • 2.1.3 Kube-scheduler
    • 2.2 配置存储中心
      • 2.2.1 etcd
    • 2.3. Node 组件
      • 2.3.1 Kubelet
      • 2.3.2 Kube-Proxy
      • 2.3.3 docker 或 rocket
  • 3. Kubernetes 的核心概念
  • 4. Kubernetes 的资源对象类型
    • 4.1 Pod
    • 4.2 Pod 控制器
    • 4.3 Service
    • 4.4 ingress
  • 5. Kubernetes 资源配置信息
  • 6. Kubernetes 创建Pod资源的工作流程

1. Kubernetes 概述

1.1 简介

kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。

是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

1.2 作用

用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。

可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如 Docker)的集群,是一个生态极其丰富的容器编排框架工具

1.3 Kubernetes 的特点

  • 弹性伸缩: Kubernetes 可以自动扩展和收缩容器,根据负载进行自动调整
  • 自动容器部署和管理: Kubernetes 可以自动化容器部署和管理,无需手动干预
  • 容器编排: Kubernetes 支持多层容器编排,使得容器的关系更加复杂和灵活
  • 负载均衡:Kubernetes 可以在多个节点上自动分配负载,实现负载均衡
  • 容器健康检查和自动恢复: kubernetes 可以自动检查容器状态,如果发现出现故障可以自动恢复
  • 容器存储管理: Kubernetes 可以管理容器的存储,包括存储卷、存储卷模板等功能。

1.4 Kubernetes 主要功能

  1. 跨主机编排容器。
  2. 更充分地利用硬件资源来最大化地满足企业应用的需求。
  3. 控制与自动化应用的部署与升级。
  4. 为有状态的应用程序挂载和添加存储器。
  5. 线上扩展或缩减容器化应用程序与它们的资源。
  6. 声明式的容器管理,保证所部署的应用按照我们部署的方式运作。
  7. 通过自动布局、自动重启、自动复制、自动伸缩实现应用的状态检查与自我修复
  8. 为多个容器提供服务发现和负载均衡,使得用户无需考虑容器IP问题。

2. Kubernetes 集群架构与组件

在这里插入图片描述
K8S 是属于主从设备模型(Master-Slave 架构),即有 Master 节点负责集群的调度、管理和运维Slave 节点是集群中的运算工作负载节点

在 K8S 中,主节点一般被称为 Master 节点,而从节点则被称为 Worker Node 节点,每个 Node 都会被 Master 分配一些工作负载。

2.1 Master 组件

2.1.1 Kube-apiserver

用于暴露 Kubernetes API,任何资源请求或调用操作都是通过kube-apiserver 提供的接口进行。

HTTP Restful API 提供接口服务,所有对象资源的增删改查和监听操作都交给 API Server 处理后再提交给 Etcd 存储。

可以理解成 API Server 是 K8S 的请求入口服务。API Server 负责接收 K8S 所有请求(来自 UI 界面或者 CLI 命令行工具), 然后根据用户的具体请求,去通知其他组件干活。可以说 API Server 是 K8S 集群架构的大脑。

2.1.2 Kube-controller-manager

运行管理控制器,是 K8S 集群中处理常规任务的后台线程,是 K8S 集群里所有资源对象的自动化控制中心
在 K8S 集群中,一个资源对应一个控制器,而 Controller manager就是负责管理这些控制器的。

由一系列控制器组成,通过 API Server 监控整个集群的状态,并确保集群处于预期的工作状态

比如当某个 Node 意外宕机时,Controller Manager 会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。

这些控制器主要包括:
- Node Controller(节点控制器):负责在节点出现故障时发现和响应。
- Replication Controller(副本控制器):负责保证集群中一个 RC(资源对象 Replication Controller)所关联的 Pod 副本数始终保持预设值。可以理解成确保集群中有且仅有 N 个 Pod 实例,N 是 RC 中定义的 Pod 副本数量。
- Endpoints Controller(端点控制器):填充端点对象(即连接 Services 和 Pods),负责监听 Service 和对应的 Pod 副本的变化。 可以理解端点是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道它的 endpoint。
- Service Account & Token Controllers(服务帐户和令牌控制器):为新的命名空间创建默认帐户和 API 访问令牌。
- ResourceQuota Controller(资源配额控制器):确保指定的资源对象在任何时候都不会超量占用系统物理资源。
- Namespace Controller(命名空间控制器):管理 namespace 的生命周期。
- Service Controller(服务控制器):属于 K8S 集群与外部的云平台之间的一个接口控制器。

2.1.3 Kube-scheduler

是负责资源调度的进程,根据调度算法为新创建的 Pod 选择一个合适的 Node 节点。

可以理解成 K8S 所有 Node 节点的调度器。当用户要部署服务时,Scheduler 会根据调度算法选择最合适的 Node 节点来部署 Pod。

预选策略(predicate)
优选策略(priorities)

2.2 配置存储中心

2.2.1 etcd

K8S 的存储服务

etcd 是分布式键值存储系统,存储了 K8S 的关键配置和用户配置,K8S 中仅 API Server 才具备读写权限,其他组件必须通过 API Server 的接口才能读写数据。

2.3. Node 组件

2.3.1 Kubelet

Node 节点的监视器,以及与 Master 节点的通讯器

Kubelet 是 Master 节点安插在 Node 节点上的“眼线”,它会定时向 API Server 汇报自己 Node 节点上运行的服务的状态,并接受来自 Master 节点的指示采取调整措施

从 Master 节点获取自己节点上 Pod 的期望状态(比如运行什么容器、运行的副本数量、网络或者存储如何配置等), 直接跟容器引擎交互实现容器的生命周期管理,如果自己节点上 Pod 的状态与期望状态不一致,则调用对应的容器平台接口(即 docker 的接口)达到这个状态。

管理镜像和容器的清理工作,保证节点上镜像不会占满磁盘空间,退出的容器不会占用太多资源。

2.3.2 Kube-Proxy

在每个 Node 节点上实现 Pod 网络代理,是 Kubernetes Service 资源的载体,负责维护网络规则和四层负载均衡工作
负责写入规则至iptablesipvs实现服务映射访问的。

`Kube-Proxy` 本身不是直接给 Pod 提供网络,Pod 的网络是由 Kubelet 提供的,Kube-Proxy 实际上维护的是虚拟的 Pod 集群网络。
`Kube-apiserver`通过监控 Kube-Proxy 进行对 Kubernetes Service 的更新和端点的维护。
在 K8S 集群中微服务的负载均衡是由 Kube-proxy 实现的。
`Kube-proxy` 是 K8S 集群内部的`负载均衡器`。

它是一个`分布式代理服务器`,在 K8S 的每个节点上都会运行一个 `Kube-proxy 组件`

2.3.3 docker 或 rocket

容器引擎,运行容器,负责本机的容器创建和管理工作

当 kubernetes 把 pod 调度到节点上,节点上的 kubelet会指示 docker 启动特定的容器。
接着,kubelet 会通过 docker 持续地收集容器的信息, 然后提交到主节点上。
docker 会如往常一样拉取容器镜像、启动或停止容器。

不同点仅仅在于这是由`自动化系统控制`而非管理员在每个节点上手动操作的。

3. Kubernetes 的核心概念

Kubernetes 包含多种类型的资源对象:PodLabelServiceReplication Controller 等。

所有的资源对象都可以通过 Kubernetes 提供的 kubectl 工具进行增、删、改、查等操作,并将其保存在 etcd 中持久化存储。

Kubernets其实是一个高度自动化的资源控制系统
通过跟踪对比etcd存储里保存的资源期望状态与当前环境中的实际资源状态的差异,来实现自动控制和自动纠错等高级功能。

4. Kubernetes 的资源对象类型

4.1 Pod

Pod是K8S能够创建和管理的最小单位。
一个Pod里可以包含一个或者多个应用容器,Pod里的容器之间共享网络、存储等资源

4.2 Pod 控制器

Pod 控制器是 Pod 启动的一种模版,用来保证在K8S里启动的 Pod 应始终按照用户的预期运行(副本数、生命周期、健康状态检查等)。

- deployment:部署无状态应用(没有实时的数据需要存储);同时也负责管理replicaset(维持Pod副本数量符合预期数量)和Pod(容器化的应用进程)
- statefulset:部署有状态应用(有实时的数据需要存储)
- daemonset:在所有的node节点上部署同一类型的Pod
- job:一次性的部署短期任务的Pod(执行完任务后会自动退出的Pod)
- cronjob:周期性的部署短期任务的Pod(执行完任务后会自动退出的Pod)

4.3 Service

在K8S集群内部,为通过标签选择器相关联的一组Pod提供一个统一的访问入口(clusterIP),只支持四层代理转发

4.4 ingress

作为K8S集群外部接入层,可自定义ingress规则根据用户请求的域名或URL请求路径转发给指定的service,支持七层代理转发

5. Kubernetes 资源配置信息

  • apiversion:资源对象在K8S中使用的api接口版本

  • kind:资源对象的类型

  • metadata:资源对象的元数据信息,比如 name资源名称、annotation注释、namespace命名空间、label标签

  • spec:资源对象的资源配置清单(配置属性),比如 副本数、镜像、数据卷、标签选择器

  • status:资源对象的当前运行状态信息

  • label:标签,将一个键值对关联到某个资源对象,用于资源对象的分组查询和筛选

  • label selector:标签选择器,用于查询和筛选拥有某个标签的资源对象

  • annotation:注释,用于作资源对象的注释信息或在一些特殊的资源对象里用于作额外的功能特性配置

  • name:资源名称

  • namespace:命名空间,在同一个命名空间中,同类型的资源对象的名称是唯一的

6. Kubernetes 创建Pod资源的工作流程

在这里插入图片描述

  1. 用户通过客户端发送创建Pod的请求给apiserver
  2. apiserver接收到请求后,会先把请求信息写入到etcd中保存,再找controller-manager根据请求信息中的资源预设模板创建Pod资源
  3. controller-manager会通过apiserver找到scheduler来调度新创建的Pod资源
  4. scheduler通过调度算法的预选策略和优选策略筛选出最适合的node节点进行调度
  5. 再通过apiserver找到对应的node节点上的kubelet去创建和管理Pod
  6. kubelet会跟容器引擎交互来管理Pod及容器的生命周期
  7. 用户还可以通过apiserver在kube-proxy上写入iptables/ipvs网络规则,创建service资源,实现对Pod集群的网络代理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1175237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

51单片机-定时计数器

文章目录 前言1 原理2.编程 前言 1 原理 2.编程 定时计算: 50ms501000us 一个机器周期:1.085us 65535 - 501000/1.08546082 故 40082*1.08549998.97 /*定时器1,定时模式 工作模式1 16位计数器, 定时20秒后使能蜂鸣器*/ #include…

MP4视频文件损坏怎么修复?

3-2 作为摄影师,或者在平时有拍摄工作的事情的,比如搞婚庆、搞航拍什么的,有一定的概率会遇到损坏的视频文件,比如相机突然断电、无人机炸机等,有可能会导致保存的MP4文件损坏。 这种文件使用播放器播放的话&#xf…

2023数学建模国赛C题赛后总结

今天国赛的成绩终于出来了,盼星星盼月亮的。之前面试的时候已经把我给推到国奖评委那里去了,可是好可惜,最终以很微小的劣势错失国二。只拿到了广西区的省一。我心里还是很遗憾的,我真的为此准备了很久,虽然当中也有着…

海康Visionmaster-全局脚本:通信设备 ID 获取方法

全局脚本中通信数据接收函数中的 DeviceID 是按照设备管理列表中至上而下、从 0 开始依此增 1,现在这种方法行不通. 每次增加设备列表都会分配唯一的 ID 号,后续全局脚本中判断设备 ID 通过这个唯一 ID 识别,不再从上到下默认排序。

Docker数据管理、网络与Cgroup资源限制

目录 一、Docker的数据管理 1、数据卷 2、数据卷容器 3、端口映射 4、容器互联 二、Docker网络 2.1Docker网络实现原理 2.2Docker 的网络模式 3.3网络模式详解: host模式 container模式 none模式 bridge模式 自定义网络 创建自定义网络 三、Cgroup资源…

【Mybatis小白从0到90%精讲】12:Mybatis删除 delete, 推荐使用主键删除!

文章目录 前言XML映射文件方式推荐使用主键删除注解方式工具类前言 在实际开发中,我们经常需要删除数据库中的数据,MyBatis可以使用XML映射文件或注解来编写删除(delete)语句,下面是两种方法的示例。 XML映射文件方式 Mapper: int delete(int id);Mapper.xml:

基于SSM的社区智慧养老监护管理平台

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

私有化部署大模型:5个.Net开源项目

从零构建.Net前后端分离项目 今天一起盘点下,10月份推荐的5个.Net开源项目(点击标题查看详情)。 1、BootstrapBlazor企业级组件库:前端开发的革新之路 BootstrapBlazor是一个用于构建现代Web应用程序的开源框架,它基…

C++笔记之表驱动法

C笔记之表驱动法 code review! 文章目录 C笔记之表驱动法0.数组小技巧1.std::map实现2.结构体实现3.数组和结构体结合实现表驱动法-存储函数指针4.表驱动法概念-ChatGPT5. 直接访问表(Direct Access Table)的示例6. 索引访问表(Indexed Acc…

什么情况造成互斥锁死锁

由于互斥锁的使用不当,导致多个线程无法进行下一步的代码运行,也就是说竞争锁的两个线程互相锁住,导致整个进程无法往下运行。 举个例子: 两个锁,两个线程,两个线程运行的条件都是需要同时获得这两把锁&a…

Canvas 梦幻树生长动画

canvas可以制作出非常炫酷的动画&#xff0c;以下是一个梦幻树的示例。 效果图 源代码 <!DOCTYPE> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <title>梦幻数生长动画</title&…

Python基础入门例程49-NP49 字符列表的长度

最近的博文&#xff1a; Python基础入门例程48-NP48 验证登录名与密码&#xff08;条件语句&#xff09;-CSDN博客 Python基础入门例程47-NP47 牛牛的绩点&#xff08;条件语句&#xff09;-CSDN博客 Python基础入门例程46-NP46 菜品的价格&#xff08;条件语句&#xff09;…

python栈_简单算术表达式_加减乘除

# 从左到右遍历中缀表达式中的每个数字和符号&#xff0c;若是数字就输出&#xff0c;即成为后缀表达式的一部分&#xff1b;若是符号则要分为两种情况&#xff1a; # (1)是括号时&#xff0c;如果是左括号&#xff0c;直接将左括号入栈&#xff0c;如果是右括号则栈顶元素依次…

P37~41 第九章 正弦稳态电路的分析

本章我们重点分析当正弦作为激励&#xff0c;作用在电路在上&#xff0c;经过很短时间内到达稳态之后电路的一些特征。 1、阻抗和导纳对偶 1.1阻抗 1.2RLC串联 以不变的向量为参考向量 电阻只由元件自身决定&#xff0c;阻抗由元件和激励的脚频率决定。 1.3导纳 1.4RLC并…

HTML_案例1_注册页面

用纯html页面&#xff0c;不用css画一个注册页面。 最终效果如下&#xff1a; html页面代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>注册页面</title> </head>…

二、Hadoop分布式系统基础架构

1、分布式 分布式体系中&#xff0c;会存在众多服务器&#xff0c;会造成混乱等情况。那如何让众多服务器一起工作&#xff0c;高效且不出现问题呢&#xff1f; 2、调度 &#xff08;1&#xff09;架构 在大数据体系中&#xff0c;分布式的调度主要有2类架构模式&#xff1a…

基于晶体结构算法的无人机航迹规划-附代码

基于晶体结构算法的无人机航迹规划 文章目录 基于晶体结构算法的无人机航迹规划1.晶体结构搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用晶体结构算法来优化无人机航迹规划。 …

【C语法学习】17 - fwrite()函数

文章目录 1 函数原型2 参数3 返回值4 示例 1 函数原型 fwrite()&#xff1a;将ptr指向的内存空间中储存的数据块写入与指定流stream相关联的二进制文件中&#xff0c;函数原型如下&#xff1a; size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream)2 参…

SQL 左连接 LEFT JOIN 关键字||SQL右连接 RIGHT JOIN 关键字

SQL 左连接 LEFT JOIN 关键字 SQL左链接LEFT JOIN关键字返回左表&#xff08;表1&#xff09;中的所有行&#xff0c;即使在右表&#xff08;表2&#xff09;中没有匹配。如果在正确的表中没有匹配&#xff0c;结果是NULL。 SQL LEFT JOIN 语法 SELECT column_name(s) …

环形链表和相交链表OJ题

环形链表和相交链表OJ题 这篇博客详细讲解了环形数组和相交数组的问题 文章目录 环形链表和相交链表OJ题一、环形链表e.g.1e.g.2 二、相交链表 一、环形链表 环形列表是指尾结点next不指向NULL了&#xff0c;而是指向包括自己的前面任意一个结点。 e.g.1 题目及要求&#xf…