Kubernetes 常见面试题(七)

61. 简述 Kubernetes Worker 节点加入集群的过程?

答:通常需要对 Worker 节点进行扩容,从而将应用系统进行水平扩展。主要过程如下:

  • 1、在该 Node 上安装 Docker、kubelet 和 kube-proxy 服务;
  • 2、然后配置 kubelet 和 kubeproxy 的启动参数,将 Master URL 指定为当前Kubernetes 集群 Master 的地址,最后启动这些服务;
  • 3、通过 kubelet 默认的自动注册机制,新的 Worker 将会自动加入现有的Kubernetes 集群中;
  • 4、Kubernetes Master 在接受了新 Worker 的注册之后,会自动将其纳入当前集群的调度范围。

62. 简述 Kubernetes Pod 如何实现对节点的资源控制?

答:Kubernetes 集群里的节点提供的资源主要是计算资源,计算资源是可计量的能被申请、分配和使用的基础资源。当前 Kubernetes 集群中的计算资源主要包括 CPU、GPU 及 Memory。CPU 与 Memory 是被 Pod 使用的,因此在配置 Pod 时可以通过参数 CPU Request 及 Memory Request 为其中的每个容器指定所需使用的 CPU 与Memory 量,Kubernetes 会根据 Request 的值去查找有足够资源的 Node 来调度此Pod。

通常,一个程序所使用的 CPU 与 Memory 是一个动态的量,确切地说,是一个范围,跟它的负载密切相关:负载增加时,CPU 和 Memory 的使用量也会增加。

63. 简述 Kubernetes Requests 和 Limits 如何影响 Pod 的调度?

答:当一个 Pod 创建成功时,Kubernetes 调度器(Scheduler)会为该 Pod 选择一个节点来执行。对于每种计算资源(CPU 和 Memory)而言,每个节点都有一个能用于运行 Pod 的最大容量值。调度器在调度时,首先要确保调度后该节点上所有 Pod
的 CPU 和内存的 Requests 总和,不超过该节点能提供给 Pod 使用的 CPU 和Memory 的最大容量值。

64. 简述 Kubernetes Metric Service?

答:在 Kubernetes 从 1.10 版本后采用 Metrics Server 作为默认的性能数据采集和监控,主要用于提供核心指标(Core Metrics),包括 Node、Pod 的 CPU 和内存使用指标。

对其他自定义指标(Custom Metrics)的监控则由 Prometheus 等组件来完成。

65. 简述 Kubernetes 中,如何使用 EFK 实现日志的统一管理?

答:在 Kubernetes 集群环境中,通常一个完整的应用或服务涉及组件过多,建议对日志系统进行集中化管理,通常采用 EFK 实现。

EFK 是 Elasticsearch、Fluentd 和 Kibana 的组合,其各组件功能如下:

  • Elasticsearch:是一个搜索引擎,负责存储日志并提供查询接口;
  • Fluentd:负责从 Kubernetes 搜集日志,每个 node 节点上面的 fluentd 监控并收集该节点上面的系统日志,并将处理过后的日志信息发送给 Elasticsearch;
  • Kibana:提供了一个 Web GUI,用户可以浏览和搜索存储在 Elasticsearch 中的日志。

通过在每台 node 上部署一个以 DaemonSet 方式运行的 fluentd 来收集每台 node上的日志。Fluentd 将 docker 日志目录/var/lib/docker/containers 和/var/log 目录挂载到 Pod 中,然后 Pod 会在 node 节点的/var/log/pods 目录中创建新的目录,可
以区别不同的容器日志输出,该目录下有一个日志文件链接到/var/lib/docker/contianers 目录下的容器日志输出。

66. 简述 Kubernetes 如何进行优雅的节点关机维护?

答:由于 Kubernetes 节点运行大量 Pod,因此在进行关机维护之前,建议先使用kubectl drain 将该节点的 Pod 进行驱逐,然后进行关机维护。

67. 简述 Kubernetes 集群联邦?

答:Kubernetes 集群联邦可以将多个 Kubernetes 集群作为一个集群进行管理。因此,可以在一个数据中心/云中创建多个 Kubernetes 集群,并使用集群联邦在一个地方控制/管理所有集群。

68. 简述 Helm 及其优势?

答:
Helm 是 Kubernetes 的软件包管理工具。类似 Ubuntu 中使用的 apt、Centos 中使用的 yum 或者 Python 中的 pip 一样。Helm 能够将一组 K8S 资源打包统一管理, 是查找、共享和使用为 Kubernetes 构建的软件的最佳方式。
Helm 中通常每个包称为一个 Chart,一个 Chart 是一个目录(一般情况下会将目录进行打包压缩,形成 name-version.tgz 格式的单一文件,方便传输和存储)。

Helm 优势

在 Kubernetes 中部署一个可以使用的应用,需要涉及到很多的 Kubernetes 资源的共同协作。使用 helm 则具有如下优势:

  • 统一管理、配置和更新这些分散的 k8s 的应用资源文件;
  • 分发和复用一套应用模板;
  • 将应用的一系列资源当做一个软件包管理。
    对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。
  • 对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。

你可能感兴趣的:(Kubernetes笔记,kubernetes,docker,容器)