上周二,传知学院就K8s面试问题进行了总结,由于题量较多,共分为了上下两期。本周二,同样的时间同样的场景里,传小知给大家带来了第二期的面试问答。
欢迎多多点赞、群发、在看哈~
1
Kubernetes与Docker有什么关系?
答:
众所周知,Docker提供容器的生命周期管理,Docker镜像构建运行时容器。但是,由于这些单独的容器必须通信,因此使用Kubernetes。因此,我们说Docker构建容器,这些容器通过Kubernetes相互通信。因此,可以使用Kubernetes手动关联和编排在多个主机上运行的容器。
2
master节点跑了什么组件,每个组件作用?
答:Master
节点一般跑了: ETCD
、ApiServer
、Controller Manager
、Scheduler
(1)ETCD 分布式的K-V存储系统
http sever
:(在etcd3里面变成了grpc server),主要处理client的操作请求以及节点间的数据同步和心跳保持raft状态机
:通过对raft一致性协议的实现来保证etcd集群的高可用性store
:负责etcd中事务操作的逻辑,是api server的命令的具体实现wal存储
:负责具体的数据持久存储操作。它分为两部分,entry
负责实际的日志数据存储(在etcd里数据的存储都是带版本号的,对于同一个键值可能会有多个版本的记录存在,所以数据实际的存储方式即通过事务日志进行存储,而在内存里则存有键和版本号的映射关系以方便查询)。snapshot
则是对日志数据的的状态存储以防止过多的数据存在。
(2)API Server
ApiServer
:对外提供增删查改etcd中资源配置数据,worker
节点kubelet
同master
节点的API Server
进行交互, Master
节点的scheduler
和controller manager
组件也需要同API Server
进行交互以获取和修改对应资源的状态。
ApiServer 三层认证
:
k8s认证、
k8s授权、k8s准入。
(3)Controller Manager
Controller Manager
:以守护进程的形式运行着kubernetes几个核心的控制循环(也就是控制器),包括deployment,replicaset,namespace,serviceaccount,node等等,通过调用Api Server 的 list watch接口来监控自己负责的资源的配置变化.
(4)Scheduler
Scheduler
:是一个策略丰富、拓扑感知、工作负载特定的功能,调度器显著影响可用性、性能和容量。调度器需要考虑个人和集体的资源要求、服务质量要求、硬件/软件/政策约束、亲和力和反亲和力规范、数据局部性、负载间干扰、完成期限等。
kube-scheduler 给一个 pod 做调度选择包含两个步骤:
过滤
:过滤阶段会将所有满足 Pod 调度需求的 Node 选出来。例如,PodFitsResources 过滤函数会检查候选 Node 的可用资源能否满足 Pod 的资源请求。在过滤之后,得出一个 Node 列表,里面包含了所有可调度节点;通常情况下,这个 Node 列表包含不止一个 Node。如果这个列表是空的,代表这个 Pod 不可调度。打分
:打分阶段,调度器会为 Pod 从所有可调度节点中选取一个最合适的 Node。根据当前启用的打分规则,调度器会给每一个可调度节点进行打分。最后,kube-scheduler 会将 Pod 调度到得分最高的 Node 上。如果存在多个得分最高的 Node,kube-scheduler 会从中随机选取一个。
3
什么是Container Orchestration?
答:考虑一个应用程序有5-6个微服务的场景。现在,这些微服务被放在单独的容器中,但如果没有容器编排就无法进行通信。因此,由于编排意味着所有乐器在音乐中和谐共处,所以类似的容器编排意味着各个容器中的所有服务协同工作以满足单个服务器的需求。
4
Replica Set 和 Replication Controller之间有什么区别?
Replica Set 和 Replication Controller几乎完全相同。它们都确保在任何给定时间运行指定数量的pod副本。不同之处在于复制pod使用的选择器。Replica Set使用基于集合的选择器,而Replication Controller使用基于权限的选择器。
Equity-Based选择器:这种类型的选择器允许按标签键和值进行过滤。因此,在外行术语中,基于Equity的选择器将仅查找与标签具有完全相同短语的pod。
示例:假设您的标签键表示app = nginx,那么,使用此选择器,您只能查找标签应用程序等于nginx的那些pod。
Selector-Based选择器:此类型的选择器允许根据一组值过滤键。因此,换句话说,基于Selector的选择器将查找已在集合中提及其标签的pod。
示例:假设您的标签键在(nginx,NPS,Apache)中显示应用程序。然后,使用此选择器,如果您的应用程序等于任何nginx,NPS或Apache,则选择器将其视为真实结果。
附K8s知识“顺口溜”--
一个目标:容器操作;两地三中心;四层服务发现;五种Pod共享资源;六个CNI常用插件;七层负载均衡;八种隔离维度;九个网络模型原则;十类IP地址;百级产品线;千级物理机;万级容器;相如无亿,K8s有亿:亿级日服务人次。
*传知学院在此感谢参考文献的贡献者,并向通信人表示崇高的敬意。
戳,上传知学院看精彩内容~END
排版 | 西瓜
文章 | 传知娜娜(侵删)
图文 | 不可商用