go语言面试真题及解析 golang语言面试( 四 )


简述 Kubernetes DaemonSet 类型的资源特性?
答:DaemonSet 资源对象会在每个 Kubernetes 集群中的节点上运行,并且每个节
点只能运行一个 pod , 这是它和 deployment 资源对象的最大也是唯一的区别 。因此,
在定义 yaml 文件中 , 不支持定义 replicas 。
它的一般使用场景如下:
l 在去做每个节点的日志收集工作 。
l 监控每个节点的的运行状态 。
简述 Kubernetes Service 分发后端的策略?
答:Service 负载分发的策略有:RoundRobin 和 SessionAffinity
l RoundRobin:默认为轮询模式,即轮询将请求转发到后端的各个 Pod 上 。
l SessionAffinity:基于客户端 IP 地址进行会话保持的模式 , 即第 1 次将某个客户
端发起的请求转发到后端的某个 Pod 上,之后从相同的客户端发起的请求都将被
转发到后端相同的 Pod 上 。
简述 Kubernetes Scheduler 使用哪两种算法将 Pod 绑定到 worker 节点?
答:Kubernetes Scheduler 根据如下两种调度算法将 Pod 绑定到最合适的工作节点:
l 预?。≒redicates):输入是所有节点 , 输出是满足预选条件的节点 。kube
scheduler 根据预选策略过滤掉不满足策略的 Nodes 。如果某节点的资源不足或
者不满足预选策略的条件则无法通过预选 。如“Node 的 label 必须与 Pod 的
Selector 一致” 。
l 优?。≒riorities):输入是预选阶段筛选出的节点,优选会根据优先策略为通过
预选的 Nodes 进行打分排名 , 选择得分最高的 Node 。例如,资源越富裕、负载
越小的 Node 可能具有越高的排名 。
简述 Kubernetes Secret 有哪些使用方式?
答:创建完 secret 之后,可通过如下三种方式使用:
l 在创建 Pod 时,通过为 Pod 指定 Service Account 来自动使用该 Secret 。
l 通过挂载该 Secret 到 Pod 来使用它 。
l 在 Docker 镜像下载时使用,通过指定 Pod 的 spc.ImagePullSecrets 来引用它 。
简述 Kubernetes 网络策略原理?
答:Network Policy 的工作原理主要为:policy controller 需要实现一个 API
Listener,监听用户设置的 Network Policy 定义,并将网络访问规则通过各 Node 的
Agent 进行实际设置(Agent 则需要通过 CNI 网络插件实现) 。
简述 Kubernetes 集群联邦?
答:Kubernetes 集群联邦可以将多个 Kubernetes 集群作为一个集群进行管理 。因此 , 
可以在一个数据中心/云中创建多个 Kubernetes 集群,并使用集群联邦在一个地方控
制/管理所有集群 。
简述 Kubernetes 如何进行优雅的节点关机维护?
答:由于 Kubernetes 节点运行大量 Pod,因此在进行关机维护之前 , 建议先使用
kubectl drain 将该节点的 Pod 进行驱逐,然后进行关机维护 。
.简述 Kubernetes 中 , 如何使用 EFK 实现日志的统一管理?
答:在 Kubernetes 集群环境中,通常一个完整的应用或服务涉及组件过多,建议对
日志系统进行集中化管理,通常采用 EFK 实现 。
EFK 是 Elasticsearch、Fluentd 和 Kibana 的组合 , 其各组件功能如下:
l Elasticsearch:是一个搜索引擎,负责存储日志并提供查询接口;
l Fluentd:负责从 Kubernetes 搜集日志,每个 node 节点上面的 fluentd 监控并
收集该节点上面的系统日志,并将处理过后的日志信息发送给 Elasticsearch;
l Kibana:提供了一个 Web GUI,用户可以浏览和搜索存储在 Elasticsearch 中的
日志 。通过在每台 node 上部署一个以 DaemonSet 方式运行的 fluentd 来收集每台 node
上的日志 。Fluentd 将 docker 日志目录/var/lib/docker/containers 和/var/log 目录

推荐阅读