Kubernetes系列---Kubernetes 理论知识 | 初识

2023-05-16

Kubernetes系列---Kubernetes 理论知识 | 初识

  • 1.K8s 是什么?
  • 2.K8s 特性
  • 3.小拓展(业务升级)
  • 4.K8s 集群架构与组件
    • ①架构拓扑图:
    • ②Master 组件
    • ③Node 组件
  • 五 K8s 核心概念
  • 六 官方提供的三种部署方式
  • 总结

1.K8s 是什么?

Kubernetes 是 Google 在 2014 年开源的一个容器集群管理系统,使用 Go 开发,简称为 K8s,用于容器化应用程序的部署,扩展和管理

K8s 提供了容器编排(yml),资源调度,弹性伸缩,部署管理,服务发现等一系列功能,目标是让部署容器化应用简单高效

K8s 兼容多种容器类型,市场占用率最高,官网:https://kubernetes.io/

2.K8s 特性

自我修复: 在节点故障时替换和重新部署,保证预期的副本数量;杀死健康检查失败的容器(探针),并且在未准备好之前不会处理客户端请求,确保线上服务不中断

弹性伸缩: 使用命令(字符界面)或 UI(图形化界面),基于 CPU 使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务

自动部署和回滚: K8s 采用滚动更新策略更新应用,一次更新一个 Pod,而不是同时删除所有 Pod,如果更新过程中出现问题,将回滚更改,确保升级不受影响业务

服务发现和负载均衡: K8s 为多个容器提供一个统访问入口(内部 IP 地址和一个 DNS 名称),并且负载均衡关联的所有容器,使得用户无需考虑容器 IP 问题

机密和配置管理: 管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性;并可以将一些常用的配置存储在 K8s 中,方便应用程序使用(身份验证:命名空间,逻辑划分权限管理)

存储编排: 挂载外部存储系统,无论是来自本地存储,公有云(如 AWS),还是网络存储(如NFS、GlusterFS、Ceph)都作为集群资源的一部分使用, 极大提高存储使用灵活性

批处理: 提供一次性任务,周期性任务;满足批量数据处理和分析的场景

3.小拓展(业务升级)

灰度发布(金丝雀):

指在黑与白之间,能够平滑过渡的一种发布方式,灰度发布可以有效保证整体系统的稳定,降低产品升级所影响的用户范围

例如,让一部分用户继续使用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐渐扩大范围,把所有用户都迁移到B上面来

蓝绿发布:

例如,项目逻辑上分为A/B组,首先把A组从负载均衡中摘除,进行新版本部署,B组继续提供服务

当A组升级完毕,负载均衡重新接入A组,再将B组从负载列表中摘除进行新版本部署,A组重新提供服务

最终,B组完成升级,负载均衡重新接入B组,至此,A/B组皆升级完毕,对外提供服务,达到用户无感知、平滑过渡的效果

滚动发布:

指每次只升级一个或多个服务,升级完成后加入生产环境

不断执行这个过程,直到集群中的全部旧版本升级为新版本

4.K8s 集群架构与组件

①架构拓扑图:

在这里插入图片描述

②Master 组件

1 Kube-apiserver:

Kubernetes API,集群的统一入口, 各组件协调者

以 RESTful API提供接口服务(支持网站标准协议)

所有对象资源的增删改查和监听操作都交给 APIServer 处理后再提交给 Etcd 存储数据

2  Kube-controller-manager:

处理集群中常规后台任务

一个资源对应一个控制器,比如容器资源(pod)挂了,若控制器还存活,则会重新创建该资源,所以修复能力依赖于控制完成

controllerManager 负责管理这些控制器

3 kube-scheduler:

根据调度算法为新创建的 Pod 选择一个 Node 节点,可以任意部署可以部署在同
一个节点上,也可以部署在不同的节点上

所有资源的创建不一定都要经过调度器

3 etcd:

分布式键值存储系统

用于保存集群状态数据,比如 Pod、Service 等对象信息

③Node 组件

1 kubelet:

kubelet 是 Master 在 Node 节点上的 Agent(代理),管理本机运行容器的生命周期,比如创建容器、Pod 挂载数据卷、下载 secret、获取容器和节点状态等工作

kubelet 将每个 Pod 转换成一组容器

2 kube-proxy:

在 Node 节点上实现 Pod 网络代理

维护网络规则和四层负载均衡工作

3 docker 或 rocket(容器类型):

容器引擎

运行容器

五 K8s 核心概念

1  pod 
 *K8s 中最小的部署单元,是一组容器的集合

*一个 Pod 中的容器共享网络命名空间,像一个小型局域网一样,所以其中容器之间可以彼此通讯

*Pod 是短暂的,因为其一旦故障,会重新创建新的

*K8s 管理的基本都是业务,而业务都是跑在 Pod 上

2 Controllers(控制器)

ReplicaSet:创建资源,确保预期的 Pod 副本数量

Deployment:无状态应用部署

StatefulSet:有状态应用部署

DaemonSet:确保所有 Node 运行同一个 Pod,即管理进程资源

Job:一次性任务

Cronjob:周期性计划定时任务

3 Service
 对外提供服务,防止 Pod 失联,定义一组 Pod 的访问策略,方便访问

4 Label
标签,附加到某个资源上,用于关联对象、查询和筛选

5 Namespaces

 命名空间,将对象逻辑上隔离,用于角色管理和控制
6 Annotations
 注释,方便阅读

六 官方提供的三种部署方式

1 minikube:
可以在本地快速运行一个单节点的 K8s,用于测试或开发,使用率较少
部署地址:https://kubernetes.io/docs/tasks/tools/


2 kubeadm:
提供 kubeadm init(构建 master 端)和 kubeadm join(node 端,连接),用于快速部署 K8s 集群
部署地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/

3 二进制包:
推荐,从官方下载发行版的二进制包,手动部署每个组件,组成 K8s 集群
下载地址:https://github.com/kubernetes/kubernetes/releases

总结

1 k8s的组件
k8s中有两大节点,分别是master节点和node节点,
其中master节点包含apiserver、controller-manager、scheduler
还有一个etcd作为分布式存储,保存了整个集群的状态
node节点中包含kubelet、kube-proxy以及docker等容器引擎
2 k8s的工作流程
k8s的工作流程大致是,运维人员像apiserver发出创建Pod请求,告诉它我想干什么,我的期望是什么
API Server 响应请求,并通过一系列认证授权,把请求存储到etcd
并通知Controller-manager,它会通过API server读取etcd,然后按照所预设的模板去创建Pod,并将pod数据写入etcd
然后Controller-manager 会通过API Server去找Scheduler 为新创建的Pod选择最适合的Node 节点。Scheduler 会通过预算策略在所有Node节点中挑选最优的。
Node 节点中还剩多少资源是通过汇报给API Server 存储在etcd 里,API Server 会调用一个方法找到etcd 里所有Node节点的剩余资源,再对比Pod 所需要的资源,在所有Node 节点中查找哪些Node节点符合要求。
如果都符合,预算策略就交给优选策略处理,优选策略再通过CPU的负载、内存的剩余量等因素选择最合适的Node 节点,并把Pod调度到这个Node节点上运行。
controller manager会通过API Server通知kubelet去创建pod,然后通过kube-proxy中的service对外提供服务接口。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes系列---Kubernetes 理论知识 | 初识 的相关文章

  • 面试突击:输入URL之后会执行什么流程?

    在浏览器中输入 URL 之后 xff0c 它会执行以下几个流程 xff1a 执行 DNS 域名解析 xff1b 封装 HTTP 请求数据包 xff1b 封装 TCP 请求数据包 xff1b 建立 TCP 连接 xff08 3 次握手 xff
  • 面试官:Spring Aop 常见注解和执行顺序

    最近 xff0c 我在给很多人做简历修改和模拟面试的时候 xff0c 有部分朋友和我反馈Spring AOP的面试题 xff0c 今天就和大家来问问 Spring 一开始最强大的就是 IOC AOP 两大核心功能 xff0c 我们今天一起来
  • Microsoft Visual C++ 14.0下载方法

    去官网下载对应的文件 xff08 需要拥有一个微软的账号 xff09 首先 xff0c 打开链接首页 Visual Studio Subscriptions Portal xff0c 登录账号 xff0c 点击进入下载页面 接下来 xff0
  • Zabbix6.0离线安装(附RPM包)

    zabbix server6 0安装包及依赖 一 准备工作 xff1a 虚拟环境软件VMware Workstation 17 pro xff0c 可以根据自身需求来选择 xff0c VMware下载链接参考如下 xff1a https c
  • java中try 与catch的使用

    try 代码区 catch Exception e 异常处理 代码区如果有错误 xff0c 就会返回所写异常的处理 首先要清楚 xff0c 如果没有try的话 xff0c 出现异常会导致程序崩溃 而try则可以保证程序的正常运行下去 xff
  • 基于JAVA京津冀畅游网设计计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA京津冀畅游网设计计算机毕业设计源码 43 数据库 43 lw文档 43 系统 43 部署 基于JAVA京津冀畅游网设计计算机毕业设计源码 43 数据库 43 lw文档 43 系统 43 部署 本源码技术栈 xff1a 项目架构
  • JSP 四大作用域:

    application对象中的属性可以被同一个WEB应用程序中的所有Servlet和JSP页面访问 xff08 属性作用范围最大 xff09 session对象中的属性可以被属于同一个会话的所有Servlet和JSP页面访问 xff08 适
  • django基于Python的疫情数据可视化分析系统的设计与实现(源码调试+代码讲解+文档报告)

    x1f495 x1f495 作者 xff1a 计算机源码社 x1f495 x1f495 个人简介 xff1a 本人七年开发经验 xff0c 擅长Java 微信小程序 Python Android等 xff0c 大家有这一块的问题可以一起交流
  • 基于SSM+Vue个人健康信息管理系统Java个人健康状况记录与评估系统(源码调试+讲解+文档)

    x1f495 x1f495 作者 xff1a 计算机源码社 x1f495 x1f495 个人简介 xff1a 本人七年开发经验 xff0c 擅长Java 微信小程序 Python Android等 xff0c 大家有这一块的问题可以一起交流
  • DBSCAN聚类——Python实现

    一 DBSCAN Density Baseed Spatial Clustering of Applications with Noise 聚类算法 核心对象 xff1a 若某个点的密度达到算法设定的阈值则其为核心 xff08 即r邻域内点
  • 解决ubuntu操作系统默认没有创建root账户

    解决ubuntu操作系统默认没有创建root账户 xff1a 1 sudo passwd root重置root密码 会提示输入当前用户密码 xff0c 然后重新设置新密码 2 设置成功之后su root得到root登陆
  • hexo+github个人博客搭建(亲身经历超详解)

    Hexo 是一个快速 简洁且高效的博客框架 Hexo 使用 Markdown xff08 或其他渲染引擎 xff09 解析文章 xff0c 在几秒内 xff0c 即可利用靓丽的主题生成静态网页 本文章适用于windows系统搭建 xff0c
  • 数论----质数的求解(C/C++)

    CSDN的uu xff0c 你们好呀 xff0c 今天我们要学习的内容是 数论 哦 xff01 这也是算法题中的一类题目吧 记好安全带 xff0c 准备发车咯 xff01 x1f680 学习数论的意义 x1f4e2 算法导论说 xff1a
  • 源代码是指什么?

    源代码是指以特定编程语言编写的文本文件 xff0c 用于控制软件 硬件 计算机程序或系统 源代码是代表软件不同功能的一类 指令 下面我将详细说明源代码的定义 首先要说的是 xff0c 源代码是建立在编程语言之上的文本文件 它可用于编写程序
  • Java 中如何优化大量的 if...else...

    策略模式 xff08 Strategy Pattern xff09 将每个条件分支的实现作为一个独立的策略类 xff0c 然后使用一个上下文对象来选择要执行的策略 这种方法可以将大量的if else语句转换为对象之间的交互 xff0c 从而
  • Selenium+Pytest自动化测试框架实战,还不会点这里一清二楚,全网最细教程!

    如果下方文字内容没有看明白的话 xff0c 我推荐大家看一套视频 xff0c 比文字内容讲的更加详细 xff01 在华为工作了10年的大佬出的Web自动化测试教程 xff0c 华为现用技术教程 xff01 哔哩哔哩 bilibili 在华为
  • node(编写结构化程序)

    node js的使用 console log 39 小邹最黑 39 使用js文件 去执行NodeJS代码 掌握 1 在代码文件夹中 新建js文件 不要新建成html 里面写任意js代码 const skill 61 39 喵喵拳 39 co
  • ubuntu操作系统查看已安装的包

    dpkg的介绍 dpkg 是 Debian Packager 的简写 为 Debian 专门开发的套件管理系统 xff0c 方便软件的安装 更新及移除 所有源自 Debian 的 Linux 发行版都使用 dpkg xff0c 例如 Ubu
  • Java多线程开发之~~~多条件Condition接口的使用

    我们在多线程开发中 xff0c 可能会出现这种情况 就是一个线程需要另外一个线程满足某某条件才能继续运行 xff0c 或者需 要其他线程满足好几个条件才能运行 xff0c 对于这样的多条件的多线程并发 xff0c 我们如何控制好各个线程之间
  • 如何获取某一天股票数据接口

    怎么样去获取某一天的股票数据接口 xff0c 是需要讲究一定技术的 xff0c 首先是要求想要获取的人是否具备编程技术 xff0c 会不会使用编程语言 xff0c 比如Python C 43 43 Java等等 还有就是从证券机构上获取 x

随机推荐