K8s速览

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.mzph.cn/diannao/24946.shtml

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

相关文章

详解linux设备下的/dev/null

/dev/zero是一个特殊的设备文件,它在Linux系统中通常被用来生成无限数量的零数据流。 这个设备文件位于/dev目录下,它不代表任何实际的硬件设备,而是一个虚拟设备。 当从/dev/zero设备中读取数据时,会得到无限数量的零字节&…

【机器学习】因TensorFlow所适配的numpy版本不适配,用anaconda降低numpy的版本

目录 0 TensorFlow最高支持的numpy版本 1 激活你的环境(如果你正在使用特定的环境) 2 查找可用的NumPy版本 3 安装特定版本的NumPy 4. 验证安装 5.(可选)如果你更改了base环境 0 TensorFlow最高支持的numpy版本 要使用 …

Python | Leetcode Python题解之第132题分割回文串II

题目: 题解: class Solution:def minCut(self, s: str) -> int:n len(s)g [[True] * n for _ in range(n)]for i in range(n - 1, -1, -1):for j in range(i 1, n):g[i][j] (s[i] s[j]) and g[i 1][j - 1]f [float("inf")] * nfor …

k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)HPA详细解释与案例应用

文章目录 前言HPA简介简单理解详细解释HPA 的工作原理监控系统负载模式HPA 的优势使用 HPA 的注意事项应用类型 应用环境1.metircs-server部署2.HPA演示示例(1)部署一个服务(2)创建HPA对象(3)执行压测 前言…

安装node

下载地址 Node.js — Run JavaScript Everywhere 按照下面的图操作即可 然后就下载完了。

【Vue】声明式导航-导航链接

文章目录 一、引入二、解决方案三、代码示例四、声明式导航-两个类名1)router-link-active2)router-link-exact-active 一、引入 但凡说到声明式导航,都需要想到router-link 需求 实现导航高亮效果 如果使用a标签进行跳转的话,需要…

【网络编程开发】8.TCP连接管理与UDP协议 9.IP协议与ethernet协议

8.TCP连接管理与UDP协议 三次握手 三次握手的过程在TCP/IP网络通信中起着至关重要的作用,它不仅确保了数据的可靠传输,还为两端的数据传输提供了稳定的连接初始化过程。这一过程涉及到几个关键步骤,每个步骤都有其特定的目的和功能。 步骤&…

算法人生(21):从“React框架”看“情绪管理”

说起React框架,我们知道它是一种由Facebook开发和维护的开源JavaScript库,主要用于构建用户界面,特别是单页应用程序(SPA)。React框架围绕组件化,即把用户界面拆分为可复用的独立组件,每个组件负…

SM481,SM432和利时DCS备件

SM481,SM432和利时DCS备件。POU名只能包含字母、数字、下划线,第一个字符必须是字母或者下划线,且遵循以下原则:SM481,SM432和利时DCS备件。关于重名,不能与变量名、变量组名、POU文件夹名、任务名、SM481,SM432和利时DCS备件。工…

NSSCTF中的popchains、level-up、 What is Web、 Interesting_http、 BabyUpload

目录 [NISACTF 2022]popchains [NISACTF 2022]level-up [HNCTF 2022 Week1]What is Web [HNCTF 2022 Week1]Interesting_http [GXYCTF 2019]BabyUpload 今日总结&#xff1a; [NISACTF 2022]popchains 审计可以构造pop链的代码 <php class Road_is_Long{public $…

输入偏置电流是什么?

输入失调电流与输入补偿电流概念一样&#xff08;input offset current&#xff09;&#xff1a;同相减去反相输入端偏置电流的差值。这是由生产工艺导致同相与反相端的电流大小方向都会有所不同。 第一种情况&#xff1a;同相输入端减去反相输入端 第一种情况&#xff1a;同相…

桑基图Cannot set properties of undefined (setting ‘dataIndex‘)

前端写桑基图的时候碰到以上bug 原因是&#xff1a; 桑基图中的name值有重复的&#xff0c;把重复的name值去掉就好了&#xff0c;或者如果name排查太麻烦&#xff0c;可以用唯一id作为name,增加些字段&#xff0c;展示时用fomatter的方式 参照https://www.cnblogs.com/lempe…

IIoT(智能物联网)的现状、应用及安全

近年来&#xff0c;物联网&#xff08;IoT&#xff09;作为推动现代公司和智能城市发展的一个范式&#xff0c;已经取得了显著的发展。IoT使得分布式设备&#xff08;如手机、平板电脑和计算机&#xff09;能够感知并从外部环境传输数据&#xff0c;以服务于最终用户。IoT的概念…

Hive on Spark版本兼容性

Hive on Spark仅在特定版本的Spark上进行测试&#xff0c;因此给定版本的Hive只能保证与特定版本的Spark一起工作。其他版本的Spark可能与给定版本的Hive一起工作&#xff0c;但不能保证。以下是Hive版本及其对应的Spark版本列表&#xff1a; 详情参考官方文档&#xff1a;http…

韩顺平0基础学java——第19天

p396-406 final关键字 1.final修饰的为“常量”&#xff0c;需要给初始值。1可以直接定义时赋值&#xff0c;2在构造器中&#xff0c;3在代码块中。 注意静态代码块只能访问静态变量。 2.如果final修饰的关键字是静态的&#xff0c;那就不能在构造器中赋值&#xff0c;只能…

10-指针进阶——char型,多级指针,void指针,const指针

10-指针进阶——char型&#xff0c;多级指针&#xff0c;void指针&#xff0c;const指针 文章目录 10-指针进阶——char型&#xff0c;多级指针&#xff0c;void指针&#xff0c;const指针一、char 型指针1.1 示例 二、多级指针2.1 示例 三、 指针的万能拆解方法3.1 示例 四、v…

【NI国产替代】500 MSPS 采样率,14 bit 分辨率数据采集盒子

• 双高速高精度数据采集通道 • 支持内外精准触发采样模式 • 丰富的总线控制接口 • 抗干扰能力强 高速采集盒子是一款双通道&#xff0c;具有 500 MSPS 采样率&#xff0c;14 bit 分辨率的高速高精度数据采集设备&#xff0c;其模拟输入带宽为 200 MHz&#xff0c;…

数学模型:操作系统中FCFS、SJF、HRRN算法的平均周转时间比较 c语言

摘 要 研究目的&#xff1a;比较操作系统中进程调度FCFS、SJF、HRRN算法的平均周转时间和带权周转时间的大小关系。 研究方法&#xff1a;在建模分析时&#xff0c;分别举4个进程的例子&#xff0c;1个进程用两个字母分别表示到达时间和执行时间。分两种极端情况&#xff0c…

iOS18:借助 Al,Siri 将获得广泛的知识,以便触发各个应用的功能

iOS18:借助 Al&#xff0c;Siri 将获得广泛的知识&#xff0c;以触发各个应用的功能 预计Siri将成为iOS18中一系列与人工智能相关增强功能的核心。 根据彭博社记者马克古尔曼的一份新报告&#xff0c;可以得知关于苹果智能助手的一些具体升级的新信息。 Siri新的人工智能: …

经典回归模型及Python实现方法

文章目录 1. 引言2. 经典回归模型及Python实现2.1 线性回归 Linear Regression2.2 多项式回归 Polynomial Regression2.3 逻辑回归 Logistic Regression2.4 岭回归 Ridge Regression2.5 套索回归 LASSO Regression2.6 弹性网络回归 Elastic Net2.7 决策树回归 Decision Tree Re…