收集面试中遇到的各类高频问题
k8s的架构
1. etcd保存了整个集群的状态;
2. kube-apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
3. kube-controller-manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
4. kube-scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
5. kubelet负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理;
6. Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
7. kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
当然也可以扩展的回答,云上k8s一般都会有kube-cloud-controller;需要对外提供服务的ingress;以及一些网络插件,fannel插件,coreDNS组件等这些都可以扩展的回答
k8s的更新策略
maxUnavailable:和期望ready的副本数比,不可用副本数最大比例(或最大值),这个值越小,越能保证服务稳定,更新越平滑;
maxSurge:和期望ready的副本数比,超过期望副本数最大比例(或最大值),这个值调的越大,副本更新速度越快。
maxUnavailable 0
maxSurge 1
最平滑原则:1 个新版本pod ready(结合 readiness)后,才销毁旧版本pod。此配置适用场景是平滑更新、保证服务平稳,但也有缺点,就是“太慢”了。
k8s的健康检查有哪些
readiness probes 准备就绪检查,通过readiness是否准备接受流量,准备完毕加入到endpoint,否则剔除
liveness probes 在线检查机制,检查应用是否可用,如死锁,无法响应,异常时会自动重启容器
startup probes 启动检查机制,应用一些启动缓慢的业务,避免业务长时间启动而被前面的探针kill掉
每种探测方法能支持几个相同的检查参数,用于设置控制检查时间:
initialDelaySeconds 初始第一次探测间隔,用于应用启动的时间,防止应用还没启动而健康检查失败
periodSeconds 检查间隔,多久执行probe检查,默认为10s
timeoutSeconds 检查超时时长,探测应用timeout后为失败
successThreshold 成功探测阈值,表示探测多少次为健康正常,默认探测1次
k8s的QoS有哪几类
QoS 主要分为Guaranteed、Burstable 和 Best-Effort三类,优先级从高到低
requests==limits 优先级最高
requests!=limits 中优先级
requests&&limits=nil 优先级最低
k8s的pv生命周期
1. 资源创建:状态处于Available
2. 资源绑定:状态为Bound
3. 资源使用:通过pvc绑定pv,挂载到pod容器
4. 资源释放:状态为Released
5. 资源回收:根据回收策略进行资源的回收
回收策略:1. 保留(Retain) 2. 删除(Delete) 3. 回收(Recycle) 其中3策略已经废弃
k8s创建pod的过程
待补充。。。
今天就更新到这里,👏🏻欢迎指正补充。