kubernetes面试题目(基础篇一)

基础篇主要面向的初级、中级开发工程师职位,主要考察对k8s本身的理解。

  • kubernetes包含几个组件。各个组件的功能是什么。组件之间是如何交互的。

该题主要考察的是对k8s组件的理解:

这个问题从两个角度回答,一是从官方介绍中,二是从部署中。 官方文档参照

Master作为控制节点,调度管理整个系统,包含以下组件:

  1. Api Server:为集群的核心组件,主要负责集群各功能模块之间的通信,集群内的功能模块通过Api server将信息存入到分布式文件系统etcd中与其他节点进行信息交互。

  2. Scheduler:负责集群的资源调度,跟踪集群中所有Node的资源利用情况,对新创建的pod,采取合适的调度策略,进行均衡的调度到合适的节点上。

  3. Controller Manager:主要负责集群的故障检测和恢复的自动化,它内部的组件如下:

  4. endpointController:定期关联service和pod,关联信息由endpoint负责创建和更新。

  5. ReplicationController:完成pod的复制或移除,以确保ReplicationController定义的复本数量与实际运行pod的数量一致性

  6. cloud-controller-manager 是提供给第三方开发k8s特性的。

其中controller又包含:

  • Node Controller 报告节点健康状态。

  • Replication Controller 维护rc的pod个数,pod挂掉又控制重启。

  • Endpoints Controller 填充Endpoint对象,主要是给Service和Pod。

  • Service Account & Token Controllers 创建帐号和Token。

Node:是集群中的工作主机,Node可以是物理主机,也可以是虚拟机,包含以下组件:

  1. kubelet:运行在每个Node节点上,kubelet会通过api service 注册节点自身信息,用于master发现节点,它会定期从etcd获取分配到本机的pod,并根据pod信息启动或停止相应的容器,并定期向master节点汇报节点资源的使用情况,内部集成cadvise来监控容器和节点资源。

  2. Kube Proxy:负责为pod提供代理。它会定期从etcd获取所有的service,并根据service信息创建代理。当某个客户pod要访问其他pod时,访问请求会经过本机proxy做转发

  3. container runtime 容器运行环境,如Docker等。

应用: 应用都是部署在kube-system这个命名空间下的。如:

  • DNS dns服务。

  • Dashboard web管理界面。

  • Container Resource Monitoring 容器资源管理和监控,如cAdvisor、Prometheus。

  • Cluster-level Logging 日志收集分节点、集群、应用三种类型,可用elk或fluentd等。

部署 可参考 https://github.com/xishengcai/k8s-learn https://github.com/gjmzj/kubeasz

Chi-Chi Simon

IT软件和k8s工程师,开源爱好者。

Chi-Chi Simon