重温 K8s 基础概念知识系列五(存储、配置、安全和策略)

文章目录

    • 一、存储(Storage)
      • 1.1、Volume
      • 1.2、PersistentVolume (PV)
      • 1.3、PersistentVolumeClaim (PVC)
      • 1.4、StorageClass
      • 1.5、PVC 和 PV 的绑定过程?
    • 二、配置管理(Configuration)
      • 2.1、ConfigMap
      • 2.2、Secret
      • 2.3、存活、就绪和启动探针
    • 三、安全(Security)
    • 四、策略与最佳实践
    • 五、总结

这一章节主要涉及如何持久化应用数据、管理配置、保护敏感信息以及定义安全和访问控制策略。以下是干货总结:

一、存储(Storage)

1.1、Volume

  • Pod 内部的临时存储,生命周期与 Pod 绑定。

  • 为集群中的 Pods 提供长期和临时存储的方法。

Container(容器)中的磁盘文件是短暂的,当容器崩溃时,kubelet会重新启动容器,但最初的文件将丢失,Container会以最干净的状态启动。另外,当一个Pod运行多个Container时,各个容器可能需要共享一些文件。Kubernetes Volume可以解决这两个问题。
一些需要持久化数据的程序才会用到Volumes,或者一些需要共享数据的容器需要volumes。

  • 常见类型:emptyDir、hostPath、configMap、secret、persistentVolumeClaim。

1.2、PersistentVolume (PV)

由集群管理员提供的持久化存储资源(如 NFS、Ceph、云盘)。

1.3、PersistentVolumeClaim (PVC)

用户申请存储的请求(声明自己需要多大的存储)。

Pod 通过 PVC 来挂载 PV,实现数据持久化。

1.4、StorageClass

定义存储类型(SSD、HDD、云存储等),支持动态创建 PV。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: low-latencyannotations:storageclass.kubernetes.io/is-default-class: "false"
provisioner: csi-driver.example-vendor.example
reclaimPolicy: Retain # 默认值是 Delete
allowVolumeExpansion: true
mountOptions:- discard # 这可能会在块存储层启用 UNMAP/TRIM
volumeBindingMode: WaitForFirstConsumer
parameters:guaranteedReadWriteLatency: "true" # 这是服务提供商特定的

1.5、PVC 和 PV 的绑定过程?

用户创建 PVC → 调度器寻找匹配的 PV → 绑定成功 → Pod 使用 PVC 挂载。

二、配置管理(Configuration)

2.1、ConfigMap

存放非敏感配置信息(环境变量、配置文件);可以挂载为文件或注入环境变量。

一般用ConfigMap去管理一些配置文件、或者一些大量的环境变量信息。

ConfigMap将配置和Pod分开,有一个nginx,nginx.conf -> configmap,nginx
更易于配置文件的更改和管理。

这是一个 ConfigMap 的示例,它的一些键只有一个值,其他键的值看起来像是 配置的片段格式。

apiVersion: v1
kind: ConfigMap
metadata:name: game-demo
data:# 类属性键;每一个键都映射到一个简单的值player_initial_lives: "3"ui_properties_file_name: "user-interface.properties"# 类文件键game.properties: |enemy.types=aliens,monstersplayer.maximum-lives=5    user-interface.properties: |color.good=purplecolor.bad=yellowallow.textmode=true    

2.2、Secret

存放敏感信息(密码、证书、密钥)。

Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。 这样的信息可能会被放在 Pod 规约中或者镜像中。 使用 Secret 意味着你不需要在应用程序代码中包含机密数据。

由于创建 Secret 可以独立于使用它们的 Pod, 因此在创建、查看和编辑 Pod 的工作流程中暴露 Secret(及其数据)的风险较小。 Kubernetes 和在集群中运行的应用程序也可以对 Secret 采取额外的预防措施, 例如避免将敏感数据写入非易失性存储。

Secret 类似于 ConfigMap 但专门用于保存机密数据。

Base64 编码存储,建议结合 KMS 或外部密钥管理服务。Secret更倾向于存储和共享敏感、加密的配置信息。

使用方式

  • 挂载到 Pod 中(文件/环境变量)。

  • 动态更新:Pod 内应用可监听挂载的配置变化。

2.3、存活、就绪和启动探针

Kubernetes 提供了多种探针:

  • 存活探针
  • 就绪探针
  • 启动探针
  1. 存活探针

存活探针决定何时重启容器。 例如,当应用在运行但无法取得进展时,存活探针可以捕获这类死锁。

如果一个容器的存活探针失败多次,kubelet 将重启该容器。

存活探针不会等待就绪探针成功。 如果你想在执行存活探针前等待,你可以定义 initialDelaySeconds,或者使用启动探针。

  1. 就绪探针
    就绪探针决定容器何时准备好接受流量。 这种探针在等待应用执行耗时的初始任务时非常有用; 例如:建立网络连接、加载文件和预热缓存。在容器的生命周期后期, 就绪探针也很有用,例如,从临时故障或过载中恢复时。

如果就绪探针返回的状态为失败,Kubernetes 会将该 Pod 从所有对应服务的端点中移除。

就绪探针在容器的整个生命期内持续运行。

  1. 启动探针
    启动探针检查容器内的应用是否已启动。 启动探针可以用于对慢启动容器进行存活性检测,避免它们在启动运行之前就被 kubelet 杀掉。

如果配置了这类探针,它会禁用存活检测和就绪检测,直到启动探针成功为止。

这类探针仅在启动时执行,不像存活探针和就绪探针那样周期性地运行。

三、安全(Security)

  1. ServiceAccount

    • Pod 与 API Server 交互的身份。

    • 每个 Pod 默认分配一个 ServiceAccount。

  2. RBAC (Role-Based Access Control)

    • Role:命名空间级别的权限。

    • ClusterRole:跨命名空间的全局权限。

    • RoleBinding/ClusterRoleBinding:将用户/组绑定到角色。

  3. Pod Security Context

    • 定义运行时安全策略(UID/GID、只读文件系统、是否允许特权模式)。
  4. NetworkPolicy

    • 控制 Pod 之间、Pod 与外部的网络访问。

    • 类似“防火墙规则”。

四、策略与最佳实践

  1. 资源限制(ResourceQuota & LimitRange)

    • 为 Pod/命名空间设置 CPU、内存上限。

    • 避免“资源被少数应用吃光”。

  2. PodDisruptionBudget (PDB)

    • 控制在节点维护或升级时,至少有多少 Pod 副本存活。
  3. 安全加固

    • 使用 Pod Security Admission(PSA) 替代 PodSecurityPolicy。

    • 常见模式:privileged、baseline、restricted。

五、总结

  • 存储:PV 提供,PVC 申请,SC 动态化。

  • 配置:ConfigMap 普通配置,Secret 存密码。

  • 安全:ServiceAccount 身份,RBAC 控权限,NetworkPolicy 限流量。

  • 策略:资源配额防滥用,PDB 保障高可用。

在这里插入图片描述


“人的一生会经历很多痛苦,但回头想想,都是传奇”。


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

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

相关文章

通过PhotoShop将多张图片整合为gif动画

一、准备图片集合二、导入PS导入PS后点击确定:导入成功:三、添加时间轴勾选创建帧动画:此时时间轴进化为帧动画轴:四、图片集部署在帧动画轴点击帧动画轴右上角的三道横杠,从图层建立帧:此时图片集已经部署…

Easy Rules 规则引擎详解

Easy Rules 规则引擎详解 Easy Rules 是一个轻量级的 Java 规则引擎,它提供了一种简单而强大的方式来定义和执行业务规则。以下是 Easy Rules 的详细介绍: 1. 核心概念 1.1 规则 (Rule) 条件 (Condition): 当条件为 true 时执行动作动作 (Action): 条件满…

优雅设计:打造AI时代的高效后端API接口——领码课堂深度解析

📌 摘要 后端API接口已经成为软件架构的神经系统。微服务演化、AI渗透、自动化治理……这些趋势迫使我们重新定义接口设计的标准。本文从统一规范、参数校验、异常处理、性能优化四大维度出发,结合领码Spark的接口治理平台与AI赋能实践,构建一…

【VUE】用EmailJS自动发送邮件到网易邮箱

1.注册 EmailJS 账号​​:访问 EmailJS 官网并注册2.添加电子邮件服务​​:在 Dashboard 中点击 "Add New Service"选择 SMTP server填写 SMTP 服务器信息SMTP Host: smtphz.qiye.163.com (网易企业邮箱)SMTP Port: 994 (SSL)User: 你的邮箱Ap…

Ubuntu下载、安装、编译指定版本python

下载 Index of /ftp/python/ https://www.python.org/downloads/ 删除旧的python sudo apt autoremove python sudo apt autoremove python3 安装依赖 sudo apt-get install -y zlib1g-dev libbz2-dev libssl-dev libncurses5-dev \ libsqlite3-dev libreadline-dev tk-d…

如何新建一个自己的虚拟环境

在今天我换了个电脑跑模型的时候&#xff0c;出现了一个问题&#xff1a;C:\ProgramData\Anaconda3\python.exe H:/ywp/project/model/msi_caijian.py Traceback (most recent call last):File "H:/ywp/project/model/msi_caijian.py", line 2, in <module>imp…

(第十八期)图像标签的三个常用属性:width、height、border

&#xff08;第十八期&#xff09;图像标签的三个常用属性&#xff1a;width、height、border 在网页开发中&#xff0c;控制图片尺寸与样式是基础又高频的操作。本文围绕 img 图像标签的三个属性展开&#xff1a;width&#xff08;宽度&#xff09;、height&#xff08;高度&a…

Windows桌面自动化的革命性突破:深度解析Windows-MCP.Net Desktop模块的技术奥秘

"在数字化浪潮中&#xff0c;桌面自动化不再是程序员的专利&#xff0c;而是每个人都能掌握的超能力。" —— 当我第一次接触到Windows-MCP.Net的Desktop模块时&#xff0c;这样的感慨油然而生。 &#x1f3af; 引言&#xff1a;为什么桌面自动化如此重要&#xff1f…

免费又强大的 PDF 编辑器 ——PDF XChange Editor

在日常的学习和工作中&#xff0c;我们经常会与 PDF 文档打交道&#xff0c;然而&#xff0c;PDF 文档的编辑却常常让人抓狂。比如拿到一份 PDF 合同或报告&#xff0c;发现里面有错别字或者需要更新数据&#xff1b;又或者遇到需要填写的 PDF 表单&#xff0c;只能打印出来手写…

Unity引擎播放HLS自适应码率流媒体视频

大家好&#xff0c;我是阿赵。今天来学习一下Unity引擎怎样播放自适应码率视频的方法。 一、 HLS是什么HLS是什么&#xff0c;各位可以自己百度一下。简单的概括&#xff0c;HLS是一种自适应码率流媒体传输协议&#xff0c;实现的是分片下载和动态码率切换。它的原理是把一段视…

Flink 源码系列 - 前言

Flink 源码系列 - 前言 &#x1f680; 为什么要学习 Flink 源码&#xff1f; Apache Flink 作为当前最流行的流式计算框架之一&#xff0c;其源码体系极其庞大。根据统计&#xff0c;Flink 项目包含&#xff1a; Java 文件总行数&#xff1a;232万行有效代码行数&#xff1a…

Rust:实现仅通过索引(序数)导出 DLL 函数的功能

在 Rust 中&#xff0c;可以通过手动控制导出来实现仅通过索引&#xff08;序数&#xff09;导出 DLL 函数的功能。以下是具体方法和完整步骤&#xff1a;解决方案 通过结合 .def 文件&#xff08;模块定义文件&#xff09;和 MSVC 链接器参数来实现函数名隐藏&#xff0c;只暴…

部分网站记录

Gradle多渠道打包[umeng] https://www.jianshu.com/p/8b8fdd37bf26 介绍在app的build.gradle设置produceFlavors&#xff0c;一键打包所有环境的命令 Android 知识图谱 https://upload-images.jianshu.io/upload_images/19956127-1b214e26967dacc6.jpg 百度的语音识别 https:…

【速通】深度学习模型调试系统化方法论:从问题定位到性能优化

深度学习模型调试的系统化方法论&#xff1a;从问题定位到性能优化 文章目录深度学习模型调试的系统化方法论&#xff1a;从问题定位到性能优化摘要1. 引言2. 模型调试的层次化框架2.1 三层调试架构2.2 调试优先级原则3. 系统化调试流程3.1 快速诊断清单3.2 最小可复现案例 (MR…

Nacos-6--Naco的QUIC协议实现高可用的工作原理

QUIC&#xff08;Quick UDP Internet Connections&#xff09;是一种基于UDP的传输层协议&#xff0c;旨在减少网络延迟、提升安全性并优化多路复用能力。它由Google开发&#xff0c;后被IETF标准化为HTTP/3的底层协议。 1、QUIC是什么&#xff1f; QUIC&#xff08;Quick UDP …

python实现pdfs合并

灵感来源于博主正在学408&#xff0c;在搞到视频课对应的ppt.pdf后发现pdf是按小节的&#xff0c;以至于每章有5-10甚至更多&#xff0c;这可太繁琐了&#xff0c;我想要一章一个pdf就可以了&#xff0c;于是浅浅查了几个CSDN发现使用python的要么收费要么要vip&#xff0c;不用…

51单片机-驱动74HC595芯片实现IO口扩展模块教程

本章概述思维导图&#xff1a; 51单片机驱动74HC595芯片实现IO口扩展 74HC595芯片简介 74HC595是一款8位串行输入、并行输出的移位寄存器&#xff0c;属于硅结构的CMOS器件。它能将串行输入数据转换为并行输出&#xff0c;其中并行输出为三态输出&#xff08;即高电平、低电平…

录音转文字,如何做到“快、准、狠“多格式通吃?

MP3、FLAC、M4A、OGG、WAV、MP4等多种常见音频格式&#xff0c;一键精准转成文字&#xff0c;让办公效率翻倍提升&#xff01;&#x1f525; 真实痛点场景&#xff1a;告别低效&#xff0c;迎接智能办公紧急会议纪要&#xff0c;争分夺秒&#xff01;上午10点刚结束一场跨部门脑…

【秋招】2025.08.16京东秋招机考真题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围在线刷题 bishipass.com 京东 题目一:魔法水晶阵列能量优化 1️⃣:理解逆序对的变化规律,分析区间操作对逆序对的影响 2️⃣:选择后缀区间避免产生新的逆序对,只最大化消除的逆序对…

RocksDB 解密可逆哈希:BijectiveHash的设计奥秘

BijectiveHash&#xff08;双射哈希&#xff0c;即可逆哈希&#xff09;的设计精髓在于它借鉴了现代密码学和高性能哈希函数中的核心思想&#xff0c;但目标并非加密&#xff0c;而是实现一种无冲突、可逆的置换&#xff08;Permutation&#xff09;。可逆哈希是什么&#xff0…