连尚网络 运维工程师 一 & 二
岗位:k8s运维工程师
一面:
自我介绍
1,kubernets 灰度发布,切换部分流量到新的服务上怎么实现
答: ingress配置文件中,annotation 字段下定义不同的策略 参考地址: https://cloud.tencent.com/developer/article/1972417 #四种灰度策略: 1,nginx.ingress.kubernetes.io/canary-by-header: 基于 Request Header 的流量切分,适用于灰度发布以及 A/B 测试。 2,nginx.ingress.kubernetes.io/canary-by-header-value: 要匹配的 Request Header 的值,用于通知 Ingress 将请求路由到 Canary Ingress 中指定的服务。 nginx.ingress.kubernetes.io/canary-weight: 基于服务权重的流量切分,适用于蓝绿部署,权重范围 0 - 100 按百分比将请求路由到 Canary Ingress 中指定的服务。 nginx.ingress.kubernetes.io/canary-by-cookie: 基于 Cookie 的流量切分,适用于灰度发布与 A/B 测试。用于通知 Ingress 将请求路由到 Canary Ingress 中指定的服务的cookie。
2,epollo 模式实现原理?操作系统硬件层面属于同步模型还是异步模型?同步异步区别是什么?
epoll在操作系统IO层面时属于同步模型。 同步: 当进程或线程在运行过程中,发生阻塞时, CPU要等待程序任务完成才能继续执行下一步 异步:线程发生阻塞时。CPU无需等待该线程处理任务,可以去执行别的任务,之后再回来继续执行下一步任务。 epoll实现原理: 创建epoll对象: 首先会调研epoll_create 创建一个epoll文件描述符 添加事件到epoll监听: 调用epoll_ctl函数,向epoll FD中添加需要监控的文件描述符,并指点事件类型,如EPOLLIN(可读)、EPOLLOUT(可写)、EPOLLERR(错误)等 等待事件发生: 调用epoll_wait进程会阻塞等待,直到有一个已监听的文件描述符有事件触发,将相应的文件描述符加入到就绪队列中。 事件通知及处理:事件触发后,epoll_wait会返回一个就绪队列文件描述符和触发事件类型的列表,应用唤醒CPU根据列表信息对每个文件描述符进行相应操作。
3,epollo 惊群的原理
答:新的连接到达时,所有等待的进程/线程同时被唤醒,但只有一个线程可以处理该连接,其他进程处于空转状态,以此造成cpu资源的浪费和性能的下降。 解决方法: 可以让一个工作线程负责epoll监听事件并分配给一个空闲线程。以此防止全部唤醒
4,tcp三次握手原来
首先是客户端(client)向服务端发起报文请求syn,报文中包含一个随机生成的序号X,此时的状态是syn-send 服务端收到客户端请求报文后,回应一个 syn+ack报文给客户端,同时也会发送自己的序号Y,用于后续通信,当前的状态是syn-rcvd 客户端接收到服务器的 SYN + ACK 报文后,会回复一个ack报文,报文中包含确实号Y+1。此时客户端的状态ESTABLISHED 状态。服务端收到确认包后进入full open 状态也变更为ESTABLISHED 状态
5,网络插件calico 和flannel 有什么不同。
6,Linux系统平均负载高如何定位解决这个问题。
系统负载高,是由于当前服务队列中,有正在运行的或等待CPU时间片的进程或线程跟IO正在进行交互处于不可中断,导致系统整体负载偏高 定位问题: 不可中断进程: ps -ef | grep "D" # ”D“表示系统中不可中断的进程 cpuf负载高:ps aux --sort -pcpu| head。 #. #cpu使用率由高至低进行排序 当前系统等待处理的队列数: vmstat # 第一列的 “r” 表示当前队列排队数 第二列“b” 表示阻塞数
二面:
面试官好像是CTO 一边画图一边提问
vxlan 原理
vXLAN是一种网络虚拟化技术,可以改进大型云计算在部署时的扩展问题,是对VLAN的一种扩展。VXLAN是一种功能强大的工具,可以穿透三层网络对二层进行扩展。它可通过封装流量并将其扩展到第三层网关
docker 和 podman 区别
docker支持的文件系统类型
文件系统种类包括AUFS、 btrfs、Device Mapper、 overlay 、 overlay2、vfs、zfs overlay2:Docker 1.12 后推出,原生支持128层,效率比OverlayFS高,较新的版本Dokcer支持。
k8s持久化文件系统类型有哪些
持久化文件系统: nfs,ceph,glusterfs,iscsl,rbd等
service 原理
k8s中service是一种抽象对象,定义一组pod的逻辑集合,并提供一种访问这些pod的方式。通过标签选择器来确认客户端请求路由到后端Pod. k8s中kube-proxy组件实现service实际代理的服务器。它负责根据service规则将请求转发到后端不同节点上pod,同时还提供负载均衡的能力。将请求流量分发到后端同一组标签的不同pod上。这有助于实现高可用性和可伸缩性。
service 端口暴露的类型有哪些?怎么跟pod进行通信的
service暴露类型: service支持四种类型: cluster, noport,ExternalName,LoadBalancer 端口暴露到集群外类型: noport,LoadBalancer 如何跟pod进行通信: 首先是标签选择器确认具有相同标签的pod,通过访问service虚拟地址将请求流量路由到正确后端pod,使用iptables或ipvs生成规则来实现service与pod的通信,kube-proxy进行这些规则的维护和变更。
ingress 和noport 访问方式的不同
ingress: 将外部流量引入到集群内部中服务,是一个七层的代理服务,可以居于url地址进行转发。同时可以根据不同的url将流量转发到后端不同一组pod,可以进行丰富的路由和负载均衡配置,支持多个域名和路径,使得服务在外部访问时可以更加灵活。 Noport: noport是k8s 提供的一种服务类型,将内部服务暴露到集群外部。NodePort会在每个Node节点上监听一个指定的端口,并将请求转发到相应的服务上。
k8s 有哪些组件,他们分别的作用。
pytnon 多线程为什么只能在一个cpu上运行。 如何使用多个cpu
我记得的大概就这些了 原理的东西没怎么背。