Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

K8S面试大通关 PDF 下载


分享到:
时间:2022-07-04 10:12来源:http://www.java1234.com 作者:转载  侵权举报
K8S面试大通关 PDF 下载
失效链接处理
K8S面试大通关  PDF 下载


本站整理下载:
提取码:apcl 
 
 
相关截图:
 
主要内容:

1、 k8s是什么?请说出你的了解?
答:Kubenetes是一个针对容器应用,进行自动部署,弹性伸缩和管理的开源系统。主要功能是生产环
境中的容器编排。
K8S是Google公司推出的,它来源于由Google公司内部使用了15年的Borg系统,集结了Borg的精华。
2、 K8s架构的组成是什么?
答:和大多数分布式系统一样,K8S集群至少需要一个主节点(Master)和多个计算节点(Node)。
主节点主要用于暴露API,调度部署和节点的管理;
计算节点运行一个容器运行环境,一般是docker环境(类似docker环境的还有rkt),同时运行一
个K8s的代理(kubelet)用于和master通信。计算节点也会运行一些额外的组件,像记录日志,
节点监控,服务发现等等。计算节点是k8s集群中真正工作的节点。
2.1 K8S架构细分:
2.1.1 Master节点(默认不参加实际工作):
Kubectl:客户端命令行工具,作为整个K8s集群的操作入口;
Api Server:在K8s架构中承担的是“桥梁”的角色,作为资源操作的唯一入口,它提供了认证、授
权、访问控制、API注册和发现等机制。客户端与k8s群集及K8s内部组件的通信,都要通过Api
Server这个组件;
Controller-manager:负责维护群集的状态,比如故障检测、自动扩展、滚动更新等;
Scheduler:负责资源的调度,按照预定的调度策略将pod调度到相应的node节点上;
Etcd:担任数据中心的角色,保存了整个群集的状态;
2.1.2 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;
3、 容器和主机部署应用的区别是什么?
答:容器的中心思想就是秒级启动;一次封装、到处运行;这是主机部署应用无法达到的效果,但同时
也更应该注重容器的数据持久化问题。
另外,容器部署可以将各个服务进行隔离,互不影响,这也是容器的另一个核心概念。
4、请你说一下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:
在上面的配置文件中,探测机制为在容器运行5秒后,每隔五秒探测一次,如果cat命令返回的值为“0”,
则表示健康,如果为非0,则表示异常。
2)Httpget: 通过发送http/htps请求检查服务是否正常,返回的状态码为200-399则表示容器健康
(注http get类似于命令curl -I)。
Httpget探测方式的yaml文件语法如下:

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐