2024年底-Sre面试问题总结-持续更新

news2024/12/19 16:28:49

这几个缩写 贴一下是因为真的会有人问:(

SRE “Site Reliability Engineer”
站点可靠性工程师

SLA “Service Level Agreement”
服务可用性协议

CICD “Continuos Integration Continous Deployment”
持续集成 持续部署


3个高频问题

  • K8s生产环境中处理过哪些复杂 or 印象很深的问题?
    答: 举了2个生产案例:
  1. k8s coredns历史调用链路问题, pod -> kube-system(coredns) -> Windows(此时节点出现故障) -> Windows Consul服务失败 | -> localCacheDns -> 优化链路 -> 增加告警

  2. 历史配置规范问题: 内网网关Envoy被打爆1台(共2台)、守护进程自启动后 因历史配置不规范导致, 所有CDS/EDS没有加载起来, 内网一半调用全卡在网关上报后端超时.

有问题就有复盘, 出现问题要快速定位、解决。
恢复后全面复盘: 包括但不限于链路优化、监控、高可用、故障预案、操作规范等等


  • Sre和传统运维的区别?
    答: 个人理解, SLI、SLO 2个重要指标, 50%运维50%开发、消除琐事、 Oncall、故障前、故障后复盘

  • 监控告警中你是怎么定义它的级别的, 为什么它是Warn或Critical?
    答: AlertmanagerRule里的规则大多参考官方, 这块儿内容没有非常细致的区分过, 有些靠个人经验. (其实这个问题 应该反馈出 整个告警与响应流程, 告警规则应该了解的越细越好)



K8s相关

存储

  • 你们之前的k8s都用过哪些存储? 有没有用过分布式存储, 比如 ceph?
    答: 所在场景没用分布式, 常用hostPath、emptyDir、nfs、configmap、secret 以及云盘nas。
  • 如果用到nfs, 那单节点的问题怎么解决?
    答: 生产用的云盘没用nfs, 也做的有异机备份。| 看方案可以这样 client -> keepalived-> nfs (rsync实时同步)

网络

  • k8s svc几种类型?
    答: ClusterIP、NodePort、LoadBalancer、ExternalName
  • svc ipHash了解过吗? 除了ipHash 还有哪些?
    答: 我理解这部分其实是说 Session affinity会话保持(svc .spec.sessionAffinity), 默认为none, 可以配置为ClusterIP 然后设置timeoutSeconds 会话超时时间
  • k8s下不同主机的pod通信是怎么实现的 底层实现原理?
    答: CNI 网络插件, calico、flannel等, 如 Flannel 会在每一个宿主机上运行名为 flanneld 的代理,其负责为宿主机预先分配一个子网,并为 Pod 分配 IP 地址,数据包则通过 VXLAN、UDP 或 host-gw 等后端机制进行转发.
  • svc是怎么找到后端的pod?
    答: svc -> 标签 -> endpoints (pod)
  • 私有化k8s环境下, 如果k8s和外部负载均衡网络通的, 内部服务想暴露到外部 有哪几种实现方式?
    答: nodePort、ingress、istio…

调度

  • k8s原生之上的调度上的处理? 假设要调度1批deployment到指定机器 不干预其他机器应该如何实现?
    答: koordinator-system负载感知 和 节点亲和性调度、污点+容忍实现
  • 有自己写过k8s operator吗?
    答:

迁移 (自建机房会有这个趋势)

  • 如果将自建MySQL迁移上云, 怎样做影响最小?
    答: 云上的MySQL先建好, 数据从自建上拷贝过去, 然后找业务低峰期, 修改一小部分试点项目的配置, 重启切换读取MySQL地址, 跑一段时间, 如果没问题则可以大范围切换
  • 如果将自建K8s集群迁移到阿里云Ack 迁移流程是怎样的?
    答: 1.镜像, 看阿里云上是自建还是直接买服务 自建设计到暴露网络的问题, 2.服务, 采用Velero备份导入到集群的方式
  • 云上K8s集群升级迁移是怎么做的?
    答: *大版本跨度才会出现 升级迁移, 而不是在线升级, 1.测试新集群-高版本下跑服务和组件是否正常 2.新集群准备好所有基础组件 -> 3.再将业务服务备份导入到新集群 -> 4.最后从云负载均衡上迁移流量至新集群 有问题则从入口处切换 *

基础问题

  • 云上维护K8s有多少节点? 大概多少个Pod? 自建的k8s集群什么版本 及方式
    答: 30, 2000Pod, 1.24 3Master/ETCD kubeadm

  • 创建一个Pod的流程?
    答: 详细可以看米开朗基扬, 简而言之: 下图可以看虫师技艺
    CloudNativeX

  • 创建一个Deployment会生成哪些资源?
    答: 容器、Pod、ReplicaSet

  • Deployment 和 Statefulset有什么区别? 有状态就不能扩缩容吗?
    答: 无状态和有状态, 无状态可以随意创建销毁 有状态需要关心各节点的角色和关系, 不能随意替换或重建, 可能影响到数据中断, 影响到服务

  • Deployment几种升级方式?
    答: 滚动升级RollingUpdate 和 重新创建Recreate, 默认滚动

  • ETCD存储哪些东西? 有没有做过增删改查、备份恢复的操作?
    答: k8s元数据、集群状态信息, 比如节点状况, deployment 实际yaml等, 增删改查有接口的, 备份是打snapshot快照

  • k8s如何更新证书?
    答: 生成证书、先更新master、再更新node节点

  • k8s备份怎么做的?
    答: 脚本+异机、Velro

  • k8s中有哪几种健康检查? 为什么要设置3种健康检查方式?
    StartupProbe 启动探针, 3者中优先进行检查 , 确保有足够的启动时间
    ReadinessProbe 就绪探针, 确保是否准备好接收流量, 如果有问题则摘除对应endpoints流量
    LivenessProbe 存活探针, 如果有问题则重启

  • configmap和secret的区别?
    答: 前者存配置信息 后者存密钥且base64加密

  • hpa 应该如何查看? 具体要怎么设置?
    答: kubectl get hpa即可, 具体设置cpu或内存的request值为基数、设置扩容阈值、扩缩容副本数

  • docker中 arm64的镜像是否可以放在amd64机器上运行?
    答: 一般不可以, 除非用工具转换 也不建议转换

  • Helm部署流程? Helm chart的作用? 是否可以将同一个chart部署在不同的pod中? 和configmap的区别? 如何更新配置呢?
    答: 先repo add仓库update更新, 再install , 如果想自己修改配置, 可以pull 版本, 在install ./目录。
    chart 是资源的集合(deploy、svc、rbac…)。
    helm install 指定不同的release即可。
    helm upgrade更新原有配置。

  • Dockerfile 是运维制作的吗? 一个java的Dockerfile应该会涵盖哪些内容? 如果想要批量更新应该怎么做? Dockerfile和K8s如何结合使用?
    答:

  • Deployment、Service这种yaml是开发维护的吗? 还是运维发布维护的?
    答:


实战问题

Pod遇到过哪些起不来的报错? 你会怎样排查?
答:
K8s中如何保留故障现场? 比如4个pod都挂掉了, 我如何将这个现场保留 反馈给研发分析呢?
答:
K8s中如何将不健康节点的流量摘除? pod什么状态下流量会被摘除?
答:
有没有遇到过 创建1个Pod 然后 出现报错, 然后创建了很多的异常pod的情况? 要怎么解决?
答:


todo…

监控、日志、链路追踪相关

监控

  • 如果你有一个干净的K8s ACK 环境, 需要增加 监控和日志 你会怎么做?
  • Prometheus监控体系是怎样的? 用了什么组件? 数据存储多久? 如果想外接存储 365天应该如何实现?
  • Prometheus监控k8s是什么组件?
  • Prometheus监控交换机路由器?

CICD相关

  • 现在Jenkins的流程是怎么样的? 除了Jenkins还用过什么CICD? 或者了解过的?
  • 现有CICD优化具体做了哪些?

Linux基础及中间件相关

  • TCP3次握手
  • TCP之上https建立流程
  • TLS双向认证是什么?
  • https 1年有效期怎么更好的解决?
  • 如果给你一台干净的Linux机器 上边跑java进程, 你会对机器做什么初始化?
  • LVS的几种模式
  • linux 下有个文件, 有10几层目录, 如何快速找到呢?
  • linux 系统内核问题 夯住了, 能ping通, 应该如何提前监控哪些?
  • Calico BGP 了解吗?
  • 网卡bond是mod几? 网卡bond中1个网卡坏掉应该如何切换?
  • MySQL选型是什么? 备份怎么做的?
  • 什么样的文档算是一个好的文档 应该包含哪些内容?

  • Redis相关

    • Redis Clusters为什么需要15台? 多大的数据量?
    • Redis中key是怎么释放? 是直接释放吗?
      • 答: 1.惰性删除(当客户端尝试访问一个Key时,Redis首先会检查该Key是否过期。如果Key已过期,Redis会在访问时立即将其删除,以确保过期数据不再被访问和占用内存)
      • 2.定期删除(根据配置时间 来定期清理)
    • Redis当我set一个key是这个内存是如何分配的?
      • 答: 1.预分配 (会有预留空间, 当实际需要的空间大于预分配的空间时,Redis会自动扩展内存以适应新的需求)
      • 2.惰性释放 (当字符串的长度超过了预分配的空间,Redis会自动释放多余的内存)
  • ES相关

    • ES的索引声明周期管理流程?
    • 答: ILM管理, hot频繁读写、warm只读、cold不在查询、delete删除
    • ES单节点, 如果上限是1000索引, 但是只跑了500 就提示满了是为啥 应该排查哪些?
      • 答: 内存限制、磁盘、文件句柄、参数配置了上限
    • ES有没有被打爆的情况? 原因是什么?


慢慢完善中…欢迎大家指正、交流、探讨:)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2262259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【硬件接口】I2C总线接口

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、概述 I2C总线是一种非常常用的总线,其多用于一个主机(或多个)与单个或多个从设备通讯…

OkHttp源码分析:分发器任务调配,拦截器责任链设计,连接池socket复用

目录 一,分发器和拦截器 二,分发器处理异步请求 1.分发器处理入口 2.分发器工作流程 3.分发器中的线程池设计 三,分发器处理同步请求 四,拦截器处理请求 1.责任链设计模式 2.拦截器工作原理 3.OkHttp五大拦截器 一&#…

SAP:如何修改已释放的请求

SAP:如何修改已释放的请求 QQ出了一个新功能,把10年前的旧日志推给自己。这个10年前的日志,是用户反映在SE10中把请求释放后发现漏了内容,想修改已释放的请求。经调查写了一个小程序,实现用户的需求。 *&-------------------…

python怎么循环嵌套

嵌套循环: 概念:循环中再定义循环,称为嵌套循环; 【注意】嵌套循环可能有多层,但是一般我们实际开发最多两层就可以搞定了(99%的情况) 格式: 1、while中套while常用 2、while中套for in 3、for in中套…

前端优雅(装逼)写法(updating····)

1.>>右位移运算符取整数 它将一个数字的二进制位向右移动指定的位数,并在左侧填充符号位(即负数用1填充,正数用0填充)。 比如 2.99934 >> 0:取整结果是2,此处取整并非四舍五入 2.99934 会先…

MySQL -- 库的相关操作

目录 查看数据库 创建数据库 直接创建: 加约束条件 if not exists 字符集和校对规则 什么是字符集 什么是校对规则 校对规则的主要功能 校对规则的特性 查看指定的数据库使用的字符集和校对规则: 比较是否区分大小写字母差异 显示创建语句 …

Moretl开箱即用日志采集

永久免费: 至Gitee下载 使用教程: Moretl使用说明 使用咨询: 用途 定时全量或增量采集工控机,电脑文件或日志. 优势 开箱即用: 解压直接运行.不需额外下载.管理设备: 后台统一管理客户端.无人值守: 客户端自启动,自更新.稳定安全: 架构简单,兼容性好,通过授权控制访问. 架…

分享一次接口性能摸底测试过程

接口性能测试是用于验证应用程序中的接口是否可以满足系统的性能要求的一种测试方法。确定应用程序在各种负载条件下的性能指标,例如响应时间、吞吐量、并发性能等,以便提高系统的性能和可靠性。本文主要讲述接口性能测试从前期准备、方案设计到环境搭建…

【机器学习】机器学习的基本分类-无监督学习-t-SNE(t-分布随机邻域嵌入)

t-SNE(t-分布随机邻域嵌入) t-SNE(t-distributed Stochastic Neighbor Embedding)是一种用于降维的非线性技术,常用于高维数据的可视化。它特别适合展示高维数据在二维或三维空间中的分布结构,同时能够很好…

【教学类-83-03】20241218立体书盘旋蛇3.0——圆点蛇1(蚊香形)

背景需求: 制作儿童简易立体书贺卡 【教学类-83-01】20241215立体书三角嘴1.0——小鸡(正菱形嘴)-CSDN博客文章浏览阅读1k次,点赞24次,收藏18次。【教学类-83-01】20241215立体书三角嘴1.0——小鸡(正菱形…

监控视频汇聚融合云平台一站式解决视频资源管理痛点

随着5G技术的广泛应用,各领域都在通信技术加持下通过海量终端设备收集了大量视频、图像等物联网数据,并通过人工智能、大数据、视频监控等技术方式来让我们的世界更安全、更高效。然而,随着数字化建设和生产经营管理活动的长期开展&#xff0…

JAVA 零拷贝技术和主流中间件零拷贝技术应用

目录 介绍Java代码里面有哪些零拷贝技术java 中文件读写方式主要分为什么是FileChannelmmap实现sendfile实现 文件IO实战需求代码编写实战IOTest.java 文件上传阿里云,测试运行代码看耗时为啥带buffer的IO比普通IO性能高?BufferedInputStream为啥性能高点…

云灾备技术

目录 云灾备分类与定义 云容灾定义与主要应用场景 云容灾定义 应用场景 云备份定义与主要应用场景 云备份定义 应用场景 云容灾参考模型与关键技术 云备份参考模型与关键技术 云灾备分类与定义 云容灾技术是指保护云数据中心业务持续性的灾备技术,它是云灾…

进程通信方式---共享映射区(无血缘关系用的)

5.共享映射区(无血缘关系用的) 文章目录 5.共享映射区(无血缘关系用的)1.概述2.mmap&&munmap函数3.mmap注意事项4.mmap实现进程通信父子进程练习 无血缘关系 5.mmap匿名映射区 1.概述 原理:共享映射区是将文件…

leetcode 面试经典 150 题:长度最小的子数组

链接长度最小的子数组题序号209题型数组解题方法滑动窗口难度中等 题目 给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件…

代码随想录day22 | 回溯算法理论基础 leetcode 77.组合 77.组合 加剪枝操作 216.组合总和III 17.电话号码的字母组合

DAY22 回溯算法开始 学到目前最烧脑的一天 回溯算法理论基础 任何回溯算法都可以抽象成一个树结构 理论基础 什么是回溯法 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 在二叉树系列中,我们已经不止一次,提到了回溯 回溯是递归的副…

画一颗随机数

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>codePen - Random Tree</title> </head> <body><canvas></canvas><script>const canvas doc…

牛客周赛 Round 72 题解

本次牛客最后一个线段树之前我也没碰到过&#xff0c;等后续复习到线段树再把那个题当例题发出来 小红的01串&#xff08;一&#xff09; 思路&#xff1a;正常模拟&#xff0c;从前往后遍历一遍去统计即可 #include<bits/stdc.h> using namespace std; #define int lo…

[x86 ubuntu22.04]投影模式选择“只使用外部”,外部edp屏幕无背光

1 问题描述 CPU&#xff1a;G6900E OS&#xff1a;ubuntu22.04 Kernel&#xff1a;6.8.0-49-generic 系统下有两个一样的 edp 屏幕&#xff0c;投影模式选择“只使用外部”&#xff0c;内部 edp 屏幕灭&#xff0c;外部 edp 屏幕无背光。DP-1 是外部 edp 屏幕&#xff0c;eDP-1…