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

详细介绍:Kubernetes(K8s)的技术架构(核心概念、调度和资源管理、安全性、持续集成与持续部署、网络和服务发现)

目录

  • 前言
  • 1、K8s架构概述
    • 1.1、控制面(Control Plane)
    • 1.2、工作节点(Worker Node)
  • 2、Kubernetes核心概念
    • 2.1、Pod
    • 2.2、ReplicaSet
    • 2.3、Deployment
    • 2.4、Service
    • 2.5、Namespace
    • 2.6、ConfigMap与Secret
    • 2.7、Persistent Volume(PV)与Persistent Volume Claim(PVC)
    • 2.8、StatefulSet
    • 2.9、DaemonSet
    • 2.10、Job与CronJob
  • 3、K8s调度与资源管理
  • 4、K8s网络与服务发现
  • 5、K8s安全性
  • 6、K8s监控与日志管理
  • 7、K8s持续集成与持续部署(CI/CD)

前言

亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力,谢谢大家!有问题请私信或联系邮箱:fn_kobe@163.com

简介:
Kubernetes(简称K8s)是一种开源的容器编排平台,广泛应用于自动化部署、扩展和管理容器化应用程序。K8s可以运行在多种环境中,包括公有云、私有云以及本地数据中心。Kubernetes的核心功能是通过声明式配置管理集群中的应用容器,确保应用高效、稳定地运行。

Kubernetes是一个功能强大的容器编排平台,其设计的核心目标是简化大规模容器化应用的管理。通过声明式配置和自动化的调度、扩展、负载均衡等功能,Kubernetes使得开发和运维人员能够高效地管理复杂的容器化应用。然而,要深入理解和熟练运用Kubernetes,需要不断探索和实践各种组件和功能的细节。

1、K8s架构概述

Kubernetes的架构采用了客户端-服务器模型,由多个组件组成。主要组件包括控制面(Control Plane)和工作节点(Worker Nodes)

1.1、控制面(Control Plane)

控制面负责集群的整体管理和决策,如应用的部署、监控、扩缩容等。控制面组件通常包括以下几项:
①API Server(kube-apiserver):API Server是K8s集群的前端,它暴露K8s API并接收来自用户、开发者或K8s内部组件的请求。它是所有K8s组件交互的核心。

②etcd:一个强一致性的键值存储,K8s用它来存储所有的集群状态和配置数据。etcd确保所有配置的一致性和持久性。

③Controller Manager(kube-controller-manager):负责集群的控制逻辑,自动维护集群的状态。例如,部署应用、检查Pod是否运行,自动修复错误等。

④Scheduler(kube-scheduler):负责将未分配的Pod调度到合适的节点上。它依据资源利用率、硬件能力、亲和性和拓扑规则等因素进行决策。

⑤Cloud Controller Manager:如果K8s运行在云环境中,云控制器管理器与云提供商的API进行交互,管理集群资源的生命周期。

1.2、工作节点(Worker Node)

工作节点是K8s集群的执行环境,负责运行应用程序。每个工作节点上都有以下组件:

①Kubelet:Kubelet是每个工作节点上的核心代理,负责管理Pod的生命周期,包括确保容器运行在预期的状态,处理从API Server来的Pod定义,报告Pod的状态等。

②Kube Proxy:Kube Proxy负责为Pod之间的通信提供网络代理功能。它维护每个节点的网络规则,确保服务发现和负载均衡。

③Container Runtime:容器运行时负责拉取容器镜像并运行容器。常用的容器运行时有Docker、containerd等。

2、Kubernetes核心概念

Kubernetes是基于一系列核心概念来组织和管理容器化应用的,理解这些概念对于有效使用K8s至关重要。

2.1、Pod

Pod是Kubernetes中最小的可调度单元。Pod可以包含一个或多个容器(通常是一个容器)。所有容器共享同一个网络空间和存储卷,因此可以高效地协同工作。Pod通常用于运行单一的应用程序实例,多个容器放在同一个Pod中可以帮助它们共享数据和网络。

2.2、ReplicaSet

ReplicaSet确保指定数量的Pod副本在任何时间点都在集群中运行。它能够自动修复Pod的失败,确保Pod副本的数量与预期一致。ReplicaSet常常与Deployment配合使用,后者提供了更多的功能和控制。

2.3、Deployment

Deployment是管理Pod和ReplicaSet的控制器,简化了Pod的部署和更新操作。通过声明式的配置,用户可以创建、更新和回滚应用程序版本。Deployment会在后台管理ReplicaSet和Pod,确保Pod的副本数与声明一致。

2.4、Service

Service是一种抽象的资源,它定义了如何访问Pod。Service为Pod提供了稳定的网络访问入口,并能自动地进行负载均衡。常见的Service类型包括:

ClusterIP:默认类型,在集群内为Pod提供内部访问。
NodePort:为Pod提供一个可通过集群节点的固定端口访问的入口。
LoadBalancer:在支持的云平台上,通过外部负载均衡器暴露Service。
ExternalName:将Service映射到外部DNS名称。

2.5、Namespace

Namespace用于将Kubernetes资源进行逻辑隔离,它可以将多个项目或团队的资源划分到不同的命名空间中。每个命名空间是一个虚拟的集群,资源在不同命名空间之间不能直接访问。

2.6、ConfigMap与Secret

ConfigMap:用于存储配置信息,K8s中的应用可以动态加载这些配置信息,而无需重新构建镜像。
Secret:类似于ConfigMap,但专门用于存储敏感信息,如密码、API密钥等。

2.7、Persistent Volume(PV)与Persistent Volume Claim(PVC)

Persistent Volume (PV):是K8s集群中的存储资源,由管理员进行预先配置。PV可以是物理存储(如NFS、iSCSI)或云存储(如EBS、GCE)等。

Persistent Volume Claim (PVC):用户申请存储的请求,PVC与PV关联,确保应用能够在Pod中持久化存储。

2.8、StatefulSet

StatefulSet是K8s中管理有状态应用的控制器。与Deployment不同,StatefulSet为每个Pod分配唯一的标识符,并保证Pod的顺序性和稳定性。它适用于数据库等有状态服务。

2.9、DaemonSet

DaemonSet确保在每个节点上运行一个Pod副本。DaemonSet常用于日志收集、监控代理等需要在每个节点上运行的应用。

2.10、Job与CronJob

Job:控制器用于管理批处理任务,确保指定数量的Pod成功完成工作。
CronJob:用于定时执行任务,类似Linux的cron,允许用户按指定时间间隔运行Job。

3、K8s调度与资源管理

K8s的调度器负责将Pod分配到合适的节点上,调度决策会考虑以下因素:
①资源需求:每个Pod可以声明所需的CPU、内存等资源,调度器会确保节点有足够的资源来满足Pod的需求。
②亲和性与反亲和性:用户可以为Pod定义亲和性(Affinity)规则,确保Pod在特定的节点或区域上运行;反亲和性(Anti-Affinity)则是避免Pod在某些节点上运行。
③Taints与Tolerations:Taints与Tolerations机制用于防止Pod调度到不合适的节点上。
④Pod优先级与抢占:K8s支持Pod优先级,优先级高的Pod可以抢占低优先级Pod的资源。

4、K8s网络与服务发现

Kubernetes使用CNI(Container Network Interface)来管理容器网络,确保容器之间能够相互通信。K8s的网络模式主要有以下特点:
①Pod网络:每个Pod都有一个唯一的IP地址,Pod之间可以直接通信,而不需要通过宿主机。
②Service与负载均衡:K8s中的Service为Pod提供稳定的访问入口,且可实现负载均衡。

5、K8s安全性

Kubernetes的安全性涉及多个方面,包括身份验证、授权、密钥管理等:
①RBAC(Role-Based Access Control):RBAC是Kubernetes的访问控制模型,用于定义哪些用户或服务可以访问哪些资源。
②PodSecurityPolicy:PodSecurityPolicy允许集群管理员定义Pod的安全约束。
③Network Policies:Kubernetes的网络策略可以定义哪些Pod之间可以相互通信,从而增强网络层面的安全性。
⑤Secrets:Secrets用于存储敏感信息,如密码和API密钥。

6、K8s监控与日志管理

Kubernetes本身不提供内置的日志管理和监控系统,但它支持与外部系统集成来实现这些功能。常见的解决方案包括:
①Prometheus:Kubernetes集群的监控工具,收集资源使用情况、Pod状态等信息,并通过Alertmanager进行告警。
②Fluentd、Elasticsearch和Kibana(EFK堆栈):这是一种常见的日志管理方案,Fluentd用于收集日志,Elasticsearch用于存储日志,Kibana用于日志的可视化。

7、K8s持续集成与持续部署(CI/CD)

Kubernetes支持与CI/CD工具(如Jenkins、GitLab CI等)集成,以实现自动化部署。通过K8s的Helm工具,用户可以轻松地管理Kubernetes应用的发布和回滚。

相关文章:

详细介绍:Kubernetes(K8s)的技术架构(核心概念、调度和资源管理、安全性、持续集成与持续部署、网络和服务发现)

目录 前言1、K8s架构概述1.1、控制面(Control Plane)1.2、工作节点(Worker Node) 2、Kubernetes核心概念2.1、Pod2.2、ReplicaSet2.3、Deployment2.4、Service2.5、Namespace2.6、ConfigMap与Secret2.7、Persistent Volume&#x…...

[SAP ABAP] Dialog屏幕开发

Dialog屏幕开发在SAP ABAP环境中被广泛应用于创建交互式的用户界面,允许终端用户与应用程序进行互动 Dialog屏幕开发相关资料 [Dialog屏幕开发] 设置GUI Status 菜单/GUI Title 标题 [Dialog屏幕开发] 屏幕绘制(文本/输入框/按钮控件)...

安全测试之 SSTI 模板注入入门

文章目录 一、什么是SSTI?二、python 中的 Jinja2 漏洞验证三、Java 的 Thymeleaf 模版漏洞验证四、小结 一、什么是SSTI? SSTI(Server-Side Template Injection)是一种服务器端模板注入漏洞,它出现在使用模板引擎的W…...

滑动窗口解题模板

滑动窗口适用于固定长度的窗口问题,或者需要动态维护一个窗口的场景。 模板 public int slidingWindowTemplate(int[] nums, int k) { int n nums.length; int maxSum 0; // 记录最大值(或最小值) int windowSum 0; // 当前窗口的值 …...

SOC和SOH的含义

SOC 和 SOH 是在电池管理系统中常见的两个概念,通常用于描述电池的状态,以下是具体解释: SOC(State of Charge) 定义:荷电状态,也叫剩余电量,反映的是电池在一定条件下当前所剩余的…...

Genetic Prompt Search via Exploiting Language Model Probabilities

题目 利用语言模型概率的遗传提示搜索 论文地址:https://www.ijcai.org/proceedings/2023/0588.pdf 项目地址:https://github.com/zjjhit/gap3 摘要 针对大规模预训练语言模型(PLMs)的即时调优已经显示出显著的潜力,尤其是在诸如fewshot学习…...

1561. 你可以获得的最大硬币数目

class Solution:def maxCoins(self, piles: List[int]) -> int:piles.sort()res,n0,len(piles)for i in range(n//3):respiles[n-2-2*i]return res这里如果"你"想要获取最大,那么从最大的开始找 每隔俩算一个最大累计,Bob默认自己从最小那找…...

DNA结合之Motif_1:CNN

1,首先可以识别在KO前后的motif——》由CNN模型做出识别,看看这个有没有什么灵感 2,ZNF143等都可以使用来识别 3,暂时只使用单个peak文件,后期可以使用ENCODE中所有的对应的TF的peak文件 1,文件解压之后…...

kong 网关和spring cloud gateway网关性能测试对比

该测试只是简单在同一台机器设备对spring cloud gateway网关和kong网关进行对比,受限于笔者所拥有的资源,此处仅做简单评测。 一、使用spring boot 的auth-service作为服务提供者 该服务提供了一个/health接口,接口返回"OK"&…...

【2024 CSDN博客之星】个人收获分享

目录 [ C 语言 ] [ 数据结构 ] [ 算法 ] [ C ] [Linux] [Mysql] [Redis 文档学习] [Docker 云原生] [Git] [Qt] 转眼间大学就过了一年半,这一年半间好像习惯了,开心了那就学会吧,不开心了学会吧就开心了......期间在学习上面也走了…...

Codeforces Round 998 (Div. 3)(部分题解)

补题链接 A. Fibonacciness 思路&#xff1a;了解清楚题意&#xff0c;求得是最大的斐波那契的度&#xff0c;数组只有5个数(最多度为3)&#xff0c;能列出其对应的式子 或 或 #include <bits/stdc.h> using namespace std; #define int long long void solve() {int …...

[创业之路-261]:《向流程设计要效率》-1-流程体系的建立是一场全方位的变革,一定会遇到各种阻力,需要全方位、系统性地进行流程管理

目录 一、思想和思维方式的转变 1.1 使能流程的战略 1.2 使能流程的组织 1. 流程决定组织 2. 基于流程分配责权利与资源 3. 从“管控”到“赋能” 1.3 使能流程的人才 1. 人才战略&#xff1a;从职能导向到流程导向 2. 能力模型&#xff1a;从职能专家到作战专家 3. …...

深入理解 Spring 的 Lazy Loading:原理、实现与应用场景

延迟加载&#xff08;Lazy Loading&#xff09;是 Spring 容器管理 Bean 的一种策略&#xff0c;指 只有在需要时&#xff08;调用 getBean() 方法获取 Bean 时&#xff09;才会实例化该 Bean。这是 Spring 提供的一种优化机制&#xff0c;用于提高启动效率和降低资源占用。 1.…...

扬帆数据结构算法之雅舟航程,漫步C++幽谷——LeetCode刷题之移除链表元素、反转链表、找中间节点、合并有序链表、链表的回文结构

人无完人&#xff0c;持之以恒&#xff0c;方能见真我&#xff01;&#xff01;&#xff01; 共同进步&#xff01;&#xff01; 文章目录 一、移除链表元素思路一思路二 二、合并两个有序链表思路&#xff1a;优化&#xff1a; 三、反转链表思路一思路二 四、链表的中间节点思…...

【unity游戏开发之InputSystem——02】InputAction的使用介绍(基于unity6开发介绍)

文章目录 一、InputAction简介1、InputAction是什么&#xff1f;2、示例 二、InputAction参数相关1、点击齿轮1.1 Actions 动作&#xff08;1&#xff09;动作类型&#xff08;Action Type&#xff09;&#xff08;2&#xff09;初始状态检查&#xff08;Initial State Check&a…...

Excel常用功能总结

Excel 是微软办公软件套装中的一个重要组件&#xff0c;用于数据处理和分析。以下是一些 Excel 的常用功能总结&#xff1a; 基本操作 1.单元格操作&#xff1a;选择、插入、删除单元格、行或列。 2.数据输入&#xff1a;输入文本、数字、日期和时间。 3.格式设置&#xff1a;设…...

【go语言】变量和常量

一、变量 1.1 变量的定义 程序 &#xff1a; 我们向电脑说了一段话&#xff0c;需要电脑才能理解 &#xff08;沟通机制 &#xff0c;xxx语言 -- 汇编 -- 机器码&#xff09;&#xff0c;电脑实际上识别的是机器码 &#xff1a; 0 1 1 1 0 1 &#xff08;高低电频&#xff09…...

Node.js——express中间件(全局中间件、路由中间件、静态资源中间件)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…...

大语言模型的语境中“越狱”和思维链

大语言模型的语境中“越狱”和思维链 越狱(Jailbreaking) 含义:在大语言模型的语境中,“越狱”是指用户试图绕过语言模型的安全限制和使用规则,让模型生成违反伦理道德、包含有害内容(如暴力、歧视、恶意软件代码等)的输出。这些安全限制是由模型开发者设置的,目的是确…...

JAVA学习记录4

文章为个人学习记录&#xff0c;仅供参考&#xff0c;如有错误请指出。 上期说到IDEA的安装&#xff0c;具体的使用方法就不记录了。这篇主要记录一些基础语法。 类型转换-自动类型转换 类型范围小的变量&#xff0c;可以直接赋值给类型范围大的变量。 在表达式中&…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...