当前位置: 首页 > news >正文

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劣势)

  • 调度:灵活资源分配(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可能更适合。

相关文章:

kubernetes(K8S)笔记

文章目录 大佬博客简介K8SDocker VS DockerDockerK8S简介K8S配合docker相比较单纯使用docker 大佬博客 Kubernetes(通常缩写为K8s)是一个用于自动化容器化应用程序部署、管理和扩展的开源容器编排平台。它的构造非常复杂,由多个核心组件和附加…...

vue 部署到本机IIS 部署 SPA 应用

安装 URL Rewrite Works With: IIS 7, IIS 7.5, IIS 8, IIS 8.5, IIS 10 URL Rewrite : The Official Microsoft IIS Site 目前电脑IIS是6版本的,以下的方法不太合适操作。目前用Nginx部署,够用了。 nginx配置参考: uni-app 前面项目&am…...

面试那些事——Java全栈

今年年初因为个人的精神状态和职业方向辞职休息了一段时间,最近重新找了一份开发的工作,还是在太原,在这里分享一下自己的一些面试经验。 面试,面的是什么 我们要知道,目标的就职地行业的需求是什么,目标的…...

LINUX 文件基本管理

一、文件类型和根目录结构 1、文件类型 可以通过 ls -l 或者 ll来查看文件类型 可以根据显示,查看第一个字符,就表示文件类型。 - 字符:普通文件,类似于Windows的记事本。 d 字符:目录文件,类似于Wind…...

一、认识GitHub项目 —— TinyWebServer

认识GitHub项目 —— TinyWebServer 一、前言 这个项目是Linux下C轻量级Web服务器。几乎是想从事C服务器开发方向的同学的必备初始项目了。属于那种,“烂大街”,但是你又不能不会的项目。 对这个项目笔者打算多分几章讲解,帮助刚用GitHub&a…...

66.C++多态与虚函数

目录 1.什么是多态 2.多态的分类 3.对象转型 3.1 向上转型: 3.2 向下转型: 4.虚函数 1.什么是多态 生活中的多态,是指的客观的事物在人脑中的主观体现。例如,在路上看到⼀只哈士奇,你可以看做是哈士奇&#xf…...

【ICer的脚本练习】通过perl脚本来检查仿真log的结果

系列的目录说明请见:ICer的脚本练习专栏介绍与全流程目录_尼德兰的喵的博客-CSDN博客 前言 这是一个非常简单的perl脚本示例,展示一下perl语言“极简”的编码习惯。perl是我脚本入门的语言,一度也是最擅长的,但是因为python的强势现在我基本不写perl了。上一个大的perl脚本…...

创邻科技图数据库课程走进一流高校

《图数据库原理和实践》 正式开课! 最近,浙江大学计算机学院新开了一门名为 《图数据库原理和实践》 的新课程,该课程由创邻科技和浙江大学联合推出,吸引了许多学生踊跃参与! 曾为浙大学子的创邻科技CTO周研博士作为…...

RabbtiMQ的安装与在Springboot中的使用!!!

一、安装Erlang与Rabbitmq 安装教程本教程是在centos8下试验的,其实linux系统的都差不多RabbitMQ官方:Messaging that just works — RabbitMQRabbitMQ是开源AMQP实现,服务器端用Erlang语言编写,Python、Ruby、 NET、Java、JMS、c…...

【可定制、转换时间戳】解析nc文件,并保存为csv文件

解析nc文件,并保存为csv文件 写在最前面解析nc文件(代码汇总放最后面)读取nc文件获取气象文件中所有变量解析时间解析部分代码汇总 写入csv文件 写在最前面 愿称之为:支持私人订制、非常完美的版本 参考: 解析部分参…...

介绍串行和并行两种通信方式

前言 参考文章: 串行和并行- CSDN搜索 并行传输和串行传输的区别_金陵大掌柜的博客-CSDN博客 串行和并行介绍 (1)串行和并行是计算机领域中两个重要的概念。串行是指在计算机中,任务按照顺序一个一个执行,每个任务执行…...

优化爬虫效率:利用HTTP代理进行并发请求

网络爬虫作为一种自动化数据采集工具,广泛应用于数据挖掘、信息监测等领域。然而,随着互联网的发展和网站的增多,单个爬虫往往无法满足大规模数据采集的需求。为了提高爬虫的效率和性能,我们需要寻找优化方法。本文将介绍一种利用…...

关于磁盘空间不够,导致报错 springboot内置tomcat相关的临时目录无法创建等问题,如何自定义配置 tomcat 缓存文件路径

问题 关于磁盘空间不够,导致报错 springboot内置tomcat相关的临时目录无法创建等问题,如何自定义配置 tomcat 缓存文件路径 解决方法: shell 脚本命令:(配置自定义缓存路径 java-Djava.io.tmpdir ) tmp…...

Android HAL - hidl-gen

1.hidl-gen的使用 hidl-gen 编译器会将 .hal 文件编译成一组 .h 和 .cpp 文件,这些 自动生成的文件用于编译客户端 / 服务端实现链接到的共享库,同 时也可以生成 Android.bp 编译文件。 1.1 生成的文件 HIDL 软件包中自动生成的文件会关联到与该软件…...

CGAL 数值类型

文章目录 一、简介二、内置数值类型三、CGAL提供的数值类型四、GMP提供的数值类型五、LEDA提供的数值类型六、CORE提供的数值类型七、区间运算参考资料一、简介 数字类型必须满足一定的语法和语义要求,这样它们才能在CGAL代码中成功使用。一般来说,它们被认为是一个代数结构概…...

建站系列(六)--- 后端开发语言

目录 相关系列文章前言一、常见后端开发语言二、PHP三、Java四、Python五、Go 相关系列文章 建站系列(一)— 网站基本常识 建站系列(二)— 域名、IP地址、URL、端口详解 建站系列(三)— 网络协议 建站系列…...

王道数据结构编程题 查找

二叉树定义 以下为本文解题代码的二叉树定义。 struct TreeNode {int val;TreeNode* left, *right;TreeNode(int val 0, TreeNode* left nullptr, TreeNode* right nullptr): val(val), left(left), right(right) {} };递归二分查找 题目描述 写出二分查找的递归算法。初…...

vue 部分知识点总结

计算属性和方法有什么区别,怎么选择? 在编程中,计算属性和方法都是用于处理数据的工具,但它们有一些区别。以下是它们的区别和如何选择的几个因素: 执行方式:计算属性是基于依赖的响应式系统,在…...

谷粒商城----ES篇

一、product-es准备 P128 ES在内存中,所以在检索中优于mysql。ES也支持集群,数据分片存储。 需求: 上架的商品才可以在网站展示。上架的商品需要可以被检索。 分析sku在es中如何存储 商品mapping 分析:商品上架在es中是存s…...

Redis3.2.1如何设置远程连接?允许局域网访问

背景: 电脑A的redis需要开放给电脑B使用,二者处于同一局域网 【后面会补充更详细的踩坑历程,先发出来作为记录】 过程: 在你查了很多方法后,如果还是没有解决, 尝试考虑一下你的redis配置文件是不是修…...

网络原理(二)TCP的可靠传输

网络原理(一)目录 网络原理应用层传输层先说UDP(不可靠传输)重点说明TCP(可靠传输)一、确认应答二、超时重传三、链接管理建立连接断开链接 四、滑动窗口五、流量控制&am…...

Chat GPT 使用教学,文字创作、学习

目录 文章长篇文章学习任何东西文章 大纲、目录、标题、内容 写出10个即将被AI取代的工作的文章标题 当然,以下是一些可能会被AI取代的工作的文章标题:"未来十年,AI将如何改变传统制造业的就业格局?" "智能客服崛起:人工智能如何重塑客户服务行业?"…...

Android之 Canvas绘制

一 Canvas介绍 1.1 Canvas 是绘制图形的重要类之一,它可以在 View 或 SurfaceView 上绘制各种图形和文本. 1.2 要创建 Canvas,首先需要有一个 View 或 SurfaceView 对象,在 View 或 SurfaceView 的绘制方法中,可以通过 Canvas 的…...

Vue + Element UI 前端篇(十五):嵌套外部网页

Vue Element UI 实现权限管理系统 前端篇(十五):嵌套外部网页 嵌套外部网页 在有些时候,我们需要在我们的内容栏主区域显示外部网页。如查看服务端提供的SQL监控页面,接口文档页面等。 这个时候就要求我们的导航菜…...

Jabbi的Rust学习日记(二)

特征: 就目前我学习到的rust知识来看,我认为rust有以下几个特征: 链式调用表达式强类型 use 使用use导入包,我觉得rust的导包和python的很像 main main函数是rust可执行程序最先执行的代码,可以说是程序的入口&…...

【杂】环形时钟配色笔记

配色网站笔记 coolorsflatuicolorscolordrophttps://www.webdesignrankings.com/resources/lolcolors/ 配色2...

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记

一、核心知识点(重点): 1.1 Cookie 1. Cookie:是一种客户端会话技术,数据会被保存在客户端,Cookie会携带数据访问服务器,用以完成一次会话内多次请求间的数据共享 2. 过程:浏览器…...

分类预测 | MATLAB实现PCA-BiLSTM(主成分双向长短期记忆神经网络)分类预测

分类预测 | MATLAB实现PCA-BiLSTM(主成分双向长短期记忆神经网络)分类预测 目录 分类预测 | MATLAB实现PCA-BiLSTM(主成分双向长短期记忆神经网络)分类预测预测效果基本介绍程序设计参考资料致谢 预测效果 基本介绍 分类预测 | MATLAB实现PCA-BiLSTM(主成分双向长短期记忆神经网…...

Yarn 和 npm 的区别

Yarn 和 npm 都是 JavaScript 的包管理工具,它们的主要区别在于以下几个方面: 性能:Yarn 的安装速度和包的下载速度通常比 npm 更快,这是因为 Yarn 使用本地缓存和并行下载等技术来提高性能。 可靠性:Yarn 具有更好的…...

第20章 原子操作实验(iTOP-RK3568开发板驱动开发指南 )

在上一章节的实验中,对并发与竞争进行了实验,两个app应用程序之间对共享资源的竞争访问引起了数据传输错误,而在Linux内核中,提供了四种处理并发与竞争的常见方法,分别是原子操作、自旋锁、信号量、互斥体,…...