在当今互联网技术飞速发展的时代,软件容器化、云原生应用已成为新趋势,Kubernetes(简称K8s)作为一款目前最火热的容器编排系统,越来越受到广大运维工程师的关注。那么,针对K8s运维领域的面试题及其解答就显得尤为重要。
以下将分多个角度提出一些可能会在K8s运维面试中遇到的问题,并逐一加以剖析和解答。
一、Kubernetes基础
1.Kubernetes的重要组件与作用?
答:Kubernetes由多个重要组件构成,包括kubelet、kube-proxy、kube-apiserver、kube-controller-manager、kube-scheduler等,主要功能如下:
① kubelet:负责管理每个节点上的容器,确保容器资源与节点资源相符,并通过容器镜像拉取将Pod中的容器运行起来;
② kube-proxy:提供Service相关的通讯和负载均衡;
③ kube-apiserver:作为整个系统的控制中心,提供API服务供其他组件使用;
④ kube-controller-manager:通过各种控制器(如Deployment、StatefulSet等)实现资源的自动调度和状态的变更;
⑤ kube-scheduler:选择合适的Node节点,将Pod调度过去。
2.Kubernetes的Node和Pod有什么区别?
答:Node是集成了Kubernetes容器运行时的物理主机或虚拟机,是Kubernetes的运行基础设施;Pod是Kubernetes的最小部署单元,每个Pod都有自己唯一的IP地址,可以容纳一个或多个容器。
3.Kubernetes中的Deployment和StatefulSet有什么区别?
答:Deployment与StatefulSet都是Kubernetes中实现应用程序自动扩展和接管的控制器(Controller),但它们之间还是有一些本质区别的,如下:
① Deployment适用于有状态或无状态的应用,StatefulSet适用于有状态的应用;
② Deployment中容器的命名方式是随机的,StatefulSet中的容器有唯一的稳定的网络标识符;
③ Deployment支持滚动升级,StatefulSet支持有序并行的滚动升级;
④ Deployment中的Pod有副本并做扩展,而StatefulSet中的Pod有唯一的稳定网络ID,其中的副本提供与部署Pod相同的运行时环境。
二、Kubernetes网络
1.Kubernetes集群网络模型是怎样的?
答:Kubernetes中有三种主要的网络模型:Host-Only、Overlay和Underlay(Flat)。
Host-Only模型是在Kubernetes启动时通过kubelet为每个节点创建一个虚拟网桥,Pod上的容器进程可以通过localhost进程方式来访问同一节点上的其他容器进程。
Overlay模型可以支持跨主机的网络通信,通过使用虚拟网络(如Flannel、Calico、Weave等工具)来实现。
Underlay(Flat)模型则是直接使用同一网段的IP地址池,容器之间可以直接相互通信。
2.Kubernetes中的Service作用是什么?
答:Service是Kubernetes中的一个抽象概念,用来提供一种统一的访问入口,为应用程序提供防抖、负载均衡和服务发现等功能。它通过遍历Pod的IP地址以及端口来动态获取Pod的状态,并掌握了Pod的状态变化,从而为Pod构建一个虚拟的IP地址,多个Pod可拥有相同的虚拟IP地址,Service将流量负载到不同的Pod上,从而提高应用程序的可用性和稳定性。
三、Kubernetes存储
1.Kubernetes中的StorageClass有何作用?请举例说明使用场景。
答:StorageClass是Kubernetes的一个对象,定义了存储资源提供者支持的一系列存储规格;再通过PersistentVolumeClaim(PVC)对象来申请存储资源。StorageClass可以在多种不同的存储后端中进行选择,以满足不同的存储需求,如Ceph、GlusterFS等。
常见的使用场景包括:
① 为应用程序提供持久化存储,例如数据库、缓存等即可使用StorageClass;
② 为备份和开发提供存储,比如需要存储代码或文档等;
③ 为生产提供相对定制的存储,例如卷的容量、存储类型(基于SSD或HDD等)等。
2.Kubernetes的卷(Volume)有什么作用?请举例说明。
答:卷是Kubernetes中容器与主机之间进行数据交互的一种机制,容器可以通过卷来访问本地文件系统、网络存储或云存储等,从而保证了数据的持久化性和可靠性。
常见的卷类型包括:
① HostPath Volume,是通过挂载主机的本地目录来提供持久化卷;
② EmptyDir Volume,是在Pod被创建时该卷会被创建,Pod被删除时,卷中的数据将被清除;
③ ConfigMap Volume,是将ConfigMap直接挂载为卷,将其他容器中创建的配置文件发布出去;
④ Secret Volume,类比ConfigMap Volume,它将Secret通过卷的方式使它可用。
四、Kubernetes调度
1.Kubernetes中的调度器(scheduler)有什么作用?
答:Scheduler是Kubernetes的核心组件之一,它会监听kube-apiserver中的Pod创建的事件,尝试为Pod选择节点并将Pod调度到该节点上执行。并且,调度器还需要考虑节点的负载情况,从而避免因为集群负载不均衡而导致节点宕机等问题。
2.什么是亲和性和反亲和性?
答:亲和性规定同一Pod内的容器将被调度在同一节点上,而反亲和性则规定同一Pod内的容器将不会被调度在同一节点上。
5个常见的亲和性类型包括:
① requiredDuringSchedulingIgnoredDuringExecution
② preferredDuringSchedulingIgnoredDuringExecution
③ requiredDuringSchedulingRequiredDuringExecution
④ preferredDuringSchedulingRequiredDuringExecution
⑤ nodeAffinity
五、Kubernetes监控
1.Kubernetes中的两种监控方式分别是什么?
答:Kubernetes中的两种监控方式分别是拉取式监控(Pull-Based Monitoring)和推送式监控(Push-Based Monitoring)。
拉取式监控即Prometheus的模式,由Prometheus服务器负责定时区获取监控数据。并以时间序列数据存储到本地数据仓库中进行分析和展示。
推送式监控即类似Zabbix和Ganglia的方式,由受监控节点将获取到的监控数据主动推送给监控服务器。
2.Kubernetes的监控工具有哪些?
答:Kubernetes中主流的监控工具包括Prometheus、Grafana、WeaveScope等,其中Prometheus和Grafana是重要的组合工具,可以实现的集群的实时监控和报警。
本文从Kubernetes的基础知识、网络、存储、调度和监控五个方面阐述了一些Kubernetes运维面试中可能遇到的问题,并提供相应的解答。深入了解Kubernetes的原理和实现细节,掌握这些基础知识,对于成为一名优秀的Kubernetes运维工程师来说是必不可少的。
扫码咨询 领取资料