kubernetes必备⾯试题⽂章⽬录
1、监控Docker命令
docker inspect -f {"state"}svg交互式排版是什么
2、K8s的组件有哪些
# 1.API Server(kube-apiserver :中央管理器,调度管理集) == 领导(不⼲活)
负责处理来⾃⽤户的请求,其主要作⽤就是对外提供RESTful的接⼝
包括⽤于查看集状态的读请求以及改变集状态的写请求,也是唯⼀⼀个于etcd集通信的组件。
# 2.Controller(kube-controller-manager :控制器:管理容器,监控容器) == 安装⼈⼲活
管理器运⾏了⼀系列的控制器进程,这些进程会按照⽤户的期望状态在后台不断地调节整个集中的对象当服务的状态发⽣改变,控制器就会发现这个改变并且开始向⽬标状态迁移。
下列选项中数据类型为数字类型的# 3.Scheduler(kube-scheduler:调度器:调度容器)== 具体通过算法让某⼀个⼲活
调度器其实为Kubernetes中运⾏的Pod选择部署的Worker节点
它会根据⽤户的需要选择最能满⾜请求的节点来运⾏Pod,它会在每次需要调度Pod时执⾏。
# 4.Flannel(提供集间⽹络)
# 5.Etcd(数据库) == 存放的信息
负载存储集中各种资源对象的信息
# 6.kubelet(部署容器,监控容器)
# 7.kube-proxy(提供容器间的⽹络)
# 8.DNS (域名解析)
3、常⽤控制器以及特点?
java培训机构真的有用吗
Deployment # 部署⽆状态应⽤
DaemonSet # 每个节点上都部署⼀个,⽤于收集、监控⽇志
StatufluSet # 部署有状态应⽤
4、Service的类型有哪些?
ClusterIP # 向集内部暴露服务
NodePort # 通过宿主主机IP和端⼝向外部暴露服务
LoadBalancer # 通过弹性IP向外部暴露服务
ExtennalName # 将外部的⼀个服务定义⼀个集内部的别名
5、Ingress-Nginx的⼯作原理
根据ingress配置清单,实时⽣成Nginx配置,并且使其⽣效,之后通过nginx反向代理转发流量到pod中
6、从ingress到pod的流程
ingress ---> endpoints(HeadLess Service) ---> pod
7、控制器、service、ngress管理pod的⽅式?
控制器 --->通过标签
Service ---> endPoints
ingress ---> endpoints
8、主容器的作⽤
1.提供⼀个Pod的基础⽹路命名空间
2.提供共享存储
3.监控业务容器
9、Pod的⽣命周期
1.调度服务到节点
2.创建Pod
2.创建主容器
如何查看openssl安装位置3.依次创建业务容器
4.执⾏开始回调钩⼦
5.进⾏健康检查:存活探测、就绪探测
6.执⾏结束回调钩⼦
7.依次结束业务容器
8.结束主容器
9.销毁Pod
10、在k8s中yaml配置清单的最基本结构
java应用开发入门教程apiVersion:
kind:
metadata:
spec:
status:
11、Ingress 设置重定向的⽅式有哪些,区别是什么?
1.注解# 当前ingress⽣效
12、部署Wordpress的流程
1.将Wordpress打包到镜像并构建
2.编写配置清单(Service、Deployment、Ingress)
3.部署、访问测试
13、Docker的四种⽹络模式
Brigre # 默认,启动Docker进程时,会在主机上创建⼀个名为docker0的虚拟⽹桥,和物理交换机类似None # 容器有独⽴的 Network namespace,但并没有对其进⾏任何⽹络设置
Host # 容器和宿主机共享 Network namespace
Container # 容器与容器共享⼀个NameSpace,K8s中的Pod就是采⽤此模式
14、Dockerfile常⽤指令
FROM # 镜像来源
mysql面试题常问ADD # 复制⽂件到镜像,⽀持tar包⾃动解压,强于COPY
RUN # 指定构建镜像时运⾏的命令
ARG # ⽤于指定传递给构建时的变量
ENV # 环境变量
COPY # 复制⽂件到镜像
LABEL # 为镜像添加元数据,不常⽤
EXPOSE # 制定与外界交互的端⼝
VOLUME # ⽤于指定持久化⽬录
ONBUILD # 镜像触发器,可触发基础镜像内的动作
WORKDIR # ⼯作⽬录,类似于cd后的初始路径
CMD # 指定容器运⾏时的默认命令,如启动命令
15、K8s组件及协同关系
所有服务均是由Apiserver调度
1.Kubectl发送了⼀个部署nginx的任务
2.进⼊Master节点进⾏安全认证
3.通过认证后,Apiserver接受指令
4.将部署的命令数据记录到ETCD中
5.Apiserver再读取ETCD中的数据
6.Apiserver到Scheduler,告诉它要部署服务
7.Scheduler向Apiserver调取⼯作节点数据,看部署在哪台合适
8.Apiserver调取ETCD中粗出的数据,并发送给Scheduler
9.Scheduler通国计算⽐较,到最合适的Node节点并发送给Apiserver
10.Apiserver把要部署在Node节点的计划储存到ETCD中
11.Apiserver读取ETCD中的部署计划,通知Node节点的Kubelet来部署容器
12.Kubelet根据指令部署Nginx容器,kube-proxy为Nginx容器创建⽹桥
13.容器⽹桥部署完成后,Kubelet通知Apiserver已完成部署⼯作
14.Apiserver将部署状态存储在ETCd中,同时通知Controller-Manager来活了
15.Controller-Manager向Apiserve要需监控容器的数据
16.ApiserverETCD读取相应数据,同时通知Kubelet要源源不断发送监控的数据
17.ApiserverKubelet发送来的数据存储到ETCD中
18.Apiserver将ETCD的数据返回给Controller-Manager
19.Controller-Manager根据数据计算判断容器是否存在或健康
16、K8s存储卷有哪些
empyDir
# Pod调度到节点时创建的⼀个临时空⽬录,Pod删除随之删除,⽤于容器间分享⽂件
hostPath
# 节点存储卷,挂在宿主机的⽂件或⽬录到Pod中
PV/PVC
# 是外部存储系统中的⼀块存储空间,具有持久性,⽣命周期独⽴于Pod
StoageClass
# 是充当PV的模板,从⽽可以动态创建所需的PV,⾃动构建相对应的PV持久化存储卷
configmap
# 能使⼀个配置⽂件多台机器共⽤,杜绝重复修改,⽀持热更新,且⽀持挂载
两种⽅式:挂载、存储卷
secret
# 将密码转换为密⽂,写⼊配置清单中,起到加密的作⽤。
17、健康检查的⽅式+针对点+错误处理⽅式
存活性监测# 容器是否正常启动 --> 删除容器
就绪性检测# 容器是否正常提供服务 --> 移出负载均衡
18、将Pod调度到master节点的⽅法
1.删除污点:
删除master节点上打的污点标签,⽤亲和性使Pod调度到master(scheduler)
2.容忍污点:
设置Pod容忍污点,使⽤selectNode调度到master
19、简单说明emptyDir与hostPath
emptyDir # ⽤来作为Pod中的临时⽬录
hostPath # 类似于docker -v 参数,将存储卷挂载在本地
20、部署Discuz的步骤
1.编写配置清单
# 部署MySQL集
创建命名空间
创建Service提供负载均衡
使⽤控制器部署Discuz
# 部署Discuz应⽤
创建命名空间
创建Service提供负载均衡(headless service)
创建服务并挂载代码
# 连接服务器
Discuz连接MySQL --> sql.svc.cluster.local
2.部署~
21、K8s的配错⽅法有哪些?
1.权限不⾜
2.内存不⾜
33.⽹络问题
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论