Kubernetes学习总结(5)——Kubernetes 常见面试题汇总
发布日期:2025-04-03 07:04:31 浏览次数:8 分类:精选文章

本文共 4903 字,大约阅读时间需要 16 分钟。

etcd简述及其特点

etcd 是 CoreOS 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,旨在构建高可用性的分布式键值(key-value)数据库,基于 Go 语言实现。

其主要特点包括:

  • 简单:支持 REST 风格的 HTTP+JSON API,便于快速开发。
  • 安全:支持 HTTPS 访问,确保数据传输安全。
  • 快速:支持每秒 1k 次的并发写操作,满足高性能需求。
  • 可靠:采用 Raft 一致性算法,保证分布式系统内数据一致性。
  • etcd 适应的场景

    etcd 可以广泛应用于以下场景:

  • 服务发现:解决分布式集群中进程或服务之间的互联问题。
  • 消息发布与订阅:构建配置共享中心,实现动态更新。
  • 负载均衡:通过分布式架构实现对等服务。
  • 分布式通知与协调:利用 Watcher 机制实现实时通知。
  • 分布式锁:基于 Raft 算法实现高安全性锁服务。
  • 集群监控与 Leader 选举:轻松实现集群的实时监控。
  • Kubernetes 简述

    Kubernetes 是 Google 开源的容器集群管理系统(被称为 Borg),基于容器技术,为应用提供部署、运行、资源调度、负载均衡等功能,实现大规模容器集群的便捷管理。

    Kubernetes 与 Docker 的关系

    Docker 提供容器的生命周期管理和镜像构建,Kubernetes 则用于关联和编排多台主机运行的容器,二者配合使用,实现容器化应用的生命周期管理。

    Minikube、Kubectl、Kubelet 分别是什么

    • Minikube:在本地运行单节点 Kubernetes 集群,适合开发和测试。
    • Kubectl:命令行工具,用于控制集群管理,如创建、删除、更新组件、查看应用程序。
    • Kubelet:运行在每个节点上的代理服务,与 Master 统一集群状态。

    Kubernetes 常见部署方式

    常见部署方式包括:

  • Kubeadm:推荐部署方式,兼容性强。
  • 二进制部署:自行编译安装。
  • Minikube:本地运行单节点集群。
  • Kubernetes 集群管理机制

    Kubernetes 将集群划分为 Master 节点和工作节点 Node。Master 节点运行 API Server、Controller Manager、Scheduler 等功能模块,负责资源管理、调度、弹性伸缩等。Node 节点运行 kubelet 等组件,执行 pod 的运行和扩容任务。

    Kubernetes 优势、适用场景及特点

    Kubernetes 的主要优势包括:

    • 容器编排
    • 轻量级
    • 开源
    • 弹性伸缩
    • 负载均衡

    常见应用场景包括:

    • 快速部署应用
    • 快速扩展应用
    • 节省资源优化硬件利用

    相关特点包括:

    • 可移植:支持公有云、私有云、混合云等。
    • 可扩展:模块化设计
    • 自动化:自动部署、自动伸缩

    Kubernetes 当前不足之处

    尽管 Kubernetes 功能强大,但存在以下不足:

  • 安装配置复杂
  • 管理服务较为繁琐
  • 运行时间较长
  • 成本较高
  • 对简单应用过于复杂
  • Kubernetes 核心概念

  • Master:管理节点,提供集群入口,运行 API Server 等功能组件。
  • Node(Worker):运行 pod,执行 Docker 作业。
  • Pod:容器的组合,共享网络命名空间和 IP地址。
  • Label:用于标注资源,实现筛选和选择。
  • Replication Controller:维护 Pod 副本数量,实现弹性伸缩。
  • Deployment:扩展 RC 遇池,提供动态更新功能。
  • HPA:通过 Metrics Server 实现自动扩容。
  • Service:定义 pod 集合,提供统一入口。
  • Namespace:实现资源隔离,支持多租户管理。
  • Volume:共享目录,支持容器间数据持久化。
  • Kubernetes 模块与 API通信

    所有功能模块通过 Kubernetes API Server 与 etcd 交互,保持数据一致性。各模块间的通信依赖于 HTTP 实现。

    Kubernetes Scheduler 功能及实现

    Scheduler 负责 Pod 调度,将新建的 Pod 分配至最佳节点,采用预选和优选策略,实现高效调度。

    Kubernetes Replication Controller 与 Replica Set 区别

    两者均用于确保 Pod 副本数量,但 Replica Set 使用集合选择器, Replication Controller 使用权限选择器,主要区别在于选择策略。

    kube-proxy 作用

    kube-proxy 在每个节点上运行,管理 Service 流量转发,通过 iptables 和 IPVS 实现负载均衡。

    kube-proxy 工作模式

    从 Kubernetes 1.2 版开始,kube-proxy 采用 iptables 模式,通过转发实现服务发现。在 IPVS 模式下,采用高效的 ipset 数据结构。

    两种模式对比:

    • iptables模式:“直接路由”机制,性能依赖iptables规则数量。
    • IPVS模式:支持复杂负载均衡算法,动态修改规则。

    Kubernetes 中的静态 Pod

    静态 Pod 由 kubelet 管理,仅在特定节点运行,不能通过 API Server 管理,适用于 Node 节点需求的定制案例。

    Kubernetes Pod状态

    Pod 可能处于以下状态之一:

  • Pending:镜像下载中
  • Running:容器运行中
  • Succeeded:容器成功终止
  • Failed:容器失败退出
  • Unknown:状态不确定
  • Kubernetes 创建 Pod 的流程

  • 提交 Pod YAML 定义至 API Server。
  • API Server 告知 Controller Manager 创建资源。
  • Controller Manager 存储到 etcd。
  • Scheduler 调度 Pod 至合适节点。
  • Node 统一资源配置,启动 Pod。
  • Scheduler 更新 Pod 状态。
  • Kubernetes Pod 重启策略

  • Always:容器失效时重启。
  • OnFailure:容器退出码不为 0 时重启。
  • Never:不重启任何容器,默认策略。
  • Kubernetes 验证 Tool 常见问题

    • Windshear:验证配置文件的完整性。
    • Chroma:单元测试框架。
    • Golang 测试框架:用于测试 Kubernetes 组件。

    Kubernetes 工作流程

  • 提交应用 inFile。
  • API Server 接收并存储配置。
  • Controller Manager 执行控制逻辑。
  • Scheduler 调度 Pod。
  • Kubelet 在节点启动容器。
  • Kubernetes Cluster Join 过程

  • 安装 Docker、kubelet 和 kube-proxy 等组件。
  • 配置服务参数,启动组件。
  • Kubepython Workers 自动注册至集群。
  • Kubernetes Pod 资源控制

    1.Pod 对 CPU、Memory 的请求与 Node 的容量匹配。2.Request 与 Limits 影响调度策略。3.Node 资源利用率需在Requests 总和内。

    Kubernetes 可扩展性实现

  • HPA:通过 Metrics Server 实现水平扩容。
  • RollingUpdate:通过 Deployment 定义滚动策略。
  • 自定义资源扩展:如 CRD 定义新资源,扩展功能。
  • Kubernetes progressed 部署策略

  • Recreate: 杀死现有 Pod,重建所有。
  • RollingUpdate: 滚动更新,最大不可用 emojis 使用和最大增加。
  • Kubernetes DaemonSet 的特性

  • 每个 Node 只运行一个 Pod。
  • 不支持 Replicas 定义。
  • 适用于日志收集、监控等任务。
  • Kubernetes 自动扩容实现机制

  • 使用 HPA 控制器定期监测资源使用情况。
  • 根据指标计算目标副本数量。
  • 执行扩容或缩减操作。
  • Kubernetes Service 类型

  • ClusterIP:虚拟服务 IP。
  • NodePort:宿主机端口映射。
  • LoadBalancer:使用外部负载均衡器。
  • Headless Service:无 ClusterIP,通过 Label Selector。
  • Kubernetes Service 资源分发策略

  • RoundRobin:轮询分发。
  • SessionAffinity:基于客户端 IP 进行会话保持。
  • Kubernetes Ingress 负载均衡

  • 通过 Ingress Controller 实现边缘路由功能。
  • 采用 Ingress 策略直接转发到服务端点。
  • Kubernetes 镜像下载策略

  • Always:发布镜像总是下载 latest。
  • Never:禁止从仓库下载镜像。
  • IfNotPresent:仅在镜像不存在时下载,默认策略。
  • Kubernetes 节点网络模型

  • 每个 Pod 有独立 IP,共享网络命名空间。
  • Pod 与宿主机网络高度一致。
  • Kubernetes CNI 模型

  • 容器网络与主机网络隔离。
  • 支持插件化网络配置。3.÷Flannel等第三方方案。
  • Kubernetes 网络策略实现

  • NetworkPolicy 提供细粒度控制。
  • Policy Controller 执行策略。
  • CNI 插件处理网络规则。
  • Kubernetes Flannel 与 Calico

  • Flannel:Overlay Network实现,数据包转发。
  • Calico:基于 BGP,需要网络提供商支持。
  • Kubernetes 共享存储

  • 提供持久化存储解决方案。
  • 支持 EmptyDir、HostPath、PersistentVolume 等方式。
  • Kubernetes 数据持久化方式

  • EmptyDir:临时存储。
  • HostPath:宿主机挂载。
  • PersistentVolume:统一存储解决方案。
  • Kubernetes PV 与 PVC 生命 cycle

  • Available: 虽然未绑定,未使用。
  • Bound: 与 PVC 绑定运行。
  • Released: 绑定误删除。
  • Failed: 非主动回收失败。
  • Kubernetes 存储供应模式

  • 静态模式:管理员手动创建。
  • 动态模式:管理员定义存储类,系统自动生成。
  • Kubernetes CSI 模型

  • CSI Controller 管理存储涉及。
  • CSI Node 处理节点侧存储操作。
  • Kubernetes Worker 节点注册

  • 安装 Docker等组件。
  • 启动kubelet 和 kube-proxy。
  • 自动注册至集群。
  • Kubernetes Pod 资源控制

  • 提供CPU、Memory请求与限制。
  • 调度按资源需求选择节点。3.资源利用与计算资源有关。
  • Kubernetes 指标服务

  • 集成 Metrics Server 提供指标。
  • Prometheus 等工具进行定制化监控。
  • Kubernetes EFK 日志管理

  • Elasticsearch:存储日志。
  • Fluentd:收集日志,发送至 Elasticsearch。
  • Kibana:提供日志查询界面。
  • Kubernetes 集群联邦

  • 将多个集群管理为一个整体。
  • 使用 Federation API 实现跨集群操作。
  • Helm 优势

  • 软件包管理工具,支持版本管理。
  • 可与Kubernetes资源一起部署和管理。
  • 提供依赖管理功能,便于维护。
  • 结论

    通过上述内容可以看出,Kubernetes 是一款功能强大的容器集群管理平台,适用于从单一应用到大规模分布式系统的多种场景。虽然存在一些不足,但其开源特性和社区支持使其在技术领域占据重要地位。

    上一篇:Kubernetes学习总结(6)——Kubernetes 7周年:它为什么如此受欢迎?
    下一篇:Kubernetes学习总结(4)——Kubernetes v1.20 重磅发布 | 新版本核心主题 & 主要变化解读

    发表评论

    最新留言

    不错!
    [***.144.177.141]2025年05月06日 10时14分52秒