k8s基础概念、ETCD

2023-11-17

原理、和k8s结合点(etcd与k8s的交集)、维护

基础概念:

物理组件、逻辑组件、网络组件、工作负载

1、物理组件:

Master(Control plane)

  • kube-apiserver:提供唯一api接口、提供集群管理接口(用户认证授权、数据校验)、操作etcd,k8s1.0时,没有apiserver,所有组件直连etcd
  • kube-controller-manager:所有资源对象的自动化控制中心,确保集群始终处于预期的工作状态
  • kube-scheduler:pod调度服务、根据调度策略为pod分配节点
  • etcd:保存所有的资源对象
  • dns:主要负责服务发现,服务地址与服务名称的转换,kube-dns(coredns)

Node

  • pod
  • 静态文件
  • 动态资源
  • 探针
  • kubelet:控制面驻节点办公室,pod管理、健康检查、资源监控
  • kube-proxy:控制面驻节点办公室,运行在节点上的网络代理,主要负责service的通信和负载均衡,通过userspace(已停用)、iptables、ipvs实现

二、逻辑组件

1、namespace

  • 资源和对象的抽象组合
  • 划分不同工作空间的逻辑单位
  • 隔离项目
  • 隔离环境
  • 隔离用户

2、Label/Selector

定位机制,label是key/value格式的标签,允许重复;selector通过等式、集合、逻辑运算

3、Annotation

注解,保存附加信息,供第三方工具提取使用

4、configmap/secret

保存配置信息,configmap存储非安全配置,secret保存敏感信息

5、volume

数据持久性、数据共享

6、PV/PVC

k8s为了实现存储和计算分离,而抽象出来的编排机制

 存储抽象和分配机制

pv是有管理员进行创建和配置,针对共享存储的一种抽象

pvc是用户针对存储需要的声明

k8s的三种编排:服务编排、流量编排、存储编排

三、网络组件

clusterIp:kube-proxy创建的网络访问规则

pod运行在一个扁平的网络空间中,pod间可以相互访问,跨节点访问或者节点内访问。

pod没有重建的概念,只有创建、销毁,每次销毁创建后pod的ip就会重新生成,ip属于pod的一部分,pod销毁后,ip也随之销毁,ip无法复用。

客户端请求pod时,如果pod的ip变化了,就无法访问了,为了让客户端不需要感知后端pod的ip变化,就产生了clusterip,为pod生成一个虚ip,就相当于一个lb,客户端访问clusterip就可以访问到pod上,不需要关心pod的ip。

clusterip和service的生命周期绑定在一起,service通过selector找到label对应的pod,clusterip通过iptables或ipvs规则,就能将请求均匀的分发到pod上,这个规则是由kube-proxy负责创建和维护。

四、工作负载

控制器:

1、ReplicaSet:用于创建和管理无状态的pod

ReplicaController是最早的工具后来被停用,仅支持对等的pod管理,不支持集合pod的管理,不支持复杂运维

停用RC的原因是,在管理无状态应用时,使用Deployment去管rs,rs再去管理pod,实现无状态的应用变更

2、Deployment:以Rs为基础提供进度感知,引入deployment主要是用于pod编排

3、DaemonSet:提供节点级永久性运行,在k8s每一个节点里面,把守护进程封装成容器,

应用场景主要用于工具,业务场景使用不多,节点监控、采集节点日志、节点网络插件

4、StatefulSet:有状态应用,每个pod有确定的启动顺序

容器化应用中,最困难的就是涉及有状态的应用的管理

 5、Job/cronjob

job运行一次就结束的任务,适合执行一次的任务

cronjob在job上加上了时间调度

6、Service

应用服务的抽象、通过label定位、负责负载和服务发现、

NodeIp:node节点的ip

podip:pod的ip地址

clusterIp:service的ip地址

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s基础概念、ETCD 的相关文章

  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • 如何在线程创建和退出时调用函数?

    include
  • 为什么 fork 炸弹没有使 android 崩溃?

    这是最简单的叉子炸弹 我在许多 Linux 发行版上执行了它 但它们都崩溃了 但是当我在 android 终端中执行此操作时 即使授予后也没有效果超级用户权限 有什么解释为什么它没有使 Android 系统崩溃吗 一句话 ulimit Li
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 如何在 Ubuntu 中创建公共 HTML 文件夹?

    简单的问题 但由于某种原因我无法在谷歌上找到确切的答案 我在 Slicehost 上安装了全新的 Ubuntu 并且想在我的主目录中为包含一堆静态 HTML 文件的简单网站创建一个公共目录 我该怎么做呢 只是打字的问题吗mkdir publ
  • C 语言的符号表

    我目前正在开发一种执行模式匹配的静态分析工具 我在用Flex https github com westes flex生成词法分析器 我编写了代码来管理符号表 我不太有经验C 所以我决定将符号表实现为线性链表 include
  • 使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS

    我无法使用以下汇编代码产生 总线错误 这里我使用的内存地址不是合法的 规范地址 那么 我怎样才能触发该错误呢 我在带有 NASM 2 14 02 的 Ubuntu 20 04 LTS 下运行这段代码 但它会导致负载出现 SIGSEGV 分段
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 如何使用waf构建共享库?

    我想使用构建一个共享库waf http code google com p waf 因为它看起来比 GNU 自动工具更容易 更简洁 到目前为止 我实际上有几个与我开始编写的 wscript 有关的问题 VERSION 0 0 1 APPNA
  • 静态方法的 Java 内存模型

    我来自操作系统和 C 语言背景 在代码编译时 世界很简单 需要处理和理解堆栈 堆文本部分等 当我开始学习 Java 时 我确实了解 JVM 和垃圾收集器 我对静态方法感到很有趣 根据我的理解 类的所有实例都会在堆中创建 然后被清理 但是 对
  • Intel 上的 gcc 中的 _mm_pause 用法

    我参考过这个网页 https software intel com en us articles benefitting power and performance sleep loops https software intel com
  • 在生产服务器上使用 Subversion 使文件生效的最佳方法是什么?

    目前我已经设置了 subversion 这样当我在 Eclipse PDT 中进行更改时 我可以提交更改 它们将保存在 home administrator 中项目文件 该文件具有 subversion 推荐的 branches tags
  • Linux 为一组进程保留一个处理器(动态)

    有没有办法将处理器排除在正常调度之外 也就是说 使用sched setaffinity我可以指示线程应该在哪个处理器上运行 但我正在寻找相反的情况 也就是说 我想从正常调度中排除给定的处理器 以便只有已明确调度的进程才能在那里运行 我还知道

随机推荐

  • python:列表推导式

    python中有种独特的语法 推导式 可以将代码压缩到1行 但是不使用也不影响 有三种 列表 字典 集合 注意没有元组推导式 列表推导式 1 一行代码实现1 100之和 知识点 列表推导式 print sum x for x in rang
  • Android Studio 中导入 Flutter 项目出现 Your project path contains non-ASCII characters. 解决方法

    笔者从svn check out 项目下来的时候 直接使用 Android Studio 运行 结果出现了 Your project path contains non ASCII characters 的错误 最后发现项目放的路径中存在中
  • Git版本控制软件结合GitHub从入门到精通常用命令学习手册

    注意 学习前请先配置好Git客户端 相关文章 Git客户端图文详解如何安装配置GitHub操作流程攻略 官方中文手册 http git scm com book zh GIT 学习手册简介 本站为 Git 学习参考手册 目的是为学习与记忆
  • Rstudio 更改工作路径和安装包的路径

    更改路径 1 函数简介 getwd 函数 查看当前的工作目录 setwd 函数 临时设定当前的工作目录 如果需要读取一个不在当前工作目录下的文件 则需要在调用语句中写明完整的路径 或重新设置工作目录 如 setwd C Users 文件名
  • [QT编程系列-24]:多线程机制 - QT的数据通信机制

    目录 第1章 QT常见的数据通信机制 第2章 示例代码 1 信号和槽机制示例 2 共享数据 变量示例 3 本地套接字示例 第1章 QT常见的数据通信机制 在Qt中 有多种方式可以实现数据通信 下面列举了一些常用的方法 信号和槽机制 Qt的信
  • 基于SSM的高校共享单车管理系统的设计与实现

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SSM 前端 Vue 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Eclipse 是否Maven项目 是
  • java线程5种状态_Java线程的5种状态及切换(透彻讲解)-京东面试

    一 Thread的几个重要方法 我们先了解一下Thread的几个重要方法 a start 方法 开始执行该线程 b stop 方法 强制结束该线程执行 c join方法 等待该线程结束 d sleep 方法 线程进入等待 e run 方法
  • JAVA多人聊天室(多线程基础聊天室可以私聊/群聊)

    创建一个类定义聊天的规则 package com test tcpmap 该程序定义了聊天的规则 public interface CrazyitProtocol 定义协议字符串的长度 int PROTOCOL LEN 2 下面是一些协议字
  • JWT的使用详解

    背景 公司处在前后端分离的转折阶段 作为后端人员 要找到一个适用于接口验证的方式 公司仍保持后端使用Laravel框架 而laravel框架默认的是 web 方式 web 方式是使用 session 来进行用户认证 当然也是可以使用 但是有
  • php 上传 excel xlsx_Vue自定义指令实现快速读取Excel

    前几天因为业务需求 所维护的而后台中出现了大量关于上传下载Excel的操作 因为我们的后台是基于Vue 并且是在 vue element admin 的基础上结合实际需求开发而来 vue element admin 中也有一些相关操作 Ex
  • Linux主线程与子线程关系

    问题背景 起因 笔者在开发一个统计Linux系统各个进程 线程loading的软件 精度高于top命令 目前是间隔500ms采样一次 在内核遍历所有线程时 发现如果有的线程在采样间隔中间退出的话 for each process不能遍历到该
  • 你了解Java的内部类吗

    系列文章 该文章为第一篇 前言 内部类顾名思义指的就是一个类声明在另一个类的内部 我们在平时读源码时或多或少见过内部类 但自己写的代码中可能基本不使用或很少使用他们 即使用了可能也不太清楚为什么要使用 只知道可以使用 文章开始之前先罗列一下
  • Numpy章节 3 高级功能

    章节 3 高级功能 1 数组的迭代和排序 NumPy提供了迭代数组元素的方法 并且可以对数组进行排序 示例代码 arr np array 3 1 5 2 4 迭代数组元素 for x in arr print x 输出 3 1 5 2 4
  • matlab运行一直正忙,MATLAB运行时一直处于忙的状态,是不是程序存在死循环

    本帖最后由 安然娜124 于 2016 4 26 21 37 编辑 疑惑 1 该程序点击运行后一直处于忙的状态 好久都没反应 不知道是程序中for语句太多导致的 还是语句存在死循环 2 如果程序可以运行 不管出没出结果 是不是都代表所编的程
  • 使用JavaScript调用常用浏览器,解决IE浏览器兼容性问题

    目录 前言 JavaScript代码 此贴为个人学习记录 便于以后使用 前言 开发中经常会遇到用户使用IE浏览器的情况 但是由于各种兼容问题 网页实际显示效果和开发的效果有较大出入 所以有了以下解决方案 如果当前网页用户使用IE浏览器打开
  • Pytorch中经常见到的View( )函数

    Pytorch里经常会见到tensor view a b c a b c等等都是函数内的参数 可以理解为reshape功能 重构张量的维度 比如 a torch Tensor 2 3 print a tensor 0 0000 0 0000
  • 3D星球动画html,基于Three.js实现的3D土星(星球)动画

    JavaScript 语言 JaveScriptBabelCoffeeScript 确定 function getMat color our material is a phong material with no shininess hi
  • 【c++primer第五版】第六章函数-函数基础、参数传递、返回类型、函数重载、函数指针

    目录 函数基础 局部对象 函数声明 参数传递 main 处理命令行选项 特殊用途语言特性 调试帮助 函数匹配 函数指针 函数是一个命名了的代码块 通过调用相应的函数来执行相应的代码 函数可以有0或多个参数 通常会产生一个结果 也可以重载函数
  • QT——C++ 多线程05

    目录标题 一 创建多线程的方式 一 方式一 二 方式二 三 方式三 一 创建多线程的方式 QT创建 使用 多线程的方式有三种 直接创建QThread 对象 重写run方法 最后调用start方法启动线程 通过调用QObject类提供的mov
  • k8s基础概念、ETCD

    原理 和k8s结合点 etcd与k8s的交集 维护 基础概念 物理组件 逻辑组件 网络组件 工作负载 1 物理组件 Master Control plane kube apiserver 提供唯一api接口 提供集群管理接口 用户认证授权