Interview
interview
AppDefinition and Development
Application Definition & Image Build
什么是 Helm?为什么在 Kubernetes 中使用?
Helm 是 Kubernetes 中的包管理器,允许定义、安装和升级复杂的 Kubernetes 程序。
核心概念:
- Chart:Helm 软件包,包含一个应用在 Kubernetes 上运行所需的所有资源定义的文件集合。
- Release:在 Kubernetes 中运行的一个 Chart 实例。安装或更新 Chart 时,会生成一个新的 release。
- Repository:HTTP 服务器,用于存放和共享 Charts。
为什么使用:
- 简化部署:将复杂的 Kubernetes YAML 文件打包成统一的一个 Chart,实现一键部署。
- 管理复杂度:对于由多个 Deployment、Service、ConfigMap 等资源组成的应用,Helm 提供了生命周期的能力。
- 参数化配置:通过 values.yaml 文件,可以将配置与 Chart 模板分离,使得一套 Chart 可以在不同环境(开发、测试、生产)中复用。
- 易于共享和开发:Chart 可以打包并上传到仓库(如 Harbor、GitLab),方便团队内部或社区共享。Helm 都有哪些内置对象?helm upgrade 和 helm rollback 是如何工作的?
内置对象:
- {{ .Values }}:访问传入 Chart 的 values.yaml 文件中的值。如:{{ .Values.image.tag }}。
- {{ .Release }}:访问当前 Release 的信息。如:{{ .Release.Name }}。
- {{ .Chart }}:访问 Chart.yaml 文件中的元数据。如:{{ .Chart.Name }}。
- {{ .Capabilities }}:访问关于 Kubernetes 集群的信息。如:{{ .Capabilities.KubeVersion }}。
helm upgrade:
- Helm 获取最新的 Chart 和 Values。
- 使用上面的输入渲染生成新的 Kubernetes 资源清单。
- 将新生成的清单与当前集群中实际运行的资源状态进行对比(三路战略合并补丁)。
- 仅发送必要的更改到 Kubernetes API Server 以将应用更新到期望状态。
- 每次成功的升级都会创建一个新的 Revision(版本号递增)。
helm rollback:
- 从历史版本(Revision)中查找指定版本的 Chart 和 Values。
- 使用这些旧的配置渲染模板。
- 将重新渲染的模板与当前状态对比,计算出如何将应用恢复到旧版本状态。
- 执行更改,并将这次回滚操作也记录为一个新的 Revison。编写一个生产可用的 Helm Chart 最佳实践
CICD
什么是 ArgoCD?什么是 GitOps,以及 ArgoCD 如何实现 GitOps?
ArgoCD 的 Application、Project、ApplicationSet 分别什么?如何回滚 ArgoCD 管理的应用
如何基于 ArgoCD 实现一个部署工作流程?
ArgoCD 最佳实践
什么是 Jenkins?主要功能是什么?什么是 Jenkins 的 Master/Agent 架构?
什么是 Jenkinsfile?好处是什么?
Database & Streaming & Messaging
MySQL 的数据类型与存储引擎。
什么是 MySQL 中的索引?都有哪些索引类型?
MySQL 的常用的架构有哪些?
什么是 Redis?主要特点和数据类型是什么?
Redis 持久化规则是什么?
Redis 的主从复制原理是什么?有哪些高可用的方案?
什么是 Redis 的缓存穿透、缓存击穿以及缓存雪崩?如何解决?
Redis 最佳实践
什么是 Kafka?核心架构与应用场景是什么?
为什么 Kafka 能做到高吞吐、低延迟?
Kafka 的消息投递语义都有哪些?什么是 Kafka 副本机制与 ISR?Kafka 如何保证消息不丢失?
Kafka 最佳实践
什么是 RocketMQ?核心架构与特点是什么?存储模型是什么?
RocketMQ 支持哪些消息类型?什么是 RocketMQ 的事务消息机制?RocketMQ 如何保证消息不丢失?
RocketMQ 最佳实践
Observability
什么是可观测性以及三大支柱?与传统的监控区别是什么?
可观测性领域都有哪些方法论?
监控分层方法论与告警设计方法论
SLI、SLO、SLA 概念
SLI(Service Level Indicator,服务等级指标)
SLO(Service Level Objective,服务等级目标)
SLA(Service Level Agreement,服务等级协议)
什么是 Google 黄金指标(适用定义 SLO)、RED 方法(适用微服务)、 USE 方法?
Monitoring
如何使用 Alertmanager 触发告警,配置告警规则与通知规则?
什么是 Prometheus ? 工作原理是什么?
Prometheus 核心组件工作原理
数据模型
rate() 与 irate() 函数区别
什么是 Prometheus 联邦集群?如何实现高可用?
Prometheus 的缺点是什么?如何与 Thanos 或 VictoriaMetrics 扩展支持?
什么是 Zabbix ?常用的监控项是什么?
什么是 Grafana ?常用的 Dashboard 都有哪些?
如何在 Grafana 中配置告警功能?与 Prometheus Alertmanager 有何区别?
Logging
什么是 Fluentd / Fluentd Bit ?
Fluentd / Fluentd Bit 的缓冲机制什么?有哪些类型? 配置结构是什么?
什么是 Elasticsearch?Elasticsearch 的索引、分片、副本概念是什么?如何管理索引的生命周期?
如何部署 Elasticsearch 集群模式,规划节点与角色?如何合理的设置分片和副本?
什么是 ELK / EFK ?
什么是 Loki,与传统的 ELK / EFK Stack 的区别是什么?
Loki 的架构组件有哪些?做过哪些优化?
如何做针对日志内容错误的告警?
Tracing
什么是分布式追踪?如何使用 Jaeger / Zipkin / OpenTelemetry 实现?
描述一个通过可观测性组件排查相关故障的案例。
Orchestration Management
ServiceMesh & ServiceProxy
Istio 的核心架构是什么?控制平台和数据平面是什么?Sidecar 自动注入是如何实现的?
什么是 Istio Gateway?VirtualService 和 DestinationRule 的区别是什么?如何实现灰度发布/金丝雀发布?
Istio 最佳实践
什么是 Istio mTLS 以及如何实现?mTLS 有几种模式和作用?PeerAuthentication 和 AuthorizationPolicy 的作用是什么?
什么是 HAProxy?核心配置和概念是什么?
HAProxy 支持哪些常见的负载均衡算法?如何实现会话保持?健康检查机制是怎么样的?
HAProxy 最佳实践
Nginx 的优势是什么?Master-Worker 工作模式是什么?如何热部署?
Nginx 的主要结构块和继承关系是什么?location 的匹配规则和优先级是什么?root 和 alias 指令的区别?location 有哪些常用的参数配置?
Nginx 反向代理如何实现?支持哪些负载均衡策略?动静分离策略?
如何限制 Nginx 的并发连接数和请求速率?
Nginx 最佳实践
Provisioning
Automation & Configuration
Ansible 和 Saltstack 的架构和工作原理有什么不同?
在什么场景下选择 Ansible 或 Saltstack?
Ansible Playbook 中的 roles 和 include_tasks / import_tasks 有什么区别?
Saltstack 的 Grains 和 Pillar 有什么区别?
Terraform
Network & System
如何使用 tcpdump & Wireshark 抓包分析网络问题?
前置分析
典型案例
什么是递归查询与迭代查询?
描述一次访问域名的过程。
什么是 LVS?核心组件和工作模式是什么?常用的调度算法是什么?
Container
Docker & Containerd
什么是 Docker ?核心组件和 docker-shim 工作机制是什么?
Docker 容器隔离实现原理是什么?
Docker 的网络模型都有哪些?
什么是 Containerd?核心组件和 containerd-shim 工作机制是什么?
什么是 CRI-O?核心组件和工作机制是什么?
Docker 与 Podman 的区别是什么?
Kubernetes
Kubernetes 的概念和核心功能是什么?核心组件和架构是什么?
简述 Pod 概念和生命周期?描述 Pod 的完整创建过程。
Kubernetes 中都有哪些核心资源对象?
Application:ReplicaSet、Deployment、StatefulSet、DaemonSet
Network:Service、Endpoint、Ingress、Gateway API
Persistent:PersistenVolume、PersistentVolumeClaim、StorageClass
Kubernetes 中都有哪些应用的探针?
Kubernetes 中的 RBAC 概念与用法?
Kubernetes 中的调度策略是什么?
Kubernetes 中都有哪些网络插件?
Kubernetes 中都有哪些存储插件?
Kubernetes 中 resources 的 requests/limits 的核心概念?都有什么资源与调度相关的配置?Kubernetes 中 Pod 的 QoS 类有哪些?
什么是 Kubernetes CRD Operator?如何实现自定义的 Operator?
Rancher 的核心组件是什么?Rancher 导入集群的方式有什么?导入集群的流程原理是什么?
Kubernetes 最佳实践
Last updated