k8s运维面试题(26题含答案)

k8s运维面试题(适合面试前观看)
1、k8s介绍,有哪些优点
随着容器结束应用来了便利也出现了一些问题:如容器down如何立刻替补、并发高如何横向扩展所以诞生了编排基础工具如k8s
Kubernetes简称为K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,是一个全新的分布式架构方案,可以针对每个节点运行容器进行管理
功能:自我修复、弹性伸缩、服务发现、负载均衡、版本回退、存储编排

2、pod是什么和容器关系、service是什么和pod什么关系
pod是k8s的最小管理单位,也是容器的封装单元,pod里的容器会统一分配ip并允许挂载数据卷和共享网络
service主要是解决pod动态变化提供唯一入口,并能提供访问和负载均衡,
可以通过标签label来匹配一组pod(和endpoint对象ip信息(健康pod动态表));
底层网络使用iptables或ipvs为一组pod提供负载能力,决定如何转发(建议ipvs,在kube-proxy配置文件修改查看ipvsadm -l)

3、k8s安装方式有哪些,区别和选择
一般有kubeadm和二进制两种方式 区别为一个更适合个性化定制,对底层了解较深,大量手动配置(从github下载稳定版)
kubeadm是k8s的官方快速部署工具,简化了部署过程,适合长期维护缺点为灵活地不适合个性化定制(kubeamd init来配置etcd集群和必要证书等,kubeamd join添加工作节点),

4、kube安装大概流程
准备:最少2G2C共3台且网络互通、配置hosts映射、ssh免密、关闭sawp分区、禁用selinux、关防火墙、修改内核添加网桥过滤和地址转发规则、配置NTP时间同步、修改yum ali源。
安装:安装启用docker(修改docker.json的cgroup为systmcd)、安装kubeadm、kubelet、kubectl,然后初始化集群在master使用kubeadm init后node上使用kubeamd jion 能在master get nodes表示安装成功
网络:使用calico和flannel都可以 wget 源地址下载本地后kubectl applf -f 文件后再get nodes稍等可以看到node状态为可访问

5、k8s有哪些组件,作用
master组件
Api Server:作为资源操作的唯一入口,客户端与k8s群集及K8s内部组件的通信,都要通过Api Server这个组件;
Controller-manager:运行控制器,负责维护群集的状态,比如故障检测、自动扩展、滚动更新等;
Scheduler:负责资源的调度,按照预定的调度策略将pod调度到相应的node节点上;
Etcd:担任数据中心的角色,保存了整个群集的状态;
node的组件
kubelet:负责维护容器的生命周期,同时也负责 Volume 和网络的管理
kube-proxy:负责为 Service 提供 cluster 内部的服务发现和负载均衡
其他组件
Container runtime:负责镜像管理和pod真正运行
Metrics-server:群集核心监控的聚合器
Kubeadm:群集的部署和升级工具
Kunectl:管理工具 k8s客户端

6、pod创建流程
客户提交apply -f 的pod请求后会将信息写入etcd,然后触发watch机制,把pod信息传发给scheduer调度器,然后scheduer将算法使用pod调度合适的节点
,apiserver再把绑定信息更新etcd,然后kubelet获取到pod信息并触发创建,并上报pod状态给apiserver

7、客户端访问pod的过程
客户发起请求后传送到
ingress(定义转发service规则,支持7层代理转发)、service(提供服务负载均衡通过4层代理关联后端pod)
kubeDNS、kube-proxy(依靠DNS解析获得虚拟ip,kube-proxy根据虚拟ip和不同的工作和转发模式到具体pod)

8、k8s常用命令
创建资源create/apply、查看get、删除delete、运行yun、创建service服务用expose、设置应用资源set、explain显示文档信息、edit编辑资源信息
设置标签label、扩缩容scale、查看资源信息describe、打印日志logs、进入容器交互exec

9、k8s-service四种类型
Clusterip:集群内部虚拟IP,只有内部可以访问、
Nodeport:所有节点公开service 外部可以访问,
LoadBalancer:在Nodeport基础上使云服务商对外提供服务,适用于公有云 、
Externalname:服务映射外部DNS不通过kube-proxy进行代理

10、k8s怎么暴露服务几种类型,你们用的什么
service Nodeport 服务模式在每个节点暴露端口、LoadBalancer是nodeport扩展,云服务负载均衡器暴露服务将流量定向到节点端口、ingress是一个ip多服务通常公开http和https
用的nginx-ingress:创建一个pod和svc,ingress写入域名并指向svc

11、k8s网络插件有哪些,你们用的什么,描述下优缺点
一般flannel和calico 都是提供pod跨主机通信能力区别为
flannel采用overlay技术可跨多个节点默认UDP封装,简单快速,适用于要求不高场景。
calico采用BGP进行路由选择,基于内核数据安全合性能行也更好,看网络环境。

12、k8s探针和检测方法有哪些
存活探针:检测容器运行状态,失败k8s会默认重启
就绪探针:检测是否准备好接收流量,如果失败k8s会从pod在service中移除
启动探针:检测容器是否启动完成,如果失败会认为在启动中不会触发存货和就绪探针
检测方法:exec(命令返回0成功)、http get(向容器指定http发送get 状态200-399正常)、tcp(链接tcp端口成功则正常)、grpc(健康检测,服务健康则正常)

13、pod重启策略?
always容器停止退出一直重启、onfailure容器终止运行状态为非0重启、never不论状态kubelet都不重启
14、k8s调度pod策略有哪几种
nodename指定特定node调度、nodedeselector给node打标签
此外还有三种亲和性都是在给node打标签基础上的(以node为目标,以pod为目标调度pod附近,反pod不调度某个pod附近)

15、有哪几个污点、怎么设置,以及容忍怎么设置介绍下
和调度策略及亲和性相反来避免pod调度节点
有三个污点策略:尽量pod调度、不会调度具有污点的node、不会调度污点node以及驱逐node已有pod、
设置污点:kubectl taint nodes node1 命名:污点策略 (去除命令一样在策略后-号)

16、pending状态排查流程(无法被调度节点)
一般都是调度问题有污点、内存、资源不足、pvc、网络等问题主要查看匹配情况了(kubectl describe pod )
排查可以查看资源情况free-m 、top、df-hT 快速定位 或者查看污点kubectl describe nodes | grep taints 然后kubectl taint nodes 污点后-删除污点

17、镜像拉取策略有哪几种
ifnotpresent没有镜像拉取、always每次创建都拉取、never不主动拉取

18、pod容器分为哪几种
pod容器:基础容器(维护整个pod网络空间)、初始化容器(先于业务容器开始执行)、业务容器(提供服务)

19、yaml文件怎么写,从上往下分别是什么
apiversion版本、kind数据类型、metadata元数据(名字、命名空间标签)、spec pod详细定义(副本数、容器规格)基本这样
然后一般都有固定模板进行修改也可以快速生成已有服务进行修改(get 资源 -o yaml >nginx.yaml )

20、怎么实现目录挂载的nfs
安装NFS服务器 创建共享目录设置权限后配置共享,然后创建pv和pvc,并后续通过pvc进行挂载到容器

21、pv/pvc区别
pv是网络存储,存储pod数据如云存储、NFS、本地等
pvc是k8s持久化存储请求,可以通过pvc请求pv,一起使用将进行绑定实现了持久化存储提高了系统的利用率和稳定性

22、五个控制器类型有哪些,应用是哪些
deployment随意创建没有特性要求(nginx、微服务、jar)
satefulset有固定顺序保证数据一致性可靠性。比如创建三个pod在不同node不删除所有pod数据都是共享的(mysql主从、etcd集群、kafka,zk)
Daemonset一次性部署 每个node都会运行一个pod分为普通任务
job和定时任务
cronjob一次性执行(普罗米修斯、logstach)

23、k8s和dockercompose区别
他们都是管理容器编工具场景和需求不一样,k8s适用于分布式大规模编排,多生产环境,compose适用于小规模应用、开发测试

24、pod生命周期和状态
创建、初始化、运行、(pending挂起、running运行中、succeeded成功、failed失败、unknown未知)

25、configmap介绍和使用
用于将非机密数据存储键值对中,把配置数据从代码中分开让镜像和配置文件解耦
可用作pod环境变量,命令参数和存储数据卷位置使用可以写一个yaml 数据写入data下,然后修改需要的配置文件映射到存储位置下

26、ingress怎么用
用于客户端外部客户访问k8s内部方案,当service业务多,支支持四层时nodeport成本就很高
这时候可以依靠ingress暴露service并提供7层url、负载均衡、ssl等服务
可以用方案deployment+loadbalancer把ingress部署在公有云,为service创建一个负载均衡器指向该地址进行对外暴露
或者deployment+nodeport内部进行部署,创建对应service但type为nodeport,ingress暴露在特定端口上进行服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值