kubernetes(K8S)笔记

文章目录

    • 大佬博客
    • 简介
    • K8S+Docker VS Docker
      • Docker+K8S简介
      • K8S配合docker相比较单纯使用docker

大佬博客

在这里插入图片描述
Kubernetes(通常缩写为K8s)是一个用于自动化容器化应用程序部署、管理和扩展的开源容器编排平台。它的构造非常复杂,由多个核心组件和附加组件组成,共同协作以实现容器集群的高可用性和可伸缩性。以下是Kubernetes的主要组件和其构造:

  1. Master节点(控制平面)

    • kube-apiserver:API服务器是Kubernetes的控制平面组件之一,充当所有控制平面组件和用户命令的入口点。它公开了Kubernetes API,允许外部和内部组件与集群交互。
    • etcd:etcd是一个高度可用的键值存储,用于保存集群的所有配置数据,包括应用程序配置、节点信息、服务发现等。
    • kube-scheduler:调度器负责决定在哪个节点上运行新创建的Pod。它考虑了节点资源、亲和性、反亲和性、争用和其他策略来选择合适的节点。
    • kube-controller-manager:控制器管理器运行一组控制器,这些控制器负责监控集群的状态,并确保期望的状态与实际状态保持一致。常见的控制器包括ReplicaSet Controller、Node Controller、Service Controller等。
    • cloud-controller-manager(可选):云控制器管理器是与云提供商相关的控制器,用于处理云资源,如负载均衡器、持久卷、虚拟机等。
  2. Node节点(工作节点)

    • kubelet:kubelet是运行在每个Node节点上的代理服务,负责与Master节点通信,管理节点上的Pod生命周期,确保Pod按照预期的方式运行。
    • kube-proxy:kube-proxy是用于服务发现和负载均衡的网络代理,它维护网络规则,将请求路由到正确的Pod。
    • Container Runtime:Kubernetes支持多种容器运行时,包括Docker、Containerd、CRI-O等。容器运行时负责在节点上创建和运行容器。

在Kubernetes中,一个宿主机通常只会被视为一个Node节点。Node节点代表物理或虚拟机器,它是Kubernetes集群中的一个工作节点,用于运行容器化的应用程序。
一台宿主机对应一个Node节点,不同宿主机上的Node节点是独立的,并且它们之间不会共享资源、容器、网络等。

Node节点的数量由Kubernetes集群的规模和配置决定。
您可以根据需要增加或减少Node节点来扩展或缩小集群的计算资源。每个Node节点上可以运行一个或多个容器,具体取决于Node的资源配置和负载需求。

在一些特殊情况下,您可以配置多个Node节点在同一台物理宿主机上,这被称为多Node容器化,但这通常是不常见的,而且需要高度的配置和管理,因为它涉及到共享宿主机上的资源和网络。

总之,一个宿主机通常对应一个Node节点,Kubernetes集群中的Node节点数量取决于您的集群规模和需求。要增加或减少Node节点,您可以根据需要添加或移除宿主机,并在Kubernetes中进行相应的配置。

  1. Pod:Pod是Kubernetes的最小部署单元,通常包含一个或多个容器,它们在同一网络命名空间、存储卷和节点上运行。Pod代表应用程序的一个实例。

  2. Service:Service定义了一组Pod的网络访问方式,提供了负载均衡、服务发现和DNS解析等功能,使应用程序能够稳定地运行。

  3. Volume:Volume是用于在Pod中持久化存储数据的抽象。它可以与Pod一起创建和销毁,并且可以挂载到Pod的一个或多个容器中。

  4. Namespace:Namespace用于将集群划分为多个虚拟集群,每个Namespace中可以有自己的Pod、Service和其他资源,以实现多租户和隔离。

  5. ConfigMap和Secret:ConfigMap用于存储配置数据,而Secret用于存储敏感数据,它们可以在Pod中以卷的形式挂载。

  6. Ingress:Ingress定义了HTTP和HTTPS流量的规则,允许外部流量访问集群内的服务。

  7. 其他附加组件:Kubernetes生态系统中还有许多其他附加组件,如监控工具、日志记录工具、自动伸缩控制器、认证和授权插件等,用于增强和扩展Kubernetes的功能。

Kubernetes的这些组件共同协作,以实现容器化应用程序的高度可扩展性、可用性和自动化管理。不同版本的Kubernetes可能会有一些变化和新增组件,但这些基本组件构成了Kubernetes的核心架构。

简介

yml文件---->前台处理---->API Server---->Controller Manager------>Kubelet(Pod创建,修改,监控等全周期管理)
API Server是资源对象的唯一操作入口,所有执行,操作解析后都是调用API然后触发Controller Manager实现功能。

Pods:

  • 一个可以被创建、销毁、调度、管理的最小的部署单元,例如一个或一组容器
  • 每个Pod有一个独立的IP
  • 同一个Pod的容器共享网络,共享存储资源:localhost相互通信

Pods的使用

  • 具有密切连接关系(相互访问、共享数据) 的容器放在同一个Pod中

在这里插入图片描述

K8S+Docker VS Docker

Docker+K8S简介

Kubernetes(通常缩写为K8s)和Docker是两个不同但密切相关的容器技术。它们在容器化应用程序方面发挥不同的角色,通常一起使用以实现更好的容器化应用程序管理和部署。

  1. Docker(容器引擎):

    • Docker是一种容器化技术,它允许开发人员将应用程序和其依赖项打包到一个可移植的容器中。这个容器包含了应用程序的所有必要组件,包括代码、运行时环境、库和配置。
    • Docker容器具有以下优点:可移植性、隔离性、轻量级、快速启动和关闭、易于扩展等。
  2. Kubernetes(容器编排平台):

    • Kubernetes是一个开源的容器编排平台,用于自动化和管理容器化应用程序的部署、扩展、更新和运维。Kubernetes提供了一种容器编排的框架,以确保容器在集群中按照期望的方式运行。
    • Kubernetes的功能包括自动负载均衡、自动扩展、容器自愈、滚动升级、服务发现等。它还提供了用于定义应用程序架构的声明式配置(例如Pods、Services、Deployments等)。

联系:

  • Docker通常用于创建和管理单个容器,而Kubernetes用于协调和管理多个容器的集群。Kubernetes可以管理数百甚至数千个容器实例,确保它们在各种节点上正确运行,具备高可用性和容错性。
  • Kubernetes可以使用Docker作为容器运行时(Container Runtime),这意味着它可以直接与Docker引擎一起使用。但是,Kubernetes也支持其他容器运行时,如Containerd和CRI-O。
  • Kubernetes提供了对Docker容器的高级编排、自动化和管理功能,例如水平扩展、自动恢复、滚动升级等,使得容器化应用程序在生产环境中更容易管理和扩展。

总之,Docker是容器技术的核心,而Kubernetes是一个容器编排平台,用于自动化和管理大规模的Docker容器集群。它们一起使用,可以实现高度可伸缩、高可用性的容器化应用程序部署和管理。

K8S配合docker相比较单纯使用docker

K8S配合docker优势(单独使用docker劣势)

  • 调度:灵活资源分配:CPU,GPU,内存等(Pod的label+Scheduler)
  • 修复:容器跑出问题了,换个主机再跑跑(controller manager)
  • 自动扩缩容:超过人为设定的监控指标自动扩缩容(controller manager)

Kubernetes(K8s)与单纯使用Docker相比,具有一些重要的优势和适用场景。下面是一些比较:

  1. 自动化容器编排

    • Kubernetes允许您自动化地编排、管理和扩展容器化应用程序,而无需手动管理容器的生命周期。这包括自动部署、水平扩展、滚动升级、自动故障恢复等功能,减少了操作负担。
  2. 高可用性

    • Kubernetes提供了内置的高可用性机制,允许您在多个节点上运行应用程序的副本,以确保应用程序的可用性。如果某个节点或容器失败,Kubernetes可以自动迁移工作负载以保持应用程序的正常运行。
  3. 多租户支持

    • Kubernetes支持命名空间(Namespaces),可以将集群划分为多个虚拟集群,每个命名空间都有自己的资源隔离,适用于多租户环境。
  4. 服务发现和负载均衡

    • Kubernetes提供了内置的服务发现和负载均衡功能,允许应用程序组件相互发现并与其他服务通信,而无需硬编码IP地址和端口。
  5. 声明式配置

    • Kubernetes使用声明式配置来定义应用程序的状态和规模,而不是命令式的操作。这样,您只需描述所需的状态,而不必关心如何达到该状态,Kubernetes会负责实现。
  6. 自动伸缩

    • Kubernetes可以根据工作负载的需求自动扩展应用程序,以满足流量的变化。这可以节省资源并确保应用程序的性能。
  7. 滚动升级和回滚

    • Kubernetes支持滚动升级,允许您在不中断服务的情况下逐步更新应用程序。如果升级失败,您可以轻松地回滚到之前的版本。
  8. 资源管理

    • Kubernetes提供了资源管理功能,允许您限制容器的CPU和内存使用,以确保资源公平共享。
  9. 生态系统支持

    • Kubernetes具有丰富的生态系统,包括各种插件、工具和集成,用于监控、日志记录、安全性、认证等方面。

然而,对于一些简单的应用场景,使用Docker本身可能足够了,特别是在开发和测试阶段。Kubernetes在复杂的容器化应用程序中表现出色,但也需要更多的配置和管理工作。因此,选择Kubernetes还是纯粹使用Docker取决于您的应用程序需求和规模。如果应用程序较小且需要简单的容器管理,Docker可能足够;但如果需要高可用性、自动化和扩展性,那么Kubernetes可能更适合。

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

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

相关文章

领域驱动设计:事件风暴构建领域模型

文章目录 事件风暴需要准备些什么?如何用事件风暴构建领域模型? 事件风暴是一项团队活动,领域专家与项目团队通过头脑风暴的形式,罗列出领域中所有的领域事件,整合之后形成最终的领域事件集合,然后对每一个…

【PowerQuery】Excel 一分钟以内刷新PowerQuery数据

当需要进行刷新的周期如果小于一分钟,采用数据自动刷新就无法实现自动刷新的目标。那就没有办法了吗?当然不是,这里就是使用VBA来实现自动刷新。这里实现VBA刷新的第一步就是将当前的Excel 保存为带有宏的Excel 文件,如果不带宏则无法运行带有宏代码的Excel文件,保存过程如…

数据结构与算法(一)数组的相关概念和底层java实现

一、前言 从今天开始,笔者也开始从0学习数据结构和算法,但是因为这次学习比较捉急,所以记录的内容并不会过于详细,会从基础和底层代码实现以及力扣相关题目去写相关的文章,对于详细的概念并不会过多讲解 二、数组基础…

分析udev自动创建设备结点的过程

当系统内核发现系统中添加了某个新的设备时,在内核空间中会对该驱动进行注册,并获取该驱动设备的信息,然后创建一个设备类(向上提交目录信息),并申请struct class对象并且初始化,然后创建一个设…

SpringCloud:Feign实现微服务之间相互请求

文章目录 🎉欢迎来到Java学习路线专栏~SpringCloud:Feign实现微服务之间相互请求 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客🎈该系列文章专栏:Java学习路线📜其他专栏&#xf…

2023大数据面试总结

文章目录 Flink(SQL相关后面专题补充)1. 把状态后端从FileSystem改为RocksDB后,Flink任务状态存储会发生哪些变化?2. Flink SQL API State TTL 的过期机制是 onCreateAndUpdate 还是 onReadAndWrite?3. watermark 到底…

使用IntelliJ IDEA本地启动调试Flink流计算工程的2个异常解决

记录:471 场景:使用IntelliJ IDEA本地启动调试Flink流计算时,报错一:加载DataStream报错java.lang.ClassNotFoundException。报错二:No ExecutorFactory found to execute the application。 版本:JDK 1.…

【Java基础篇 | 类和对象】--- 聊聊什么是内部类

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习Java的一点学习心得,欢迎大家在评论区讨论💌 前言 当一个事物的内部&…

Shell编程之定时任务

什么是定时任务 顾名思义,定时任务指的就是在指定/特定的时间进行工作,例如备份/归档数据、清理临时文件等。 在 Linux 中,可以使用 cron 定时器来定期执行任务。cron 是一个在后台运行的守护进程,用于根据指定的时间表自动执行任…

学习笔记|小数点控制原理|数码管动态显示|段码跟位码|STC32G单片机视频开发教程(冲哥)|第十集:数码管动态显示

文章目录 1.数码管动态刷新的原理2.动态刷新原理3.8位数码管同时点亮新建一个数组选择每个位需要显示的内容实战小练:简易10秒免单计数器将刷新动作写成函数 课后练习: 1.数码管动态刷新的原理 上述图片引用自:51单片机初学2-数码管动态扫描 用一排端口来…

UG\NX CAM二次开发 设置2D工序部件边界 UF_CAMBND_append_bnd_from_curve

文章作者:代工 来源网站:NX CAM二次开发专栏 简介: UG\NX CAM二次开发 设置2D工序部件边界 UF_CAMBND_append_bnd_from_curve 效果: 代码: static int init_proc(UF_UI_selection_p_t select, void* user_data) { int errorCode = 0; int num_triples = 1; …

【echarts】legend长度过长,内容过多导致换行怎么办?

通过设置翻页即可解决该问题 关键代码: type: scroll,// pageFormatter: , // 隐藏翻页的数字pageButtonItemGap: 2, // 翻页按钮的两个之间的间距pageIconColor: #6495ed, // 翻页下一页的三角按钮颜色pageIconInactiveColor: #aaa, // 翻页(即翻页到…

vue三个点…运算符时报错 Syntax Error: Unexpected token

出现以下问题报错: 解决: 在项目根目录新建一个名为.babelrc的文件 {"presets": ["stage-2"] }

docker 部署 node.js(express) 服务

1、在 express 项目根目录下新增 Dockerfile 文件,内容如下: 创建服务容器的方法,可以根据自己的情况选择: 1、以下示例为宿主机没有安装 node 环境的写法; 2、先在本地构建包含 node 和 express 的基础镜像&#xff0…

视频监控/安防监控/AI视频分析/边缘计算/TSINGSEE青犀AI算法智慧仓储解决方案

随着全球经济与科学技术的双重推动,我国的仓储管理已经进入了高速发展时期,物流仓储也由简单的储藏仓库向智能化仓储转变。TSINGSEE青犀AI智慧仓储解决方案是利用先进的信息技术和物联网技术来提高仓储管理效率、降低成本的一种仓储管理模式。 方案功能 …

【Linux学习笔记】基础命令2

1. rmdir指令 && rm指令1.1. 基础概念1.2. 命令用法1.2.1. rmdir命令1.2.2. rm命令1.2.3. rm命令的注意事项 2. man命令3. cp指令3.1. cp指令基础概念3.2. cp命令的用法 4. mv命令5. cat命令6. more命令 && less命令6.1. more命令6.2. less命令 7. head命令和t…

基于springboot+vue的大学社团管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

【算法】反悔贪心

文章目录 反悔贪心力扣题目列表630. 课程表 III871. 最低加油次数LCP 30. 魔塔游戏2813. 子序列最大优雅度 洛谷题目列表P2949 [USACO09OPEN] Work Scheduling GP1209 [USACO1.3] 修理牛棚 Barn RepairP2123 皇后游戏(🚹省选/NOI− TODO) 相关…

哪里可以了解轻量的工作流引擎?

如果想要实现高效率的办公,可以使用轻量的工作流引擎低代码技术平台。随着工作量日益繁重起来,传统的办公制作方式已经无法满足现实需要的,采用轻量级的表格制作工具,就能在无形中缓解办公压力,创造更高效、灵活、优质…

【Java】线程池八股文一

日常工作中有用到线程池吗?什么是线程池?为什么要使用线程池? 作为 JUC 包下的门面担当,线程池是名副其实的 JUC 一哥,不了解线程池,那说明你对 JUC 包其他工具也了解的不咋样吧,对 JUC 没深入…