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

K8S的基础知识

K8S的意义与入门

专有名词

  • 容器:包含了运行一个应用程序所需要的所有东西,包括:代码、运行时、各种依赖和配置。
  • pod:K8s调度的最小单元,包含一个或多个容器。一个容器组中的容器具有紧密耦合性,共享资源,存储空间和IP。即同一个容器组中的容器可以通过localhost:xxx访问其他容器
  • node:K8S中的执行角色为Node,一个Node一般是一个虚拟机或物理机,它上面事先运行着 docker 服务和 kubelet 服务( Kubernetes 的一个组件)。

容器编排的意义

  • 提出背景: 随着微服务架构的出现,单体式架构被拆分成了很多细小的服务,运行在各自的容器中。那么该如何解决它们之间的 依赖管理,服务发现,资源管理,高可用 等问题呢?
  • 容器编排的作用:
    • 资源编排: 限制各容器的可用资源,资源分配和调度。
    • 工作负载编排: k8s通过不同的 controller 将 Pod 调度到合适的 node 上,并且负责管理它们的生命周期。
    • 服务编排: 负责服务发现和高可用等,如 Kubernetes 中可用通过 Service 来对内暴露服务,通过 Ingress 来对外暴露服务‘

      Service :将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。
      Ingress :公开从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源上定义的规则控制;

K8S 的集群构成与原理

在这里插入图片描述

Master结构:

  • Api server:是整个系统的对外接口,供客户端和其它组件调用;
  • Etcd:Api server 的后台数据存储,相当于 Kubernetes 集群的数据中⼼;
  • Scheduler:负责对集群内部的资源进行调度;
  • Controller-manager:控制管理器,保证 Kubernetes 集群中的资源按照要求运⾏。

Node结构:

  • Kubelet:负责与 Master 节点交互,相当于master的代理,接受master下发的任务,进⽽执⾏具体的任务;
  • Kube-proxy:负责 Kubernetes 集群中的负载均衡;
  • Container-runtime:提供容器运行环境,有 docker,rkt 或者其他容器实现标准,负责容器的操作,启动或者关闭等;
  • Pod:k8s 的最小调度单元,1 个 pod 可以包含 1 个或多个容器,pod 可以理解为容器的集合。

Pod的创建流程

以创建 Pod 为例,来理解 Kubernetes 中的各组件的运⾏流程:

  1. 通过 api server 向集群发起创建 Pod 的指令,api server 将 yaml 中的配置的属性信息(metadata)写入 etcd 中。
  2. api server 触发 watch 机制准备创建 pod,信息转发给调度器 SchedulerScheduler 使用调度算法选择 node,然后将 node 信息给 api server,api server 将绑定的 node 信息写入 etcd。
  3. api server 又通过 watch 机制,调用 kubelet,指定 pod 信息,触发docker run命令创建容器。创建完成之后反馈给 kubelet, kubelet 又将 pod 的状态信息给 api server, api server 又将 pod 的状态信息写入etcd。
    ⾄此 Pod 真正的创建完毕。如果因为某些原因 Pod 出现了问题,集群中的 controller-manager 会向 apiserver 发起创建的请求。
    在这里插入图片描述

K8s中控制器管理

控制器模式与声明式API编程

Kubernetes 如何能够实现最大单个集群能够达到5000个节点,15万个Pod的完全自动化管理,主要归功于声明式API编程控制器模式的协作。

  • 控制器模式: 在k8s集群中,控制器通过 API Server提供的(List & Watch)接口实时监控集群中资源对象的状态变化,当发生故障,导致资源对象的状态变化时,控制器会尝试将其状态调整为期望的状态。发现变化的方式有两种,一种为定时轮训,一种为监听通知。

    比如当某个Pod出现故障时,Deployment Controller会及时发现故障并执行自动化修复流程,确保集群里的Pod始终处于预期的工作状态。

  • 声明式API编程: 相反于 命令式的编程方法的一种编程方式。只给目标,不关乎结果,目标达成即可。简单说,如果要扩容,并不是给“创建一个新node”的指令,而是直接将node数改为“n+1”。声明式更新的好处是不会丢失历史变更。

ReplicaSet 控制器

  • ReplicaSet 主要的作用是维持一组Pod副本的运行,使pod副本的数量始终维持在预设的个数。它会持续监听这些Pod的运行状态,在Pod发生故障时重启pod,pod数量减少时重新运行新的 Pod副

相关文章:

K8S的基础知识

K8S的意义与入门 专有名词 容器:包含了运行一个应用程序所需要的所有东西,包括:代码、运行时、各种依赖和配置。pod:K8s调度的最小单元,包含一个或多个容器。一个容器组中的容器具有紧密耦合性,共享资源,存储空间和IP。即同一个容器组中的容器可以通过localhost:xxx访问…...

java:基于jjwt写一个jwt工具类

背景 在Java中,使用JWT(JSON Web Tokens)相关的包通常包括以下内容: jjwt:JJWT是一个非常流行的Java JWT库,它提供了简单易用的API来创建和验证JWT。jose4j:JOSE4J是一个用于处理JSON Web签名…...

AK F.*ing leetcode 流浪计划之半平面求交

欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击。 本期话题:半平面求交 背景知识 学习资料 视频讲解 https://www.bilibili.com/video/BV1jL411C7Ct/?spm_id_from333.1007.top_right_bar_window_history…...

docker搭建zokeeper集群、kafka集群

三台机器,ip分别为ip1,ip2,ip3 一、安装docker集群 1、三台机器分别拉取镜像 docker pull wurstmeister/zookeeper 2、三台机器分别运行容器 (1)第一台 docker run -d --restartalways --log-driver json-file --log-opt max-size100m --lo…...

【java学习—十四】反射机制调用指定方法、指定属性(5)

文章目录 1. 调用指定方法2. 调用指定属性 1. 调用指定方法 通过反射,调用类中的方法,通过 Method 类完成。步骤:     ①通过 Class 类的 getMethod(String name,Class...parameterTypes) 方法取得一个 Method 对象,并设置此…...

PC端微信@所有人逻辑漏洞

(一)过程 这个漏洞是PC端微信,可以越权让非管理员艾特所有人,具体步骤如下 第一步:找一个自己的群(要有艾特所有人的权限)“123”是我随便输入的内容,可以更改,然后按c…...

如何在Windows 10中进行屏幕截图

本文介绍如何在Windows 10中捕获屏幕截图,包括使用键盘组合、使用Snipping Tool、Snipp&Sketch Tool或Windows游戏栏。 使用打印屏幕在Windows 10中捕获屏幕截图 在Windows 10中捕获屏幕截图的最简单方法是按下键盘上的PrtScWindows键盘组合。你将看到屏幕短暂…...

【nlp】2.4 GRU模型

GRU模型 1 GRU介绍2 GRU的内部结构图2.1 GRU结构分析2.2 Bi-GRU介绍2.3 使用Pytorch构建GRU模型2.4 GRU优缺点3 RNN及其变体1 GRU介绍 GRU(Gated Recurrent Unit)也称门控循环单元结构, 它也是传统RNN的变体, 同LSTM一样能够有效捕捉长序列之间的语义关联, 缓解梯度消失或爆…...

国科云:浅谈DNS缓存投毒常见类型和防御策略

为了提升解析效率减轻各级服务器的解析压力,DNS系统中引入了缓存机制,但这同样也带来了较大的安全隐患,为攻击者利用DNS缓存进行投毒攻击创造了条件,对DNS系统的安全造成了巨大破坏。本文国科云将分析缓存投毒的两种主要类型&…...

Linux命令(120)之tcpdump

linux命令之tcpdump 1.tcpdump介绍 linux命令tcpdump是用来将网络中传送的数据包完全截获下来以进行相关分析,常用的分析工具是wireshark 2.tcpdump用法 tcpdump [参数] tcpdump参数 参数说明-i指定端口-n指定协议-t在输出的每一行不打印时间戳-s抓取数据包时&a…...

2311rust对接C

原文 为了与其他语言通信,Rust提供了(FFI)外部函数接口.FFI是Rust和C间的函数调用,与C函数调用有相同性能的零成本抽象. FFI绑定还可利用(如所有权和借用)语言功能来提供强制指针和其他资源协议的安全接口. Rust与C对话 从Rust调用C代码的简单示例开始.如下为C代码: int do…...

MYSQL字符串函数详解和实战(字符串函数大全,内含示例)

MySQL提供了许多字符串函数,用于处理和操作字符串数据。以下是一些常用的MYSQL字符串函数。 建议收藏以备后续用到查阅参考。 目录 一、CONCAT 拼接字符串 二、CONCAT_WS 拼接字符串 三、SUBSTR 取子字符串 四、SUBSTRING 取子字符串 五、SUBSTRING_INDEX 取子…...

从C语言到C++_40(多线程相关)C++线程接口+线程安全问题加锁(shared_ptr+STL+单例)

目录 1. C多线程 1.1 thread库 1.2 mutex库 1.3 RAII锁 1.4 atomicCAS 1.5 condition_variable 1.6 分别打印奇数和偶数 2. shared_ptr线程安全 2.1 库里面的shared_ptr使用 2.2 shared_ptr加锁代码 3. 单例模式线程安全 3.1 懒汉模式线程安全问题 3.2 懒汉模式最…...

Angular 指令介绍及使用(三)

Angular 指令概述 在 Angular 中,指令是一种机制,用于扩展和修改组件的行为和外观。指令可以由开发者自定义,也可以是 Angular 框架自带的一些内置指令。通过使用指令,我们可以在 HTML 模板中通过属性或元素名来操作组件。 Angu…...

小学生加减乘除闯关运算练习流量主微信小程序开发

小学生加减乘除闯关运算练习流量主微信小程序开发 经过本次更新,我们增加了新的功能和特性,以提升用户体验和运算练习的趣味性: 能量石与激励视频:用户可以通过观看激励视频来获取能量石,这些能量石可以用于解锁收费…...

普通测径仪升级的智能测径仪 增添11大实用功能!

普通测径仪能对各种钢材进行非接触式的外径及椭圆度在线检测,测量数据准确且无损,可测、监测、超差提示、系统分析等。在此基础上,为测径仪进行了进一步升级制成智能测径仪,为其增添更多智能化模块,让其使用更加方便。…...

vue做的一个一点就转的转盘(音乐磁盘),点击停止时会在几秒内缓慢停止,再次点击按钮可以再次旋转,

先看效果&#xff1a; 代码&#xff1a;主要部分我会红线画出来 css:部分&#xff1a; 源码&#xff1a; vue部分&#xff1a; <template><div class"song-lyric"><div><div class"type"><div class"right">&l…...

Spring6(一):入门案例

文章目录 1. 概述1.1 Spring简介1.2 Spring 的狭义和广义1.3 Spring Framework特点1.4 Spring模块组成 2 入门2.1 构建模块2.2 程序开发2.2.1 引入依赖2.2.2 创建java类2.2.3 创建配置文件2.2.4 创建测试类测试 2.3 程序分析2.4 启用Log4j2日志框架2.4.1 引入Log4j2依赖2.4.2 加…...

Linux中报错no space device解决思路

1&#xff0c;df -h &#xff1a;查看所有文件下的磁盘使用情况。注意&#xff0c;查询的最后一栏属性就是分区所在的目录路径 2&#xff0c;进到具体的文件下&#xff0c;接着命令&#xff1a;du -sh * | grep G 搜索G以上的文本。 没搜到内容的话&#xff0c;使用命令du -sh…...

vue3使用element-plus

安装 # NPM $ npm install element-plus --save# Yarn $ yarn add element-plus# pnpm $ pnpm install element-plus 全局引入 main.js // main.ts import { createApp } from vue import ElementPlus from element-plus//引入ElementPlus所有组件 import element-plus/dis…...

Ventoy终极指南:一个U盘启动所有系统,告别重复格式化烦恼 [特殊字符]

Ventoy终极指南&#xff1a;一个U盘启动所有系统&#xff0c;告别重复格式化烦恼 &#x1f60e; 【免费下载链接】Ventoy A new bootable USB solution. 项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy 还在为每次安装系统都要重新制作启动盘而烦恼吗&#x…...

三步实现跨架构程序兼容:Box64高效架构转换指南

三步实现跨架构程序兼容&#xff1a;Box64高效架构转换指南 【免费下载链接】box64 Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64, RV64 and LoongArch Linux devices 项目地址: https://gitcode.com/gh_mirrors/bo/box64 你是否曾在ARM64…...

告别鼠标手!5分钟上手开源鼠标连点器MouseClick,轻松实现自动化点击

告别鼠标手&#xff01;5分钟上手开源鼠标连点器MouseClick&#xff0c;轻松实现自动化点击 【免费下载链接】MouseClick &#x1f5b1;️ MouseClick &#x1f5b1;️ 是一款功能强大的鼠标连点器和管理工具&#xff0c;采用 QT Widget 开发 &#xff0c;具备跨平台兼容性 。软…...

内存占用3KB!极致瘦身释放MCU无限可能

极致小体积&#xff0c;给工业领域带来了无限的可能&#xff1a;更低硬件成本&#xff0c;更小芯片体积&#xff0c;更低功耗&#xff0c;更高可靠性&#xff0c;让每一颗小MCU都拥有大系统的完整能力。 https://www.bilibili.com/video/BV1eZLi6PEjc/?spm_id_from333.1387.ho…...

多智能体谈判系统:Agent 如何通过博弈达成最优交易价格?

多智能体谈判系统&#xff1a;Agent 如何通过博弈达成最优交易价格&#xff1f;关键词 多智能体系统、自动谈判、博弈论、纳什均衡、帕累托最优、双边/多边谈判、强化学习谈判、动态定价 摘要 想象一个没有人类中介的世界&#xff1a;电商平台上的智能客服自动和批发商砍价、供…...

榨干Codex!OpenAI工程师亲授Codex真正用法

你可能把 Codex 当编程助手用&#xff0c;改改代码&#xff0c;跑跑测试。但它的能力远不止于此。OpenAI 的客户支持工程师 Jason&#xff08;jxnlco&#xff09;告诉你&#xff0c;Codex 其实是一套完整的电脑工作系统&#xff0c;从语音输入到自动化&#xff0c;从浏览器操控…...

【2025】AWVS安装保姆级教程(最新25.1.2可用)

【2025】AWVS安装保姆级教程&#xff08;最新25.1.2可用&#xff09; 文章目录 工具下载Host 重定向AWVS安装AWVS查看安装失败原因 工具下载 点击下载即可 下载完的工具后缀格式为.apk&#xff0c;需要将其改为.zip&#xff0c;然后将其解压得到以下工具后续安装使用 Host 重…...

大厂校招变了:AI 能力正在进入笔试和面试

最近不少同学投递校招时&#xff0c;应该已经发现一个变化&#xff1a; 以前 JD 里写的是“熟悉 Python / Java / SQL / Office 优先”。 现在越来越多岗位开始出现新的描述&#xff1a; “熟练使用 AI 工具者优先” “了解大模型应用者优先” “具备 AI 辅助编程经验优先” “…...

实测对比,使用Taotoken聚合接口后Agent任务延迟与稳定性观感

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 实测记录&#xff1a;使用 Taotoken 聚合接口后 Agent 任务延迟与稳定性观感 效果展示类&#xff0c;记录将原有基于单一 API 的 A…...

2026上海GEO生成式引擎优化服务商综合实力测评:谁在真正帮品牌进入AI答案

当企业在讨论“上海生成式引擎优化公司哪家好”时&#xff0c;这个问题本身就反映了市场一个关键的转折。两三年前&#xff0c;企业营销的主战场还是搜索引擎排名和官网访问量。现在&#xff0c;决策者开始频繁向DeepSeek、豆包、通义千问等AI工具提问&#xff0c;而这些生成式…...