k8s 基础理论

news/2024/7/7 19:27:23

一、k8s概述

K8S 的全称为 Kubernetes,其作用为用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如 Docker)的集群,是一个生态极其丰富的容器编排框架工具。

官网:https://kubernetes.io

GitHub:https://github.com/kubernetes/kubernetes

1、k8s主要功能

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

2、k8s特点

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

二、K8S的架构

K8S有 master 和 worker node 两类节点:

master节点(负责K8S集群的管理和资源调度等运维工作)
apiserver:是所有服务请求的统一访问入口
controller-manager:控制器管理器,负责管理K8S各种资源对象的控制器;并通过apiserver监控整个K8S集群的资源状态,并确保资源始终处于预期的工作状态
scheduler:资源调度器,负责Pod资源的调度,通过调度算法(预选/优选策略)为要部署的Pod选择最合适的node节点
etcd:K8S集群的数据库,是一种键值对存储结构的分布式数据库,负责存储K8S集群所有的重要信息,仅apiserver拥有访问和读写权限

worker node节点(负责运行工作负载,即容器应用)
kubelet:接收apiserver发来的请求,创建管理Pod和容器,跟容器引擎交互实现对容器生命周期的管理;收集node节点的资源信息和Pod的运行状态发送给apiserver
kube-proxy:作为service资源的载体,实现对Pod的网络代理,负责维护Pod集群网络规则和四层代理工作
容器引擎:运行管理容器

三、K8S创建Pod资源的工作流程

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

四、K8S资源对象

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

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

service:在K8S集群内部,为通过标签选择器相关联的一组Pod提供一个统一的访问入口(clusterIP),只支持四层代理转发。service通过标签选择器关联Pod的标签,从而自动发现相关Pod的端点(PodIP:Port)

ingress:作为K8S集群外部的访问入口,可定义ingress规则根据用于请求的域名或URL请求路径转发给指定的service,支持七层代理转发。ingress通过配置规则将不同的域名或URL路径关联不同的service资源

五、K8S资源配置信息

apiversion:指定资源对象的在K8S中使用的api接口版本
kind:指定资源对象的类型
metadata:指定资源对象的元数据信息,比如name指定资源名称、namespace指定命名空间、annotation指定注释、label指定标签
spec:指定资源对象的资源配置清单(配置属性) ,比如副本数、镜像、网络模式、存储卷、label selector标签选择器
status:资源对象在当前的运行状态信息

label:标签,将一个或多个键值对标识关联到某个资源对象,用于对资源对象进行分组查询和筛选
label selector:标签选择器,用于查询和筛选拥有相关标签的资源对象
annotation:注释,用作于资源对象的注释信息;还可以在一些特殊的资源对象里用作于设置额外的功能特性
name:资源名称
namespace:命名空间,用于隔离资源名称的。在同一个命名空间中,同类型的资源对象的名称是唯一的


http://lihuaxi.xjx100.cn/news/2039432.html

相关文章

基于RHEL8部署Zabbix6.0,监控不再困难!

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

60天算法训练总结

这段时间里感受过一遍一遍审视题目又无从下手的无奈,有时甚至题解都看不明白,因此也曾陷入迷茫,看着那些晦涩的名词再一次审视自己:“我真的适合学算法吗”,“我的理解能力会不会有问题”,“为什么他们能想…

盘点人工智能深度学习的五大模型

人工智能、机器学习、深度学习已经成为当下最热门的前端科技之一,机器学习、深度学习是人工智能下面细分的分支。深度学习是人工智能领域的一个最核心分支,深度学习的五个常用模型分别是RNN(循环神经网络)、CNN(卷积神…

SpringBoot框架下实现Mysql数据库定期备份、备份文件加密压缩存储、删除过期备份文件

创建定时任务类 内容仅供参考 import com.ruoyi.common.utils.file.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component;import java.io.File; import java.text.SimpleDateFormat; import java.util.Da…

Java集合框架-1

目录 List集合 常见方法 迭代器(Iterator) List集合特有方法 List 的特点 创建 List 遍历List Java集合框架是Java编程语言提供的各种数据结构和算法的实现。它提供了不同类型的集合类,如列表(List)、集(Set)、映射(Map)等&#xff0c…

Hive中几种常见的表

Hive的表类型主要有:内部表(受控表/管理表)、外部表、临时表、分区表、分桶表。 1. 内部表(管理表) 默认创建的表都是管理表/内部表,表数据默认存储在warehouse目录中,在加载数据的过程中&…

ArcGIS中查看栅格影像最大值最小值的位置

如果只是想大概获取栅格影像中最大值最小值的位置进行查看,可以不用编写程序获取具体的行列信息,只需要利用分类工具即可。 假设有一幅灰度影像数据,如下图所示。 想要查看最大值2116的大概位置在哪里,可以右击选择图层属性&…

Java多线程系列——CAS机制

在并发编程的世界里,线程安全是个不得不面对的问题,而CAS(Compare-And-Swap,比较并交换)正是保障并发安全中一种非常关键的机制。本文将深入剖析Java多线程环境下的CAS机制,包括其工作原理、实现方式、面临…