重溫 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
英文地址,請注明出處:http://en.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…