【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(十四)

ops/2024/9/20 7:22:16/ 标签: 学习, kubernetes, 容器

  本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》从问题中去学习k8s

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

《DBA》db的介绍使用(mysql、redis、mongodb...)

思考一下问题:

66、简述Kubernetes集群联邦?

67、简述Helm及其优势?

68、 k8s是什么?请说出你的了解?以及K8s架构的组成是什么?

69、 容器和主机部署应用的区别是什么?

70、请你说一下kubenetes针对pod资源对象的健康监测机制?

参考答案:

66、简述Kubernetes集群联邦?
Kubernetes集群联邦可以将多个Kubernetes集群作为一个集群进行管理。因此,可以在一个数据中心/
云中创建多个Kubernetes集群,并使用集群联邦在一个地方控制/管理所有集群。67、简述Helm及其优势?
Helm 是 Kubernetes 的软件包管理工具。类似 Ubuntu 中使用的apt、Centos中使用的yum 或者
Python中的 pip 一样。
Helm能够将一组K8S资源打包统一管理, 是查找、共享和使用为Kubernetes构建的软件的最佳方式。
Helm中通常每个包称为一个Chart,一个Chart是一个目录(一般情况下会将目录进行打包压缩,形成
name-version.tgz格式的单一文件,方便传输和存储)。
Helm优势
在 Kubernetes中部署一个可以使用的应用,需要涉及到很多的 Kubernetes 资源的共同协作。使用
helm则具有如下优势:
统一管理、配置和更新这些分散的 k8s 的应用资源文件;
分发和复用一套应用模板;
将应用的一系列资源当做一个软件包管理。
对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到
软件仓库。
对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在
Kubernetes 上查找、安装、升级、回滚、卸载应用程序。68、 k8s是什么?请说出你的了解?以及K8s架构的组成是什么?
答:Kubenetes是一个针对容器应用,进行自动部署,弹性伸缩和管理的开源系统。主要功能是生产环
境中的容器编排。
K8S是Google公司推出的,它来源于由Google公司内部使用了15年的Borg系统,集结了Borg的精华。K8s架构的组成是什么?
答:和大多数分布式系统一样,K8S集群至少需要一个主节点(Master)和多个计算节点(Node)。
主节点主要用于暴露API,调度部署和节点的管理;
计算节点运行一个容器运行环境,一般是docker环境(类似docker环境的还有rkt),同时运行一
个K8s的代理(kubelet)用于和master通信。计算节点也会运行一些额外的组件,像记录日志,
节点监控,服务发现等等。计算节点是k8s集群中真正工作的节点。
K8S架构细分:1、Master节点(默认不参加实际工作):
Kubectl:客户端命令行工具,作为整个K8s集群的操作入口;
Api Server:在K8s架构中承担的是“桥梁”的角色,作为资源操作的唯一入口,它提供了认证、授
权、访问控制、API注册和发现等机制。客户端与k8s群集及K8s内部组件的通信,都要通过Api
Server这个组件;
Controller-manager:负责维护群集的状态,比如故障检测、自动扩展、滚动更新等;
Scheduler:负责资源的调度,按照预定的调度策略将pod调度到相应的node节点上;
Etcd:担任数据中心的角色,保存了整个群集的状态;2、Node节点:
Kubelet:负责维护容器的生命周期,同时也负责Volume和网络的管理,一般运行在所有的节点,
是Node节点的代理,当Scheduler确定某个node上运行pod之后,会将pod的具体信息(image,
volume)等发送给该节点的kubelet,kubelet根据这些信息创建和运行容器,并向master返回运
行状态。(自动修复功能:如果某个节点中的容器宕机,它会尝试重启该容器,若重启无效,则会
将该pod杀死,然后重新创建一个容器);
Kube-proxy:Service在逻辑上代表了后端的多个pod。负责为Service提供cluster内部的服务发现
和负载均衡(外界通过Service访问pod提供的服务时,Service接收到的请求后就是通过kube-
proxy来转发到pod上的);
container-runtime:是负责管理运行容器的软件,比如docker
Pod:是k8s集群里面最小的单位。每个pod里边可以运行一个或多个container(容器),如果一
个pod中有两个container,那么container的USR(用户)、MNT(挂载点)、PID(进程号)是
相互隔离的,UTS(主机名和域名)、IPC(消息队列)、NET(网络栈)是相互共享的。我比较喜
欢把pod来当做豌豆夹,而豌豆就是pod中的container;69、 容器和主机部署应用的区别是什么?
答:容器的中心思想就是秒级启动;一次封装、到处运行;这是主机部署应用无法达到的效果,但同时
也更应该注重容器的数据持久化问题。
另外,容器部署可以将各个服务进行隔离,互不影响,这也是容器的另一个核心概念。70、请你说一下kubenetes针对pod资源对象的健康监测机制?
答:K8s中对于pod资源对象的健康状态检测,提供了三类probe(探针)来执行对pod的健康监测:
1) livenessProbe探针
可以根据用户自定义规则来判定pod是否健康,如果livenessProbe探针探测到容器不健康,则kubelet
会根据其重启策略来决定是否重启,如果一个容器不包含livenessProbe探针,则kubelet会认为容器的
livenessProbe探针的返回值永远成功。2) ReadinessProbe探针
同样是可以根据用户自定义规则来判断pod是否健康,如果探测失败,控制器会将此pod从对应service
的endpoint列表中移除,从此不再将任何请求调度到此Pod上,直到下次探测成功。3) startupProbe探针
启动检查机制,应用一些启动缓慢的业务,避免业务长时间启动而被上面两类探针kill掉,这个问题也可
以换另一种方式解决,就是定义上面两类探针机制时,初始化时间定义的长一些即可。
每种探测方法能支持以下几个相同的检查参数,用于设置控制检查时间:
initialDelaySeconds:初始第一次探测间隔,用于应用启动的时间,防止应用还没启动而健康检查
失败
periodSeconds:检查间隔,多久执行probe检查,默认为10s;
timeoutSeconds:检查超时时长,探测应用timeout后为失败;
successThreshold:成功探测阈值,表示探测多少次为健康正常,默认探测1次。上面两种探针都支持以下三种探测方法:
1)Exec: 通过执行命令的方式来检查服务是否正常,比如使用cat命令查看pod中的某个重要配置文件
是否存在,若存在,则表示pod健康。反之异常。
Exec探测方式的yaml文件语法如下:spec:containers:- name: livenessimage: k8s.gcr.io/busyboxargs:- /bin/sh- -c- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600livenessProbe: #选择livenessProbe的探测机制exec: #执行以下命令command:- cat- /tmp/healthyinitialDelaySeconds: 5 #在容器运行五秒后开始探测periodSeconds: 5 #每次探测的时间间隔为5秒在上面的配置文件中,探测机制为在容器运行5秒后,每隔五秒探测一次,如果cat命令返回的值为“0”,
则表示健康,如果为非0,则表示异常。2)Httpget: 通过发送http/htps请求检查服务是否正常,返回的状态码为200-399则表示容器健康
(注http get类似于命令curl -I)。
Httpget探测方式的yaml文件语法如下:
spec:containers:- name: livenessimage: k8s.gcr.io/livenesslivenessProbe: #采用livenessProbe机制探测httpGet: #采用httpget的方式scheme:HTTP #指定协议,也支持httpspath: /healthz #检测是否可以访问到网页根目录下的healthz网页文件port: 8080 #监听端口是8080initialDelaySeconds: 3 #容器运行3秒后开始探测periodSeconds: 3 #探测频率为3秒
上述配置文件中,探测方式为项容器发送HTTP GET请求,请求的是8080端口下的healthz文件,返回任
何大于或等于200且小于400的状态码表示成功。任何其他代码表示异常。3)tcpSocket: 通过容器的IP和Port执行TCP检查,如果能够建立TCP连接,则表明容器健康,这种方
式与HTTPget的探测机制有些类似,tcpsocket健康检查适用于TCP业务。
tcpSocket探测方式的yaml文件语法如下:spec:containers:- name: goproxyimage: k8s.gcr.io/goproxy:0.1ports:- containerPort: 8080
#这里两种探测机制都用上了,都是为了和容器的8080端口建立TCP连接readinessProbe:tcpSocket:port: 8080initialDelaySeconds: 5periodSeconds: 10livenessProbe:tcpSocket:port: 8080initialDelaySeconds: 15periodSeconds: 20在上述的yaml配置文件中,两类探针都使用了,在容器启动5秒后,kubelet将发送第一个
readinessProbe探针,这将连接容器的8080端口,如果探测成功,则该pod为健康,十秒后,kubelet
将进行第二次连接。
除了readinessProbe探针外,在容器启动15秒后,kubelet将发送第一个livenessProbe探针,仍然尝试
连接容器的8080端口,如果连接失败,则重启容器。
探针探测的结果无外乎以下三者之一:
Success:Container通过了检查;
Failure:Container没有通过检查;
Unknown:没有执行检查,因此不采取任何措施(通常是我们没有定义探针检测,默认为成
功)。
若觉得上面还不够透彻,可以移步其官网文档:
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-start
up-probes/


http://www.ppmy.cn/ops/97234.html

相关文章

算法的学习笔记—栈的压入、弹出序列(牛客JZ31)

😀前言 栈(Stack)是一种常见的数据结构,具有“后进先出”的特性。在实际应用中,我们常常需要验证一组操作是否符合栈的特性。本文将探讨如何通过编程判断一个给定的弹出序列是否可以由另一个给定的压入序列生成&#x…

如何将 Windows 11/10/8/7 克隆到另一台计算机

为什么需要将 Windows克隆到新计算机 “我有一台新笔记本电脑来替换我的旧电脑,因为它运行几年后变得越来越慢。我现在面临的问题是如何让 Windows 10、程序和文件与旧 PC 保持相同。我不想重新安装 Windows 和应用程序。有没有快速简便的方法可以做到这一点&#…

PyTorch 基础学习

文章索引: PyTorch 基础学习(1) - 快速入门 PyTorch 基础学习(2)- 张量 Tensors PyTorch 基础学习(3) - 张量的数学操作 PyTorch 基础学习(4)- 张量的类型 PyTorch 基础学…

汽车EDI: NAVISTAR EDI对接

Navistar International Corporation 是一家美国商用车辆制造公司,总部位于伊利诺伊州的Lisle。公司以生产中型和重型卡车、公共汽车、柴油发动机和底盘闻名,其产品广泛应用于运输、建筑、和农业等行业。Navistar 的历史可以追溯到1831年,由国…

初识spring security (一),一文弄懂默认配置

一、简单导入依赖 1、导入pom <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.2</version></parent><modelVersion>4.0.0</modelVersion&g…

定制开发AI智能名片商城小程序:融合销售策略与个人魅力的营销新路径

摘要&#xff1a;在数字化时代&#xff0c;营销策略的创新与个性化成为企业脱颖而出的关键。本文探讨了如何通过定制开发AI智能名片商城小程序&#xff0c;结合销售策略与个人魅力&#xff0c;实现用户心甘情愿购买产品的目标。通过分析用户行为、心理需求及市场趋势&#xff0…

django之反向关系查询<related_model>_set/related_name

假设有两个模型&#xff1a;Author和Post&#xff0c;其中Post模型通过ForeignKey字段与Author模型相关联。 模型定义 from django.db import modelsclass Author(models.Model):first_name models.CharField(max_length30)last_name models.CharField(max_length30)class …

src资产收集心得

src平台的收录公告 ● 有的src平台公告中写着不要哪些站的洞得看清楚不然白忙活 ● 给你的是根域还是业务范围 收集方法/工具 ● oneforall(功能强大你需要配置api能配就配下&#xff0c;比较耗时) ● 灯塔&#xff08;本人不用&#xff09; ● layer ● fofa、quake、hunte…

EmguCV学习笔记 C# 5.2 仿射变换

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

vba自动发送邮件的基础步骤?有哪些流程?

vba自动发送邮件如何设置&#xff1f;vba自动发送邮件的技巧&#xff1f; 如果你想节省时间&#xff0c;提高工作效率&#xff0c;学会如何使用VBA自动发送邮件是一个非常有用的技能。AokSend将为你介绍VBA自动发送邮件的基础步骤&#xff0c;并通过简单的分段来详细讲解。 v…

[数据集][目标检测]夜间老鼠检测数据集VOC+YOLO格式316张1类别+视频文件1个

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;316 标注数量(xml文件个数)&#xff1a;316 标注数量(txt文件个数)&#xff1a;316 标注类别…

精益管理|介绍一本专门研究防错法(Poka-Yoke)的书

在现代制造业中&#xff0c;如何确保产品在每个生产环节中不出现错误是企业追求的目标之一。而实现这一目标的关键技术之一就是防错法&#xff08;Poka-Yoke&#xff09;。作为一种简单而有效的精益管理、六西格玛管理工具&#xff0c;防错法帮助企业避免因人为错误或工艺不当导…

共享打印机修复工具哪个好_2024年共享打印机修复工具推荐

共享打印机修复工具哪个好&#xff1f;最近几年使用过共享打印机的小伙伴遇到各种共享错误&#xff0c;出现0x00000709和0x0000011b访问共享打印机问题&#xff0c;各种打印机修复工具也有&#xff0c;下面小编就给大家介绍共享打印机修复工具哪个好用分析。 共享打印机修复工具…

用Python实现生信分析——序列搜索和比对工具详解

1. 什么是序列搜索和比对工具&#xff1f; 序列搜索和比对工具在生物信息学中用于在大型序列数据库中搜索与查询序列相似的序列&#xff0c;并进行比对分析。这些工具可以帮助研究人员识别与目标序列相关的已知序列&#xff0c;从而推测其功能、结构和进化关系。 常见的序列搜…

2024零基础转行做程序员,选什么语言更好就业?

零基础转行做程序员&#xff0c;选什么语言更好就业&#xff0c;未来的发展前景更好&#xff1f; 这个问题困扰了不少想转行的同学。有人说Python简单好上手&#xff0c;有人说Java就业机会多&#xff0c;有人说C薪资高&#xff0c;到底该怎么选&#xff1f; 其实各个语言的发…

安泰电压放大器的设计要求是什么样的

电压放大器的设计要求是一个广泛而复杂的领域&#xff0c;它在电子工程中扮演着至关重要的角色。电压放大器是一种电子电路&#xff0c;用于将输入信号的电压增大&#xff0c;而不改变其波形&#xff0c;通常用于放大微弱的信号以便进行后续处理或传输。下面将详细介绍电压放大…

【Vue3】编程式路由导航

【Vue3】编程式路由导航 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日…

Linux驱动开发基础(中断)

所学来自百问网 目录 1. 嵌入式中断系统 2. 中断处理流程 3. 异常向量表 4. Linux系统对中断的处理 4.1 ARM 处理器程序运行的过程 4.2 保护现场 5. Linux 系统对中断处理的演进 5.1 硬件中断和软件中断 5.2 中断拆分(上半部和下半部) 5.2.1 tasklet 5.2.2 工作队列…

从零开始学习网络安全渗透测试之信息收集篇——(二)WEB前端JS架构框架识别泄漏提取API接口枚举FUZZ爬虫插件项目

0、什么是JS渗透测试? 在Javascript中也存在变量和函数&#xff0c;当存在可控变量及函数调用即可参数漏洞JS开发的WEB应用和PHP&#xff0c;JAVA,NET等区别在于即没有源代码&#xff0c;也可以通过浏览器的查看源代码获取真实的点。获取URL&#xff0c;获取JS敏感信息&#…

深度学习(9)---ResNet详解

文章目录 一、思考题二、残差块三、网络结构 一、思考题 1. 问题&#xff1a;在一个神经网络中加深更多的层&#xff0c;总是改进精度吗&#xff1f; 2. 答&#xff1a;不一定。  如下面这幅图所示&#xff0c;蓝色五角星表示最优值&#xff0c;标有 F i F_i Fi​ 的闭合区域…