Kubernetes面试问题

Kubernetes包含几个组件,各个组件的功能是什么,组件之间是如何交互的?
答:
  组件有:
    scheduler:负责根据规则资源合理化的原则来调度容器运行在哪台节点上
    controller-manager:负责控制容器的运行个数,保证容器健康稳定运行,监控pod运行状态
    kube-proxy:负责将本机上的pod与其他node节点上的pod进行网络通信,以及将pod的端口转发到本机端口
	etcd:以key/value形式存储,通常部署集群,负责存储当前节点所有信息,包括所有配置好的yaml,deployment对应下的pod
	kube-apiserver:是kubectl客户端以及所有组件接入的地方,访问控制,集群管理,认证授权,这个一般做高可用
	kubelete:每台node节点都有,负责操控根据api-server的指令操作本Node的Docker
	Kubernetes为所有资源增删改查的唯一入口,各组件均以list-watch的方式向Apiserve发送请求。为减少Apiserver的压力,各组件都采用缓存来缓存数据。功能模块在某些情况下不直接访问Apiserver,而是通过访问缓存来间接访问Apiserver。
	
Kubernetes的Pause容器有什么用,是否可以去掉?
答:
   不可以
   每个pause容器是每一个容器组(POD)的共享网络空间父容器,即使该容器被杀死,也会重新启动一个新容器且IP不会发生变化
Kubernetes中的Pod内几个容器之间的关系是什么?
答:
   一个pod内的所有容器共享该pod的网络空间
一个经典Pod的完整生命周期是怎么样的?
答:
   Peding:Pod定义明确,提交到kube-apiserver,但还未完全创建
   ContainerCreating:Pod调度完成被分配到指定node节点,容器开始创建下拉镜像
   Running:Pod成功创建,并且运行正常
   Successed:Pod中所有容器成功结束,且不会重启
   Failed:Pod中所有容器都结束,但至少一个容器以失败结束
   Unknown:由于一些原因,Pod状态无法获取,通常是与Pod通信出错
   Terminating:Pod正在删除
Deployment更新流程是什么?
答: 
   deployment会创建一个新的replicaset,新的replicaset创建一个pod,老的replicaset删除一个pod,这样一直轮询直到所有pod更新完,旧的replicaset还会存在但是它下面没有pod
Deployment与RC有什么区别?
答:
    Deployment与RC有98%的相似之处,不同在Deployment记录版本,可以回滚等操作,Deployment可以指定Pod的更新方式
k8s集群节点需要关机维护需要怎么操作?
答:
    先将Node节点上所有的Pod驱逐出去,待驱逐完成后将该Node节点封锁,重启完成后,将该节点重新加入到集群中去
Pod重启策略?
答:
    设置参数(RestartPolicy)
	三种策略:
	    Always: 当容器失效时, 由kubelet自动重启该容器
        OnFailure: 当容器终止运行且退出码不为0时, 由kubelet自动重启该容器
        Never: 不论容器运行状态如何, kubelet都不会重启该容器
控制器的镜像拉取策略?
答:
    Always: 表示每次都尝试重新拉取镜像
    IfNotPresent: 表示如果本地有镜像, 则使用本地的镜像, 本地不存在时拉取镜像
    Never: 表示仅使用本地镜像
kubernetes的资源探针有哪些?
答:
    有两种Readiness,Liveness
	检测方式有:
	    ExecAction:在container中执行指定的命令。当其执行成功时,将其退出码设置为0;
		TCPSocketAction:执行一个TCP检查使用container的IP地址和指定的端口作为socket。如果端口处于打开状态视为成功;
		HTTPGetAcction:执行一个HTTP默认请求使用container的IP地址和指定的端口以及请求的路径作为url,用户可以通过host参数设置请求的地址,通过scheme参数设置协议类型(HTTP、HTTPS)如果其响应代码在200~400之间,设为成功。
Kubernetes有哪些特性?
答:
    Kubernetes是自动化容器编排的开源平台,目标是让部署容器化的应用简单并且高效,提供了应用部署,规划,更新,维护的一种机制
    Kubernetes一个核心的特点就是可以让容器按照用户的期望状态运行
创建一个Pod会发生什么事?
答:
    1> 客户端提交Pod的配置信息(可以是Deployment定义好的信息)到kube-apiserver,kube-apiserve会把Pod信息存储到ETCD当中
    2> kube-scheduler 检测到Pod信息会开始调度
    3> kube-scheduler 开始调度预选,主要是过滤掉不符合Pod要求的节点
    4> kube-scheduler 开始调度调优,主要是会给节点打分以选择更加适合的节点
    5> kube-scheduler 选择好节点后会把结果存储到ETCD   
    6> kubelet 根据调度结果执行Pod创建操作
删除一个Pod会发生什么事情?
答:
    kube-apiserver会接受到用户的删除指令,默认有30秒时间等待优雅退出,超过30秒会被标记为死亡状态
	此时Pod的状态是Terminating,Kubelet看到Pod标记为Terminating开始了关闭Pod的工作
	1> Pod从service的列表中被删除
	2> 如果该Pod定义了一个停止前的钩子,其会在pod内部被调用,停止钩子一般定义了如何优雅结束进程
	3> 进程被发送TERM信号(kill -14)
	4> 当超过优雅退出时间时,Pod中的所有进程都很被发送SIGKILL信号(kill -9)

 

持续更新ing...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值