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 的相关文章

  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然
  • 在Linux上编译C# + WPF以便在Windows上运行

    我有一个 C 应用程序 其中某些部分是使用 WPF 编写的 Mono 不支持 可以在 Linux 上编译这个应用程序吗 最终 该应用程序将在 Windows 上运行 但它是更大框架的一部分 并且我们的整个构建过程在 Linux 上运行 因此
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • bluetoothctl 到 hcitool 等效命令

    在 Linux 中 我曾经使用 hidd connect mmac 来连接 BT 设备 但自 Bluez5 以来 这种情况已经消失了 我可以使用 bluetoothctl 手动建立连接 但我需要从我的应用程序使用这些命令 并且使用 blue
  • 创建 jar 文件 - 保留文件权限

    我想知道如何创建一个保留其内容的文件权限的 jar 文件 我将源代码和可执行文件打包在一个 jar 文件中 该文件将在使用前提取 人们应该能够通过运行批处理 shell 脚本文件立即运行示例和演示 然后他们应该能够修改源代码并重新编译所有内
  • 无法加载 JavaHL 库。- linux/eclipse

    在尝试安装 Subversion 插件时 当 Eclipse 启动时出现此错误 Failed to load JavaHL Library These are the errors that were encountered no libs
  • 仅打印“docker-container ls -la”输出中的“Names”列

    发出时docker container ls la命令 输出如下所示 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a67f0c2b1769 busybox tail f dev
  • 如何禁用 GNOME 桌面屏幕锁定? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何阻止 GNOME 桌面在几分钟空闲时间后锁定屏幕 我已经尝试过官方手册了在红帽 https access redhat com doc
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”?

    在英特尔 x86 上 Linux用途 https stackoverflow com a 52172985 149138事件l1d replacements来实施其L1 dcache load misses event 该事件定义如下 计数
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 我可以从命令行打印 html 文件(带有图像、css)吗?

    我想从脚本中打印带有图像的样式化 html 页面 谁能建议一个开源解决方案 我使用的是 Linux Ubuntu 8 04 但也对其他操作系统的解决方案感兴趣 你可以给html2ps http user it uu se jan html2
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • 从 Python 调用 PARI/GP

    我想打电话PARI GP http pari math u bordeaux fr dochtml gpman html仅从Python计算函数nextprime n 对于不同的n是我定义的 不幸的是我无法得到帕里蟒蛇 http code
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • nslookup 报告“无法解析 '(null)': 名称无法解析”,尽管它成功解析了 DNS 名称

    我在 ubuntu 上 并且正在运行 docker 默认桥接网络 我有 Zookeeper kafka 的容器化版本 以及我编写的与 kafka 对话的应用程序 I do a docker exec it
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两

随机推荐

  • 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接口 提供集群管理接口 用户认证授权