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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

spark复习

第一章 1.​大数据特点:4V 2.​大数据计算模式 3.​hadoop生态系统 4.​spark提供了内存计算和基于DAG的任务调度机制,遵循一个软件栈满足不同应用场景的理念。 5.​hadoop中MapReduce计算框架的缺点,对应的spark的优点 第二章 1.​spark生态系统 …

shell编程(二)——字符串与数组

本文为shell 编程的第二篇,介绍shell中的字符串和数组相关内容。 一、字符串 shell 字符串可以用单引号 ‘’,也可以用双引号 “”,也可以不用引号。 单引号的特点 单引号里不识别变量单引号里不能出现单独的单引号(使用转义符…

[经验] 涠洲岛在广西吗 #职场发展#知识分享#媒体

涠洲岛在广西吗 广西涠洲岛,是中国南海上的一颗闪亮明珠,位于广西北部湾沿海,东经108.71度,北纬21.54度,距离北海市区30公里,是中国最大的海岛之一,风景秀丽,气候温和。岛上山青水秀…

PowerDesigner导入Excel模板生成数据表

PowerDesigner导入Excel模板生成数据表 1.准备好需要导入的Excel表结构数据,模板内容如下图所示 2.打开PowerDesigner,新建一个physical data model文件,填入文件名称,选择数据库类型 3.点击Tools|Execute Commands|Edit/Run Script菜单或按下快捷键Ctrl Shift X打开脚本窗口…

Ansys的电磁场分析和系统电路仿真软件Electronics 2024 R1版本在Windows系统的下载与安装配置

目录 前言一、许可管理工具安装二、许可配置三、EM安装四、MCAD和帮助文件安装(可选择,非必要)总结 前言 “ ANSYS Electromagnetics Suite或ANSYS Electronics Suite是几个功能强大的程序的集合,用于仿真系统的电磁。ANSYS电磁套…

vscode中jupyter notebook执行bash命令,乱码解决方法

问题描述 使用vscode中使用jupyter notebook执行bash命令时,不管是中文还是英文,输出均是乱码 但是使用vscode的terminal执行同样的命令又没有问题,系统自带的cmd也没有问题。 最终解决后的效果如下: ## 问题分析 默认vscode会选择使用cmd执行shell, 但是通过vscode的设…

docker部署使用本地文件的fastapi项目

项目背景:项目使用python开发,需要使用ubutun系统部署后端api接口,对外使用8901端口。 1:项目结构: 2:项目需要使用的pyhton版本为3.9,dockerfile内容如下: # FROM python:3.9# WORKDIR /co…

SpringBoot: 可执行jar的特殊逻辑

这一篇我们来看看Java代码怎么操作zip文件(jar文件),然后SpringBoot的特殊处理,文章分为2部分 Zip API解释,看看我们工具箱里有哪些工具能用SpringBoot的特殊处理,看看SpringBoot Jar和普通Jar的不同 1. Zip API解释 1. ZipFil…

【小白专用】C# Task 类异步操作-浅谈

注解 Task类表示不返回值并且通常以异步方式执行的单个操作。 Task 对象是在 .NET Framework 4 中首次引入的 基于任务的异步模式 的中心组件之一。 由于对象执行的工作 Task 通常在线程池线程上异步执行,而不是在主应用程序线程上同步执行,因此可以使用…

Adobe Illustrator 矢量图设计软件下载安装,Illustrator 轻松创建各种矢量图形

Adobe Illustrator,它不仅仅是一个简单的图形编辑工具,更是一个拥有丰富功能和强大性能的设计利器。 在这款软件中,用户可以通过各种精心设计的工具,轻松创建和编辑基于矢量路径的图形文件。这些矢量图形不仅具有高度的可编辑性&a…

检测五个数是否一样的算法

目录 算法算法的输出与打印效果输出输入1输入2 打印打印1打印2 算法的流程图总结 算法 int main() {int arr[5] { 0 };int i 0;int ia 0;for (i 0; i < 5; i) { scanf("%d", &arr[i]); }for (i 1; i < 5; i) {if (arr[0] ! arr[i]) {ia 1;break;} }…

SpringBoot高手之路-springboot原理篇

配置文件优先级 SpringBoot原理篇-多环境配置

Elasticsearch 认证模拟题 - 13

一、题目 集群中有索引 task3&#xff0c;用 oa、OA、Oa、oA 查询结构是 4 条&#xff0c;使用 dingding 的查询结果是 1 条。通过 reindex 索引 task3 为 task3_new&#xff0c;能够使 task3_new 满足以下查询条件。 使用 oa、OA、Oa、oA、0A、dingding 查询都能够返回 6 条…

R语言 | 使用最简单方法添加显著性ggpubr包

本期教程原文&#xff1a;使用最简单方法添加显著性ggsignif包 本期教程 获得本期教程代码和数据&#xff0c;在后台回复关键词&#xff1a;20240605 小杜的生信笔记&#xff0c;自2021年11月开始做的知识分享&#xff0c;主要内容是R语言绘图教程、转录组上游分析、转录组下游…

立创·天空星开发板-GD32F407VE-GPIO

本文以 立创天空星开发板-GD32F407VET6-青春版 作为学习的板子&#xff0c;记录学习笔记。 立创天空星开发板-GD32F407VE-GPIO 基础概念三极管MOS管 GPIO输出模式输出线与GPIO输入模式GPIO点灯 基础概念 GPIO&#xff0c;全称为“通用输入/输出”&#xff08;General Purpose …

Wireshark自定义Lua插件

背景&#xff1a; 常见的抓包工具有tcpdump和wireshark&#xff0c;二者可基于网卡进行抓包&#xff1a;tcpdump用于Linux环境抓包&#xff0c;而wireshark用于windows环境。抓包后需借助包分析工具对数据进行解析&#xff0c;将不可读的二进制数转换为可读的数据结构。 wires…

SpringBoot+Vue实现前后端分离基本的环境搭建

目录 一、Vue项目的搭建 &#xff08;1&#xff09;基于vite创建vue项目 &#xff08;2&#xff09;引入elementplus &#xff08;3&#xff09;启动后端服务&#xff0c;并测试 二、SpringBoot项目的搭建 &#xff08;1&#xff09;通过idea创建SpringBoot项目 &#x…

ipables防火墙

一、Linux防火墙基础 Linux 的防火墙体系主要工作在网络层&#xff0c;针对 TCP/IP 数据包实施过滤和限制&#xff0c;属于典 型的包过滤防火墙&#xff08;或称为网络层防火墙&#xff09;。Linux 系统的防火墙体系基于内核编码实现&#xff0c; 具有非常稳定的性能和高效率&…

AI高考大战,揭秘五大热门模型谁能问鼎数学之巅?

在高考前&#xff0c;我就有想法了&#xff0c;这一次让AI来做做高考题。就用国内的大模型&#xff0c;看哪家的大模型解题最厉害。 第一天考完&#xff0c;就拿到了2024高考数学2卷的电子版&#xff0c;这也是重庆市采用的高考试卷 这次选了5个AI工具&#xff0c;分别是天工&a…

FlexJavaFramwork

FlexJavaFramwork架构