Kubernetes 10 问,测测你对 k8s 的理解程度

Kubernetes 10 问

  1. 假设集群有 2 个 node 节点,其中一个有 pod,另一个则没有,那么新的 pod 会被调度到哪个节点上?

  2. 应用程序通过容器的形式运行,如果 OOM(Out-of-Memory)了,是容器重启还是所在的 Pod 被重建?

  3. 应用程序配置如环境变量或者 ConfigMap 可以不重建 Pod 实现动态更新吗?

  4. pod 被创建后是稳定的吗,即使用户不进行任何操作?

  5. 使用 ClusterIP 类型的 Service 能保证 TCP 流量的负载均衡吗?

  6. 应用日志要怎么采集,会不会有丢失的情况?

  7. 某个 HTTP Server Pod 的 livenessProbe 正常是否就一定没问题?

  8. 应用程序如何扩展以应对流量波动的情况?

  9. 当你执行 kubectl exec -it <pod> -- bash 之后是登录到了 pod 里吗?

  10. 如果 Pod 里的容器反复退出并重启,如何排查?

以上问题你是否能够快速回答,并注意到关键点。

解答

1. 假设集群有 2 个 node 节点,其中一个有 pod,另一个则没有,那么新的 pod 会被调度到哪个节点上?

调度过程需要经过一系列处理阶段:

各个阶段的配置、以及 Pod 的配置(强制调度、亲和性、污点容忍等等)可能都会影响调度的结果。

然而,在不考虑各种配置、节点资源也相同的情况下,默认插件 NodeResourcesFit 的评分策略会起到比较关键的作用,NodeResourcesFit 有三种评分策略:LeastAllocated(默认,优先选择资源使用率最低的节点)、MostAllocated(优先选择资源使用率较高的节点)和 RequestedToCapacityRatio(平衡节点的资源使用率)。这也就是说,在使用 MostAllocated 策略的时候,新的 pod 会被调度到已经有 pod 的节点上,而使用另外两种策略时,则调度到没有 pod 的节点。

2. 应用程序通过容器的形式运行,如果 OOM(Out-of-Memory)了,是容器重启还是所在的 Pod 被重建?

当容器 OOM 了,一般情况下根据 Pod 的 RestartPolicy 配置(默认是 Always),容器会被重启,Pod 不会被重建。但在特殊情况下,节点内存压力很大时,可能会触发 Pod 驱逐,从而导致 Pod 被重建。

3. 应用程序配置如环境变量或者 ConfigMap 可以不重建 Pod 实现动态更新吗?

环境变量无法动态更新,ConfigMap 通过挂载的方式可以动态更新,但要求挂载时不能使用 subPath,挂载的同步延时受 kubelet 的配置 syncFrequency(默认 1 分钟)和 configMapAndSecretChangeDetectionStrategy 影响。

4. Pod 被创建后是稳定的吗,即使用户不进行任何操作?

即使用户不操作,也可能发生节点资源不足或者网络异常导致 Pod 被驱逐。

5. 使用 ClusterIP 类型的 Service 能保证 TCP 流量的负载均衡吗?

ClusterIP 类型的 Service 不论使用的是 iptables 还是 ipvs,其都依赖于 Linux 内核的 Netfilter,而其内部的 connection tracking 机制会跟踪和记录每个连接的状态,进而让已经建立了 TCP 连接的双方一直使用这条连接。所以,针对长连接,是有可能出现负载不均衡的情况。

6. 应用日志要怎么采集,会不会有丢失的情况?

应用日志一般输出为 stdout/stderr,或者写入日志文件。针对前者,容器日志会被保存到节点上的特定位置,此时可以使用日志代理(如 FluentdFilebeat)并部署为 Daemonset 的方式进行采集,但是存在日志丢失的可能,因为一旦 pod 被删除,对应的容器日志文件也会被删除,而日志代理可能还未完成全部日志的采集。通过挂载持久化存储并写入日志文件的方式则可以避免丢失。

7. 某个 HTTP Server Pod 的 livenessProbe 正常是否就一定没问题?

站在应用的角度看,livenessProbe 只检查应用是否存活,无法验证其功能是否正常,例如应用可能进入了非健康但仍存活的状态。
站在网络的角度看,livenessProbe(假设配置的是 httpGet)是由本机的 kubelet 发起的请求,无法保证跨节点的网络是正常的。

8. 应用程序如何扩展以应对流量波动的情况?

Kubernetes 提供了水平扩展(HPA)和垂直扩展(VPA)两种机制,由于 VPA 不是原地资源扩展,会删除 Pod 再创建,使用场景往往受限,所以使用更多是 HPA,可以根据指标(如 CPU 使用率、请求速率、其它自定义指标)动态调整 Pod 数量。
当然,也可以在外部监测指标然后向 kube-apiserver 发起请求扩展 Pod 的数量。

9. 当你执行 kubectl exec -it <pod> -- bash 之后是登录到了 pod 里吗?

首先,使用 kubectl exec 需要指定容器,当 Pod 只有一个容器时则可以忽略。其次,Pod 是一组独立的 Linux 命名空间,容器本质上是一个进程,Pod 内容器共享 Network、IPC、UTS namespace,而每个容器的 PID、Mount namespace 则是独立的。"登录"的说法并不准确,kubectl exec -it <pod> -- bash 既不是进入了 Pod,也不是进入了容器,而是在目标容器的隔离环境中创建了一个新的 bash 进程。

10. 如果 Pod 里的容器反复退出并重启,如何排查?

如果 Pod 里的容器反复退出并重启,是无法使用 kubectl exec 的。此时,除了检查节点或容器状态和日志之外,还可以使用 kubectl debug 的方式在 Pod 上启动一个临时容器,用于检查环境和依赖。


(我是凌虚,关注我,无广告,专注技术,不煽动情绪,欢迎与我交流)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《操作系统 - 清华大学》3 -3:连续内存分配:内存碎片与分区的动态分配

文章目录 0. 概述1. 内存碎片问题2. 动态分配3. 首次适配算法4. 最优适配算法5. 最差适配算法 0. 概述 内存分配是操作系统管理过程中很重要的环节&#xff0c;首先需要考虑的是一块连续区域分配的过程&#xff0c;这个过程中会有很多问题&#xff0c;首先比较关注的一个问题是…

CICD持续集成与持续交付

一 CICD是什么 CI/CD 是指持续集成&#xff08;Continuous Integration&#xff09;和持续部署&#xff08;Continuous Deployment&#xff09;或持续交付&#xff08;Continuous Delivery&#xff09; 1.1 持续集成&#xff08;Continuous Integration&#xff09; 持续集成…

[前端面试]javascript

js数据类型 简单数据类型 null undefined string number boolean bigint 任意精度的大整数 symbol 创建唯一且不变的值&#xff0c;常用来表示对象属性的唯一标识 复杂数据类型 object&#xff0c;数组&#xff0c;函数,正则,日期等 区别 存储区别 简单数据类型因为其大小固定…

多线程-阻塞队列

目录 阻塞队列 消息队列 阻塞队列用于生产者消费者模型 概念 实现原理 生产者消费者主要优势 缺陷 阻塞队列的实现 1.写一个普通队列 2.加上线程安全和阻塞等待 3.解决代码中的问题 阻塞队列 阻塞队列&#xff0c;是带有线程安全功能的队列&#xff0c;拥有队列先进…

Uniapp 引入 Android aar 包 和 Android 离线打包

需求&#xff1a; 原生安卓 apk 要求嵌入到 uniapp 中&#xff0c;并通过 uniapp 前端调起 app 的相关组件。 下面手把手教你&#xff0c;从 apk 到 aar&#xff0c;以及打包冲突到如何运行&#xff0c;期间我所遇到的问题都会 一 一 进行说明&#xff0c;相关版本以我文章内为…

软间隔支持向量机

软间隔支持向量机 ​ 我们先直接给出软间隔支持向量机的形式&#xff1a; P min ⁡ ω , b , ζ 1 2 ∥ ω ∥ 2 2 − C ∑ i 1 m ζ i s . t . y i ( ω x i b ) ≥ 1 − ζ i , i 1 , 2 , 3.. m ζ i ≥ 0 , i 1 , 2 , 3.. m P \min_{\omega,b,\zeta} \frac{1}{2}\Ve…

html + css 自适应首页布局案例

文章目录 前言一、组成二、代码1. css 样式2. body 内容3.全部整体 三、效果 前言 一个自适应的html布局 一、组成 整体居中&#xff0c;宽度1200px&#xff0c;小屏幕宽度100% 二、代码 1. css 样式 代码如下&#xff08;示例&#xff09;&#xff1a; <style>* {…

深入List集合:ArrayList与LinkedList的底层逻辑与区别

目录 一、前言 二、基本概念 三、相同之处 四、不同之处 五、ArrayList 底层 六、LinkedList 底层 七、ArrayList 应用场景 八、LinkedList 应用场景 九、ArrayList和LinkedList高级话题 十、总结 一、前言 在Java集合的广阔舞台上&#xff0c;ArrayList与LinkedLis…

Vue3中实现插槽使用

目录 一、前言 二、插槽类型 三、示例 四、插槽的分类实现 1. 基本插槽 2. 命名插槽 3. 默认插槽内容 4. 作用域插槽&#xff08;Scoped Slots&#xff09; 5. 多插槽与具名插槽组合 一、前言 在 Vue 3 中&#xff0c;插槽&#xff08;Slot&#xff09;用于实现组件的内…

海思3403对RTSP进行目标检测

1.概述 主要功能是调过live555 testRTSPClient 简单封装的rtsp客户端库&#xff0c;拉取RTSP流&#xff0c;然后调过3403的VDEC模块进行解码&#xff0c;送个NPU进行目标检测&#xff0c;输出到hdmi&#xff0c;这样保证了开发没有sensor的时候可以识别其它摄像头的视频流&…

【Java知识】Java性能测试工具JMeter

一文带你了解什么是JMeter 概述JMeter的主要功能&#xff1a;JMeter的工作原理&#xff1a;JMeter的应用场景&#xff1a;JMeter的组件介绍&#xff1a; 实践说明JMeter实践基本步骤&#xff1a;JMeter实践关键点&#xff1a; JMeter支持哪些参数化技术&#xff1f;常见插件及其…

Github客户端工具github-desktop使用教程

文章目录 1.客户端工具的介绍2.客户端工具使用感受3.仓库的创建4.初步尝试5.本地文件和仓库路径5.1原理说明5.2修改文件5.3版本号的说明5.4结合码云解释5.5版本号的查找 6.分支管理6.1分支的引入6.2分支合并6.3创建测试仓库6.4创建测试分支6.5合并分支6.6合并效果查看6.7分支冲…

Flutter中的Material Theme完全指南:从入门到实战

Flutter作为一款热门的跨平台开发框架&#xff0c;其UI组件库Material Design深受开发者喜爱。本文将深入探讨Flutter Material Theme的使用&#xff0c;包括如何借助Material Theme Builder创建符合产品需求的主题风格。通过多个场景和代码实例&#xff0c;让你轻松掌握这一工…

EWM 打印

目录 1 简介 2 后台配置 3 主数据 4 业务操作 1 简介 打印即输出管理&#xff08;output management&#xff09;利用“条件表”那一套理论实现。而当打印跟 EWM 集成到一起时&#xff0c;也需要利用 PPF&#xff08;Post Processing Framework&#xff09;那一套理论。而…

2024 同一个网段,反弹shell四种方法【linux版本】bash、python、nc、villian反弹shell图解步骤

实验环境准备&#xff08;同一个网段下&#xff0c;我是桥接的虚拟机&#xff09; 一、bash反弹shell 二、python反弹shell 三、nc反弹shell 四、villain反弹shell 实验环境准备&#xff08;同一个网段下&#xff0c;我是桥接的虚拟机&#xff09; 一台kali的linux(攻击者)…

ubuntu 安装kafka-eagle

上传压缩包 kafka-eagle-bin-2.0.8.tar.gz 到集群 /root/efak 目录 cd /root/efak tar -zxvf kafka-eagle-bin-2.0.8.tar.gz cd /root/efak/kafka-eagle-bin-2.0.8 mkdir /root/efakmodule tar -zxvf efak-web-2.0.8-bin.tar.gz -C /root/efakmodule/ mv /root/efakmodule/efak…

算法沉淀一:双指针

目录 前言&#xff1a; 双指针介绍 对撞指针 快慢指针 题目练习 1.移动零 2.复写零 3.快乐数 4.盛水最多的容器 5.有效三角形的个数 6.和为s的两个数 7.三数之和 8.四数之和 前言&#xff1a; 此章节介绍一些算法&#xff0c;主要从leetcode上的题来讲解&#xff…

安全机制解析:深入SELinux与权限管理

Linux内核作为一个高自由度和优秀性能的操作系统核心&#xff0c;基于安全需求提供了完善的安全机制。内核安全机制不仅限于保护个人数据&#xff0c;还包括对运行环境和系统体系的线程化操作。本文将全方位分析Linux内核安全机制&#xff0c;以SELinux为主要代表&#xff0c;选…

对接阿里云实人认证

对接阿里云实人认证-身份二要素核验接口整理 目录 应用场景 接口文档 接口信息 请求参数 响应参数 调试 阿里云openApi平台调试 查看调用结果 查看SDK示例 下载SDK 遇到问题 本地调试 总结 应用场景 项目有一个提现的场景&#xff0c;需要用户真实的身份信息。 …

【2048】我的创作纪念日

机缘 2048天&#xff0c;不知不觉来csdn博客已经有2048天了&#xff0c;其实用csdn平台很久了&#xff0c;实际上写博客还是从2019年开始。 还记得最初成为创作者初心是什么吗&#xff1f; 最开始&#xff0c;主要是用来做笔记。平时工作中、学习中遇到的技术相关问题都会在cs…