K8s速览

news2025/1/12 6:57:05

k8s的核心能力

● 服务发现与负载均衡
● 服务恢复
● 服务伸缩
● 自动发布与回滚
● 批量执行

架构

在这里插入图片描述

server-client两层架构,Master作为中央管控节点,会和每一个Node进行一个连接;
所有UI层,client的操作,只会和Mater进行连接;

API Server:处理API操作,k8s中的所有组件都会和其进行连接,组件之间不进行独立连接,依赖于API Server进行消息传递;
Controller:控制器,负载集群状态的管理,譬如自动恢复,容器伸缩等都由controller完成;
Scheduler:调度器,为容器找到合适的节点进行放置;
etcd:分布式存储系统,API Server需要的原信息都被放置到etcd中;etcd本身是有个高可用系统,通过etcd也保证了k8s master组件的高可用;

工作流程-交互示例:

在这里插入图片描述

创建pod的请求会交给API Server;API Server将数据存入etcd;
Scheduler通过watch机制知道有一个pod需要被调度;根据请求的资源等信息进行调度决策,选中调度节点;
Scheduler向 API Server报告调度信息
API Server通知相应节点进行pod的执行启动
节点kubelet 就会去调 Container runtime 来真正去启动配置这个容器和这个容器的运行环境,去调度 Storage Plugin 来去配置存储,network Plugin 去配置网络。

Pod和容器设计模式

容器的本质:
● 一个视图隔离、资源受限的进程
○ 容器内PID=1的进程就是应用本身
k8s->相当于云时代的操作系统;
● 类推容器镜像就是这个操作系统的软件安装包
那么pod相当于进程组;一个逻辑单位,k8s中的原子调度单位;

Pod需要解决的问题:
如何让pod内的多个容器搞笑共享资源和数据;
● 容器之间的是会通过Linux Namespace和cgroups隔离的
应用编排核心原理
在这里插入图片描述

应用编排与管理

思考直接管理pod的问题
● 如何保证集群中可用pod的数量
● 如何为所有pod更新镜像版本
● 更新过程中,如何为保证服务的可用性
● 更新过程中,发现问题如何及时回滚
在这里插入图片描述
● 声明式spec,声明期望的副本数,用控制器去保证status和spec预期一致
● 直接修改控制器中声明的image
● 设置更新策略,可滚动更新或者全量更新,还可以设置最大不可用pod数
● rollout undo一键回滚上一版或者指定版本
在这里插入图片描述

配置信息管理

● 可变配置信息
● 敏感信息存储
● pod自我身份认证
● 容器资源配置
● 容器安全管控
● 容器启动前前置条件校验-securityContext
在这里插入图片描述

configmap

● 管理环境变量,命令行参数等------解耦容器镜像和可变配置,保障pod的可移植性
● 限制
○ etcd限制大小1mb
○ pod只可以引用同命名空间下的cm
○ cm要在pod前创建,否则pod无法创建出来
○ cm中定义的key有问题时不会阻碍pod创建

secret

● 存储密码,token等敏感信息
● base-64编码保存
● 限制
○ 文件大小显示1mb

seviceAccount

pod身份认证

Qos:服务质量

根据request和limit隐式设置
在这里插入图片描述

securityContext

● 限制容器的行为
● 容器级别-对指定容器生效
● pod级别-对pod中的所有容器生效
● Pod Security Policies(PSP):对集群内的所有pod生效

InitContainer

● Initcontainer会先于普通的container启动执行,所有InitContainer执行成功后,普通container才会执行
● pod中多个InitContainer是按定义次序一次启动执行,pod中多个普通container是并行启动
● 用途
○ 普通container启动前的初始化-如配置文件准备;前置条件检验-如网络联通检验

持久化信息存储

需要解决的问题
● 容器异常退出,保障之前的数据不丢失
● 同pod中的多个容器共享数据
Pod Volumes类型:
● 本地存储:emptydir、hostpath
● 网络存储
● project volume:secret、configmap、downwardAPI、serviceaccountToken
● PV&PVC
在这里插入图片描述

csi 是什么?
csi 的全称是 container storage interface,它是K8s社区后面对存储插件实现(out of tree)的官方推荐方式。csi 的实现大体可以分为两部分:
● 第一部分是由k8s社区驱动实现的通用的部分,像我们这张图中的 csi-provisioner和 csi-attacher controller;
● 另外一种是由云存储厂商实践的,对接云存储厂商的 OpenApi,主要是实现真正的 create/delete/mount/unmount 存储的相关操作,对应到上图中的csi-controller-server和csi-node-server。
接下来看一下,当用户提交 yaml 之后,k8s内部的处理流程。用户在提交 PVCyaml 的时候,首先会在集群中生成一个 PVC 对象,然后 PVC 对象会被 csi-provisioner controller watch到,csi-provisioner 会结合 PVC 对象以及 PVC 对象中声明的 storageClass,通过 GRPC 调用 csi-controller-server,然后,到云存储服务这边去创建真正的存储,并最终创建出来 PV 对象。最后,由集群中的 PV controller 将 PVC 和 PV 对象做 bound 之后,这个 PV 就可以被使用了。
用户在提交 pod 之后,首先会被调度器调度选中某一个合适的node,之后该 node 上面的 kubelet 在创建 pod 流程中会通过首先 csi-node-server 将我们之前创建的 PV 挂载到我们 pod 可以使用的路径,然后 kubelet 开始 create && start pod 中的所有 container
总的来说,有三个阶段:第一个 create 阶段,主要是创建存储;第二个 attach 阶段,就是将那块存储挂载到 node 上面(通常为将存储load到node的/dev下面);第三个 mount 阶段,将对应的存储进一步挂载到 pod 可以使用的路径。这就是我们的 PVC、PV、已经通过CSI实现的卷从创建到使用的完整流程。
在这里插入图片描述

case:
● 抽象本地存储,只允许本机pod访问
● 云盘只允许同zone的pod访问
延迟绑定

应用健康

就绪探针:ReadinessProbe,存活探针:livenessProbe
在这里插入图片描述

k8s网络概念及策略控制

基本法:约法三章+四大目标
约法三章
● 所有pod可以与其他pod直接通信,无需显式使用NAT
● 所有Node可以与所有pod直接通信,无需显示使用NAT
● pod可见的IP地址确为其他pod与其通信是所用,无需显示转换
(NAT :网络地址转换,是将用于本地网络中的私有地址没在连接互联网是转而使用全局ip地址的技术)
四大目标
● 容器越容器之间的通信
● pod与pod之间的通信
● pod与service之间的统建
● 外部世界与service之间的通信
(service指k8s中的服务)
容器网络方案的两大派别
Overlay和Underlay
Overlay网络和Underlay网络
在这里插入图片描述

Netns

Netwok Namespace是实现网络虚拟化的内核基础,创建了隔离的网络空间
● 用于独立的网络设备(虚拟设备/物理网卡)
● 独立的协议栈,IP地址和路由表
● iptables规则
● ipvc
在这里插入图片描述

k8s Service

在这里插入图片描述
在这里插入图片描述

向集群外暴露Service

Service类型
● clusterIp-内部pod访问Service虚拟IP
● externalName
● NodePort-外部访问
● LoadBalancer-外部访问

LoadBalancer->NodePort->ClusterIP

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1803282.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

英伟达Docker 安装与GPu镜像拉取

获取nvidia_docker压缩包nvidia_docker.tgz将压缩包上传至服务器指定目录解压nvidia_docker.tgz压缩包 tar -zxvf 压缩包执行rpm安装命令: #查看指定rpm包安装情况 rpm -qa | grep libstdc #查看指定rpm包下的依赖包的版本情况 strings /lib64/libstdc |grep GLI…

酒店旅游API服务汇总

各大旅游平台常用API服务汇总: 实时房源服务【Airbnb】飞猪旅行开放服务途牛旅行开放平台API华为云数字差旅【差旅管理】动态信息接口【美团酒店】旅行商城商家管理API【马蜂窝】交易流程接口【美团酒店】电子导游【携程旅行】

STM32编程:实现LED灯闪烁(基于手写SDK的方式)

项目结构 stm32f10x.h 文件 //寄存器的值常常是芯片外设自动更改的,即使CPU没有执行程序,也有可能发生变化 //编译器有可能会对没有执行程序的变量进行优化//volatile表示易变的变量,防止编译器优化, #define __IO volati…

CSAPP Lab02——Bomb Lab完成思路详解

看见的看不见的 瞬间的永恒的 青草长啊大雪飘扬 ——月亮之上 完整代码见:CSAPP/bomb at main SnowLegend-star/CSAPP (github.com) 01 字符串比较 简单的把输入的字符串和地址“0x402400”内早已存储的字符串相比较。如果两个字符串相等则函数返回,否…

SpringBoot+Vue甘肃非物质文化网站(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 系统角色对应功能 用户管理员 系统功能截图

SpringBoot Elasticsearch07-以黑马商场为例-黑马程序员学习笔记

06篇已经导入了大量数据到elasticsearch中,实现了商品数据的存储。不过查询商品数据时依然采用的是根据id查询,而非模糊搜索。 接下来研究下elasticsearch的数据搜索功能。Elasticsearch提供了基于JSON的DSL(Domain Specific Language&#…

2024年06月数据库流行度最新排名

点击查看最新数据库流行度最新排名(每月更新) 2024年06月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多,这个数据库就被认为越受欢迎。这是一个领先指标。原始数…

09-数组的含义以及零长数组变长数组与多维数组

09-数组的含义以及零长数组变长数组与多维数组 文章目录 09-数组的含义以及零长数组变长数组与多维数组一、数组名的含义1.1 表示整个数组的首地址1.2 表示整个数组首元素的首地址 二、数组下标字符串常量 三、零长数组3.1 示例 四、变长数组4.1 示例 五、多维数组5.1 定义与初…

UML实现图-部署图

概述 部署图(Deployent Diagram)描述了运行软件的系统中硬件和软件的物理结构。部署图中通常包含两种元素:节点和关联关系,部署图中每个配置必须存在于某些节点上。部署图也可以包含包或子系统。 节点是在运行时代表计算机资源的物理元素。节点名称有两种:简单名和…

APP开发技术的变迁史

随着移动互联网的迅猛发展,APP(应用程序)已经成为人们日常生活中不可或缺的一部分。从最初的简单工具到如今的智能平台,APP开发技术在这十年间经历了翻天覆地的变化。本文将从多个维度探讨近十年来APP开发技术的变迁史&#xff0c…

NVeloDocx一个基于NVelocity的word模版引擎

NVeloDocx是一个基于NVelocity的Word模版引擎,目前主要是用于E6低代码开发平台供用户轻松制作各种Word报告模版。 有以下优点: 1、完全的NVelocity语法; 2、直接在Word中写NVelocity脚本,使用非常非常方便; 3、完全兼…

阅读笔记:Life of a Pixel

PPT地址:​​​​​​​​​​​​​​https://docs.google.com/presentation/d/1boPxbgNrTU0ddsc144rcXayGA_WF53k96imRH8Mp34Y/edit?uspsharing 这份PPT讲述了Chromium浏览器内核中html文档渲染成像素的主要过程。网上有很多介绍和转载,内容非常硬核。…

数据结构及研究

**数据结构是计算机存储、组织数据的方式,它是相互之间存在一种或多种特定关系的数据元素的集合**Θic-1ΘΘic-2ΘΘic-3ΘΘic-4ΘΘic-5Θ。 数据结构这一概念在计算机科学领域扮演着至关重要的角色,它不仅决定了数据在计算机内部的存储方式&#xf…

lubuntu / ubuntu 配置静态ip

一、查看原始网络配置信息 1、获取网卡名称 ifconfig 2、查询网关IP route -n 二、编辑配置文件 去/etc/netplan目录找到配置文件,配置文件名一般为01-network-manager-all.yaml sudo vim /etc/netplan/01-network-manager-all.yaml文件打开后内容如下 # This …

玄机平台应急响应—apache日志分析

1、前言 apache的日志一共有两个,一个是access.log,这个日志记录了所有对Web服务器的访问,被入侵时重点排查这个。另一个是error.log,错误日志记录了服务器运行期间遇到的各种错误,以及一些普通的诊断信息&#xff0c…

一个简单的消息队列

目录 原理 实现代码 示例 原理 消息队列是一个先进先出栈,每次都处理第一项,处理完了过后会删除这个消息,这是一个简单的消息队列图: 实现代码 首先消息队列需要一个队列,我们用Python里的列表: self.…

贪心(不相交的开区间、区间选点、带前导的拼接最小数问题)

目录 1.简单贪心 2.区间贪心 不相交的开区间 1.如何删除? 2.如何比较大小 区间选点问题 3.拼接最小数 1.简单贪心 比如:给你一堆数,你来构成最大的几位数 2.区间贪心 不相交的开区间 思路: 首先,如果有两个…

vue-router 源码分析——2. router-link 组件是如何实现导航的

这是对vue-router 3 版本的源码分析。 本次分析会按以下方法进行: 按官网的使用文档顺序,围绕着某一功能点进行分析。这样不仅能学习优秀的项目源码,更能加深对项目的某个功能是如何实现的理解。这个对自己的技能提升,甚至面试时…

VL830 USB4 最高支持40Gbps芯片功能阐述以及原理图分享

前文斥巨资拆了一个扩展坞供大家参考。其中核心即为本文要说的这个VL830,USB4的HUB芯片。 拆解报告传送门:USB4 Gen3x2 最高40Gbps传输速率的HUB扩展坞拆解分析 OK,闲话少叙。直接进入主题,我就直接翻译规格书了。 VL830是一款USB4端点设备…

Java学习54-关键字this的使用

this是什么 this的作用: 它在方法(准确的说是实例方法或非static的方法)内部使用,表示调用该方法的对象 它在构造器内部使用,表示该构造器正在初始化的对象 this可以调用的结构:成员变量、方法和构造器 什么时候使用this 实…