科普文:K8S中常见知识点梳理

简单说一下k8s集群内外网络如何互通的

        要在 Kubernetes(k8s)集群内外建立网络互通,可以采取以下措施:

  1. 使用service: 使用Service类型为NodePort或LoadBalancer的Kubernetes服务。这可以使服务具有一个公共IP地址或端口,以便在集群内或外部访问该服务。

  2. 使用Ingress: 配置Kubernetes Ingress资源。Ingress是一种路由机制,它将外部流量路由到Kubernetes集群中的特定服务。可以使用Ingress控制器来实现负载均衡和SSL终止。

  3. 创建网络策略 : Kubernetes网络策略允许您定义哪些Pod可以与哪些其他Pod通信,以及在什么端口上进行通信。

  4. 使用DNS: 将集群内的服务和Pod绑定到一个公共IP地址或域名。可以使用DNS记录来实现这一点,例如在Kubernetes中使用外部DNS插件。

  5. 配置网络代理 : 网络代理是一种可选的解决方案,它可以帮助在Kubernetes集群内外之间建立网络互通。可以使用Ingress控制器或使用第三方代理解决方案,如NGINX或HAProxy。

描述下Pod的创建过程

        描述一:

  1. 定义Pod:首先,需要定义一个Pod的配置文件,它描述了要创建的Pod的特征,例如Pod名称、容器映像、容器端口等。

  2. 发送Pod配置文件:将Pod配置文件发送到Kubernetes集群中的API服务器。可以使用kubectl命令行工具或API客户端向API服务器发送配置文件。

  3. 调度器分配节点:Kubernetes调度器将Pod分配给一个节点。调度器考虑节点资源的可用性、Pod的资源需求以及其他调度策略来做出决策。

  4. 容器创建:一旦Pod被调度到节点上,kubelet代理将创建Pod中定义的每个容器,并使用相应的容器映像来填充它们。

  5. 分配IP地址:Kubernetes分配一个IP地址给Pod,并将其添加到集群的网络中,以便其他Pod可以与其通信。

  6. 启动容器:一旦Pod中的所有容器都已创建并分配IP地址,kubelet将启动每个容器,并开始在其内部运行应用程序。

  7. 容器监控:Kubernetes会持续监控Pod中的每个容器,并在出现故障或崩溃时重新启动它们。

图片

        描述二:

  1. Pod 的创建流程 kubectl向API Server发送创建请求ReplicaSet,API Server请求存储在etcd Controller Manager接受到通知

  2. Controller Manager通知到

  3. Scheduler Scheduler通知Worker节点

  4. API Server通知到Worker节点的kubelet

  5. kubelet指示当前节点上的Container Runtime运行对应的容器

  6. Container Runtime下载镜像并启动容器

k8s中Pod的终止过程

        在 Kubernetes 中,一个 Pod 由一个或多个容器组成,因此 Pod 的终止过程实际上涉及到容器的终止以及 Pod 对应的资源的释放等多个方面。

        当 Kubernetes 接收到一个 Pod 的终止请求时,它将执行以下步骤:

  1. 从 Service 中删除 Pod:如果 Pod 正在 Service 中被使用,Kubernetes 会将其从 Service 中删除,以确保不再将流量发送到该 Pod。

  2. 关闭容器:Kubernetes 向 Pod 中的每个容器发送一个终止请求,容器将开始执行关闭的预定义步骤。这些步骤包括停止正在运行的进程、关闭网络连接、清理文件系统等等。

  3. 发送 SIGTERM 信号:当 Kubernetes 接收到终止 Pod 的请求时,它将首先向容器发送 SIGTERM 信号,让容器开始优雅地终止。这个信号的作用是告诉容器它需要开始终止了,但是需要等待一定的时间来完成正在运行的任务和释放资源。

  4. 等待容器终止:Kubernetes 将等待容器在接收到 SIGTERM 信号后完成优雅终止。在这个等待期间,Kubernetes 将不再向 Pod 中发送新的请求,但它仍会监控 Pod 的状态。

  5. 发送 SIGKILL 信号:如果容器没有在一定的时间内完成优雅终止,Kubernetes 将发送 SIGKILL 信号给容器,强制终止容器并释放其资源。

  6. 清理资源:Kubernetes 将释放 Pod 使用的所有资源,包括节点上的网络、存储、内存等。同时,Kubernetes 还将更新其状态,以便管理员和其他应用程序可以获取到最新的 Pod 信息。

        总的来说,Kubernetes Pod 的终止过程包括了多个步骤,以确保容器能够安全、快速地释放资源,同时不会丢失任何数据或产生其他的副作用。

图片

k8s中的自动伸缩有哪些方式

        kubernetes中的自动伸缩主要有以下几种方式:

  1. 水平自动伸缩(Horizontal Pod Autoscaler,HPA):根据 CPU 利用率、内存利用率等指标,动态地增加或减少 Pod 的数量,以满足应用的负载需求。HPA 是 Kubernetes 中最常用的自动伸缩方式之一。

  2. 垂直自动伸缩(Vertical Pod Autoscaler,VPA):根据容器内部资源使用情况,动态地调整容器的 CPU 和内存资源请求量。VPA 可以优化容器的资源利用率,提高应用的性能和可靠性。

  3. 集群自动伸缩(Cluster Autoscaler):根据集群节点的资源利用率,动态地增加或减少节点的数量,以适应不同的负载需求。集群自动伸缩可以自动扩容或缩容集群,确保应用的高可用性和可靠性。

  4. 自定义指标自动伸缩(Custom Metrics Autoscaler,CA):根据自定义指标,动态地增加或减少 Pod 的数量。CA 可以根据应用的特殊需求,灵活地定制自动伸缩策略,提高应用的性能和可靠性。

        总的来说,Kubernetes 提供了多种自动伸缩方式,可以根据应用的特点和需求选择合适的自动伸缩方式,以提高应用的性能、可靠性和可扩展性。

        无论使用哪种自动伸缩方法,Kubernetes 都会根据应用程序的需求自动调整 Pod 的数量和资源限制,以确保应用程序始终具有足够的资源,并且可以根据需要扩展或缩减。

k8s中的故障检测有哪些方式

        Kubernetes 中的探针是一种用于检查应用程序状态的机制。

        探针可以检查应用程序的运行状况、存活性和就绪状态,并在需要时自动修复任何问题。

        探针可以使用三种类型:readiness(就绪状态)、liveness(存活性)、startup(启动时)

        Kubernetes 中的故障检测方式包括以下几种:

  1. Liveness Probe(存活探针):用于检测容器是否处于正常运行状态。如果存活探针检测到容器内部的应用程序出现故障,Kubernetes 将会自动重启该容器。存活探针设置方式,可以使用 HTTP 请求、TCP 连接或命令执行来设置。

  2. Readiness Probe(就绪探针):用于检测容器是否准备好接收流量。如果就绪探针检测到容器没有准备好,Kubernetes 将不会将流量路由到该容器。可以使用 HTTP 请求、TCP 连接或命令执行来设置就绪探针。

  3. Startup Probe(启动探针):用于检测容器是否已经成功启动。如果启动探针检测到容器启动失败,Kubernetes 将会尝试重新启动该容器。与存活探针和就绪探针不同,启动探针只在容器启动时运行一次,然后就不再运行了。

  4. Node Health Check(节点健康检查):用于检测节点的状态。如果节点出现故障,Kubernetes 将会将该节点上的所有容器转移到其他节点上。可以使用 kubeadm 自带的 kubeadm node 命令或 kubelet 的 --healthz 选项来设置节点健康检查。

  5. Cluster Health Check(集群健康检查):用于检测整个集群的状态。可以使用 kubeadm 自带的 kubeadm check 命令或 kubelet 的 --healthz 选项来设置集群健康检查。此外,还可以使用 Kubernetes 官方提供的 kubeadm-diagnostics 工具来进行集群诊断。

k8s中的资源调度有哪些方式

        Kubernetes 中的资源调度主要有以下几种方式:

  1. 基于 CPU 和内存资源的静态调度:在 Kubernetes 中,可以为每个 Pod 指定需要使用的 CPU 和内存资源。基于这些资源的需求,Kubernetes 会自动将 Pod 调度到具有足够资源的节点上。这种方式称为静态调度,因为资源需求是在 Pod 创建时指定的,而不会随着时间的推移而变化。

  2. 基于 CPU 和内存资源的动态调度:除了静态调度外,Kubernetes 还支持基于 CPU 和内存资源的动态调度。在这种方式下,Kubernetes 会根据当前节点的资源使用情况,将 Pod 动态地调度到具有可用资源的节点上,从而实现资源的最优分配。

  3. 基于节点标签的调度:Kubernetes 还支持基于节点标签的调度。通过为节点打上不同的标签,可以让 Kubernetes 将特定类型的 Pod 调度到具有相应标签的节点上。这种方式非常适合需要将不同类型的应用程序隔离开的场景。

  4. 基于节点亲和性和反亲和性的调度:在 Kubernetes 中,可以通过指定节点亲和性和反亲和性规则,来控制 Pod 被调度到哪些节点上。比如,可以指定一个 Pod 只能被调度到与指定节点具有相同标签的节点上,或者指定一个 Pod 不能被调度到与指定节点具有相同标签的节点上。

  5. 基于调度器插件的调度:Kubernetes 允许用户编写自己的调度器插件,并将其添加到 Kubernetes 集群中。通过使用这种方式,用户可以实现定制化的调度策略,以满足特定的需求。

k8s中的控制器(Controller)如何工作的

        Kubernetes的控制器(Controller)是一种用于管理Kubernetes资源的控制器模式。

        它确保系统处于期望的状态,通过周期性地监视系统状态,然后采取必要的操作使其达到期望状态。

        控制器负责监控Kubernetes资源对象的状态,并确保资源对象的实际状态与期望状态匹配。

        控制器的工作原理如下:

  1. 定义期望状态:控制器定义资源对象的期望状态,例如Pod应该运行在哪个节点上,有哪些容器以及运行的命令。

  2. 监控实际状态:控制器周期性地监视系统状态,通过 API Server 获取资源对象的实际状态,并与期望状态进行比较。

  3. 执行调谐操作:如果实际状态与期望状态不匹配,则控制器执行必要的操作来将系统状态调整为期望状态。例如,如果Pod未在期望节点上运行,则控制器会调度Pod到正确的节点上。

  4. 重复以上步骤:控制器持续监视系统状态,并根据需要执行调谐操作,直到实际状态与期望状态匹配为止。

        Kubernetes提供了许多内置的控制器,如Deployment、ReplicaSet和StatefulSet,它们分别用于管理不同类型的应用程序和资源对象。

        此外,用户还可以编写自定义控制器来管理自定义资源对象。

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

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

相关文章

Open3D 计算点云的平均密度

目录 一、概述 1.1基于领域密度计算原理 1.2应用 二、代码实现 三、实现效果 2.1点云显示 2.2密度计算结果 一、概述 在点云处理中,点的密度通常表示为某个点周围一定区域内的点的数量。高密度区域表示点云较密集,低密度区域表示点云较稀疏。计算…

Redis连接Resp图形化工具和springboot

Redis连接Resp图形化工具和springboot 1.redis配置1.1 备份、修改conf文件1.2 Redis的其它常见配置:1.3 启动Redis:1.4 停止服务:1.5 开机自启: 2. resp的安装、配置和连接:2.1 GitHub上下载2.2 开始连接redis ![在这里…

C++初探究

概述 C可以追溯到1979年,C之父Bjarne Stroustrup在在使用C语言研发工作时发现C语言的不足,并想要将其改进,到1983年,Bjarne Stroustrup在C语言的基础上添加了面向对象编程的特性,设计出了C的雏形。 网址推荐 C官方文…

王老师 linux c++ 通信架构 笔记(三)安装 xftp、

(11)调整 xshell 终端的字体大小,默认字体大小是 9 : (12) 共享文件夹 hgfs 的含义: (13)安装 xftp , 傻瓜式安装,出了修改下默认安装位置。 操作…

.locked勒索病毒解析与防护指南

引言 随着信息技术的飞速发展,网络安全问题日益严峻,其中勒索病毒成为威胁企业和个人数据安全的重要隐患之一。在众多勒索病毒家族中,.locked勒索病毒以其独特的加密方式和广泛的传播途径,引起了广泛的关注。本文将从多个方面详细…

使用redis-cli查找大key

执行命令 涉及redis-cli 连接和登录&#xff0c;请查看&#xff1a;Redis-cli 连接Redis-CSDN博客 redis-cli -h <redis_instance_address> -p <port> -a <password> --bigkeys<redis_instance_address>&#xff1a; Redis 实例的 IP 地址。 <p…

opencv 鱼眼图像的矫正(动态参数调整)

一&#xff1a;棋盘校准参数说明(内参) 棋盘校准的方法及代码很多&#xff0c;参见其他连接 1&#xff1a;内参矩阵 2&#xff1a;畸变系数 针对鱼眼相机此处是4个参数&#xff0c;在其校准代码中也可以知道&#xff0c;其通常的定义如下&#xff1a; data.camera_mat np.e…

报修小程序论文(设计)开题报告

一、课题的背景和意义 近些年来&#xff0c;随着移动互联网巅峰时期的来临&#xff0c;互联网产业逐渐趋于“小、轻、微”的方向发展&#xff0c;符合轻应用时代特点的各类技术受到了不同领域的广泛关注。在诸多产品中&#xff0c;被誉为“运行着程序的网站”之名的微信小程序…

uniapp-小程序获取用户位置

1. 需要在微信公众平台进行接口的申请。选择自己需要用的接口。 2. 在app.json文件中配置permission和requiredPrivateInfos。requiredPrivateInfos里面是你需要使用的接口。 3. 配置完成后&#xff0c;就可以使用了。 相关获取位置API的链接 4. 如果要获取当前位置到某一个指…

代码随想录-Day53

739. 每日温度 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例 1: …

【Linux】目录的相关命令——cd,pwd,mkdir,rmdir

1.相对路径与绝对路径 在开始目录的切换之前&#xff0c;你必须要先了解一下所谓的路径&#xff08;PATH)&#xff0c;有趣的是&#xff1a;什么是相对路 与绝对路径&#xff1f; 绝对路径&#xff1a;路径的写法“一定由根目录/写起”&#xff0c;例如&#xff1a;/usr/shar…

Java版Flink使用指南——定制RabbitMQ数据源的序列化器

大纲 新建工程新增依赖数据对象序列化器接入数据源 测试修改Slot个数打包、提交、运行 工程代码 在《Java版Flink使用指南——从RabbitMQ中队列中接入消息流》一文中&#xff0c;我们从RabbitMQ队列中读取了字符串型数据。如果我们希望读取的数据被自动化转换为一个对象&#x…

智慧科技照亮水利未来:深入剖析智慧水利解决方案如何助力水利行业实现高效、精准、可持续的管理

目录 一、智慧水利的概念与内涵 二、智慧水利解决方案的核心要素 1. 物联网技术&#xff1a;构建全面感知网络 2. 大数据与云计算&#xff1a;实现数据高效处理与存储 3. GIS与三维可视化&#xff1a;提升决策支持能力 4. 人工智能与机器学习&#xff1a;驱动决策智能化 …

LibreOffice的国内镜像安装地址和node.js国内快速下载网站

文章目录 1、LibreOffice1.1、LibreOffice在application-conf.yml中的配置2、node.js 1、LibreOffice 国内镜像包网址&#xff1a;https://mirrors.cloud.tencent.com/libreoffice/libreoffice/ 1.1、LibreOffice在application-conf.yml中的配置 jodconverter:local:enable…

Java面试八股之MySQL中int(10)和bigint(10)能存储读的数据大小一样吗

MySQL中int(10)和bigint(10)能存储读的数据大小一样吗 在MySQL中&#xff0c;int(10)和bigint(10)的数据存储能力并不相同&#xff0c;尽管括号内的数字&#xff08;如10&#xff09;看起来似乎暗示着某种关联&#xff0c;但实际上这个数字代表的是显示宽度&#xff0c;而不是…

vue学习day03-指令修饰符、v-bind对于样式控制的增强、v-model应用于其他表单元素

7、指令修饰符 &#xff08;1&#xff09;概念&#xff1a; 通过“.”指明一些指令后缀&#xff0c;不同后缀封装了不同的处理操作->简化代码 &#xff08;2&#xff09;按键修饰符 keyup.enter->键盘回车监听 &#xff08;3&#xff09;v-model修饰符 v-model.tri…

vue + element ui 实现侧边栏导航栏折叠收起

首页布局如下 要求点击按钮,将侧边栏收缩, 通过 row 和 col 组件&#xff0c;并通过 col 组件的 span 属性我们就可以自由地组合布局。 折叠前 折叠后 <template><div class"app-layout" :class"{ collapse: app.isFold }"><div class&…

Onekey正版steam分流下载工具

今天给大家介绍的是一款下载steam游戏的工具。Onekey工具&#xff0c;是一款游戏下载器&#xff0c;可以下载steam正版分流游戏。下载正版分流的网站很多&#xff0c;但是都是网盘或者迅雷下载&#xff0c;或者游戏盒子下载&#xff0c;速度都很慢。这款软件是用steam下载的&am…

Flask项目搭建及部署 —— Python

flask搭建及部署 pip 19.2.3 python 3.7.5 Flask 1.1.1 Flask-SQLAlchemy 2.4.1 Pika 1.1.0 Redis 3.3.11 flask-wtf 0.14.2 1、创建flask项目&#xff1a; 创建完成后整个项目结构树&#xff1a; app.py: 项⽬管理⽂件&#xff0c;通过它管理项⽬。 static: 存放静态…

2021版本的idea热部署的详细步骤

背景&#xff1a;我是自己用的是2021版本的idea,然后发现跟2023版本的热部署不太一样&#xff0c;所以&#xff0c;今天自己出一期这样的文章吧&#xff01;&#xff01;&#xff01;其他人配置的时候根据自己的情况&#xff0c;来阅读吧&#xff01; 第一步&#xff1a;方式一…