1.Kubernetes基础组件有哪些,什么功能?
1 2 3 4 5 6 |
kube-apiserver #负责集群数据的交互与通信 kube-controller-manager #负责集群各个资源的管控,使其保持在预期的工作状态 kube-schduler #集群的资源调度中心 etcd #键值对数据库,负责存储k8s集群的重要数据 kube-proxy #负责调度,将pod调度到最优节点上。 kubelet #每个节点上运行的代理,确保容器处于运行状态且健康。会定期想master汇报资源使用情况。 |
2.网络选型需要注意什么?
1 2 3 |
<1>、注意IP资源是否够用 <2>、根据网络情况和业务情况选择CNI插件 <3>、划分保留的集群地址段建议避开现有的内网物理网络网段 |
2.Flannel的三种工作模式
1 2 3 4 |
<2>、VXLAN VXLAN即Virtual Extensible LAN(虚拟可扩展局域网),是 Linux 内核本身就支持的一种网络虚似化技术。 VXLAN 的覆盖网络(Overlay Network)的设计思想是:在现有的三层网络之上,“覆盖”一层虚拟的、由内核 VXLAN 模块负责维护的二层网络, 使得连接在这个 VXLAN 二层网络上的“主机”(虚拟机或者容器都可以)之间,可以像在同一个局域网(LAN)里那样自由通信。 |
3.calico网络模式
1 2 3 4 5 6 7 8 9 |
<1>、IPIP: 把一个IP数据包又套在一个IP包里,即把IP层封装到IP层的一个 tunnel,它的作用其实基本上就相当于一个基于IP层的网桥,一般来说, 普通的网桥是基于mac层的,根本不需要IP,而这个ipip则是通过两端的路由做一个tunnel,把两个本来不通的网络通过点对点连接起来. <2>、BGP: 边界网关协议(BorderGateway Protocol, BGP)是互联网上一个核心的去中心化的自治路由协议。 它通过维护IP路由表或‘前缀’表来实现自治系统(AS)之间的可达性,属于矢量路由协议。 BGP不使用传统的内部网关协议(IGP)的指标,而是基于路径、网络策略或规则集来决定路由。 因此,它更适合被称为矢量性协议,而不是路由协议,通俗的说就是将接入到机房的多条线路(如电信、联通、移动等)融合为一体,实现多线单IP; BGP 机房的优点:服务器只需要设置一个IP地址,最佳访问路由是由网络上的骨干路由器根据路由跳数与其它技术指标来确定的,不会占用服务器的任何系统。 |
4.pod的几种状态
1 2 3 4 5 |
Pending 等待中 Running 运行中 Succeeded 正常终止 Failed 异常停止 Unkonwn 未知状态 |
5.请回答Kubernetes发布策略(4种)
1 2 3 4 |
<1>、重建更新(Recreate)—停止旧版本部署新版本 <2>、滚动更新(rolling-update)—一个接一个地以滚动更新方式发布新版本 <3>、蓝绿更新—新版本与旧版本一起存在,然后切换流量 <4>、灰度更新(canary—将新版本面向一部分用户发布,然后继续全量发布 |
6.StatefulSets和Operator的区别是什么?
1 |
StatefulSet是为了解决有状态服务的。opertator用来扩展k8s api,自定义crd。 |
7、Pod中pending状态,是什么原因产生的?pod出现问题的排查思路
1 |
如果是由上层的控制器(deployment、StatefulSet、DaemonSet之类的)进行控制的话,需要查看当前控制Pod的ReplicaSet,查看里面的Event是什么原因导致的Pending。 |
8、一个pod的创建流程
1 2 3 4 5 6 |
<1>、客户端或者通过API去访问API-SERVER发起一个create pod的请求 <2>、API-Server接收到请求之后创建一个标准的包含Pod信息的yaml <3>、API-Server将刚才的yaml信息写入etcd数据库。 <4>、Scheduler(调度器)查看API-Server,类似于通知机制并查看这个pod的yaml结构下pod.spec.Node是否等于Null,如果等于Null说明这个Pod是新来的,并没有在任何的node节点进行部署绑定。首先会进行调度计算, 并根据Pod上的调度相关的策略计算出最符合的那个Node节点,并在pod.spec.Node中更新分配结果,这里的所有操作都会被API-Server写入ETCD中进行保存 <5>、Kubelet通过API-Server进行通讯,不停的刷新数据,发现了ETCD中多出了这一个待创建的Pod,并且Node节点的编号和自己相同,即这个pod被分配到了自己的节点上,则通过调用cri标准接口让容器驱动进行容器的创建。 |
9、K8s的POD(Pause)容器有什么用?是否可用去掉?
1 2 3 4 |
为pod中的多个容器提供共享网络空间,实现pod里容器间的通信。 主要有两个职责: <1>、是pod里其他容器共享Linux namespace(uts,ipc)的基础 <2>、扮演PID 1的角色,负责处理僵尸进程 |
10、kube-proxy iptables和ipvs转发有什么不同。
1 2 3 4 5 6 |
iptables与IPVS都是基于Netfilter实现的,但因为定位不同,二者有着本质的差别:iptables是为防火墙而设计的;IPVS则专门用于高性能负载均衡,并使用更高效的数据结构(Hash表),允许几乎无限的规模扩张。 与iptables相比,IPVS拥有以下明显优势: 为大型集群提供了更好的可扩展性和性能; 支持比iptables更复杂的复制均衡算法(最小负载、最少连接、加权等); 支持服务器健康检查和连接重试等功能; 可以动态修改ipset的集合,即使iptables的规则正在使用这个集合。 |
11、详细叙述Kube-Proxy的原理
1 2 3 4 5 6 7 |
监听 API server 中 service 和 endpoint 的变化情况,并通过 iptables 等来为服务配置负载均衡 kube-proxy的作用主要是负责service的实现 service另外一个重要作用是,一个服务后端的Pods可能会随着生存灭亡而发生IP的改变,service的出现,给服务提供了一个固定的IP,而无视后端Endpoint的变化。 kube-proxy 模式: userspace 已弃用: iptables 大规模下会有性能问题 且不支持会话保持 ipvs |
12、k8s的service和ep是如何关联和相互影响的
1 |
service中有selector时才会创建endpoints.kube-proxy 会监视 Kubernetes 控制节点对 Service 对象和 Endpoints 对象的添加和移除。只要服务中的pod集合发生更改,endpoints就会被更新 |
13、Pod中pending状态,是什么原因产生的?pod出现问题,排查思路
1 2 3 4 5 6 |
<1>.可能是节点资源不足 <2>.不满足 nodeSelector 与 affinity <3>.Node 存在 Pod 没有容忍的污点 <4>.kube-scheduler 未正常运行 <5>.镜像不存在 <6>.排查思路 kubectl describe pod 查看具体信息到相应node上查看具体日志 |
14、StatefulSet是怎么实现滚动更新的?
1 |
多个pod时,会按照顺序(序列号)滚动更新,每一个 Pod 都正常运行时才会继续处理下一个 Pod。 |
15、Kubectl exec实现的原理是什么?
1 |
首先会读取config文件 ,生成GET/POST请求 去访问apiserver,apiserver会向kubelet发起连接 |
16、如何实现schedule水平扩展?
1 |
scheduler 只能有一个leader ,一般有三个节点就够。 |
17、为什么k8s要用声明式?
1 2 3 4 |
命令式 和 声明式 区别 对于命令式请求(比如,kubectl replace ): 一次只能处理一个写请求,否则会有产生冲突的可能 (替换更新)。 对于声明式请求(比如,kubectl apply ) : 一次能处理多个写操作,并且具备 Merge 能力 (增量更新)。 只需描述期望状态就行,剩下的交给k8s |
10、容器的驱逐时间是多少?由什么决定的?
1 |
默认驱逐时间是5min,可修改,是由kube-controller-manager的pod-eviction-timeout控制的。node资源不足时也会发生驱逐,是按照qos等级来驱逐的。 |
11、kubelet异常 不能和apiserver通信
1 |
节点的NotReady是什么导致的? NotReady会导致什么问题? |
12、POD生命周期
13、ETCD集群如何进行leader节点的选举。
14、容器的时区问题如何处理和解决。
15、POD是什么?
1 2 |
pod就是一组容器,我们在使用docker的那个阶段,每个项目由有个服务,由不同容器组合运行。而pod就是对这一组密切相关的容器的一个逻辑总称。即一组业务容器跑在一个k8s的pod中。每个pod中会有一个pause容器, 这个容器与其他的业务容器都没有关系,以这个pause容器的状态来代表这个pod的状态,pause容器有一个ip地址,和一个存储卷,pod中的其他容器共享pause容器的ip地址和存储,这样就做到了文件共享和互信。 |
16、使用prometheus都监控过哪些资源对象
17、3000台节点,prometheus有什么监控方案。
18、IPIP 和 BGP 让你详述此2个网络模式。然后再问你有啥不同。最后问你如果podip 不够了你要咋弄
1 2 3 |
可以改一个大子网 默认是64个主机 把大子网改一下 |
19. 网络插件比如flannel流量过程
1 2 3 4 5 6 |
pod中产生数据,根据pod的路由信息,将数据发送到Cni0 Cni0 根据节点的路由表,将数据发送到隧道设备flannel.1 Flannel.1查看数据包的目的ip,从flanneld获得对端隧道设备的必要信息,封装数据包。 Flannel.1将数据包发送到对端设备。对端节点的网卡接收到数据包,发现数据包为overlay数据包,解开外层封装,并发送内层封装到flannel.1设备。 Flannel.1设备查看数据包,根据路由表匹配,将数据发送给Cni0设备。 Cni0匹配路由表,发送数据给网桥上对应的端口 |
20. 遇到过的生产问题

21. k8s高可用怎么做的
1 |
高可用就是三主高可用,NGINX代理的apiserver |
22. 日志怎么收集的
1 2 3 |
日志收集就是filebeat +es es分片的话默认的,副本1,三个节点 |
23. 监控用了哪些
1 |
监控就是云平台的+自己部署的普罗米修斯 |
- 本文固定链接: https://www.yoyoask.com/?p=8974
- 转载请注明: shooter 于 SHOOTER 发表