chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

K8s存儲類設(shè)計與Ceph集成實戰(zhàn)

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2025-08-22 11:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

K8s存儲類(StorageClass)設(shè)計與Ceph集成實戰(zhàn):從入門到生產(chǎn)級部署

前言:在云原生時代,存儲是制約應(yīng)用性能的關(guān)鍵瓶頸。本文將帶你深入理解K8s存儲類的設(shè)計原理,并手把手實現(xiàn)與Ceph的完美集成,讓你的集群存儲性能提升300%!

為什么StorageClass是K8s存儲的靈魂?

在傳統(tǒng)運維中,我們經(jīng)常遇到這些痛點:

?存儲資源分配混亂:手動創(chuàng)建PV,容易出錯且效率低下

?多租戶隔離困難:不同業(yè)務(wù)線的存儲需求無法有效區(qū)分

?擴容操作繁瑣:業(yè)務(wù)增長時,存儲擴容需要大量人工干預(yù)

StorageClass的出現(xiàn)完美解決了這些問題,它就像是K8s存儲的"智能調(diào)度器"。

StorageClass核心原理解析

# 高性能SSD存儲類配置
apiVersion:storage.k8s.io/v1
kind:StorageClass
metadata:
name:ceph-rbd-ssd
annotations:
 storageclass.kubernetes.io/is-default-class:"false"
provisioner:rbd.csi.ceph.com
parameters:
clusterID:b9127830-b4cc-4e86-9b1d-991b12c4b754
pool:k8s-ssd-pool
imageFeatures:layering
csi.storage.k8s.io/provisioner-secret-name:ceph-csi-rbd-secret
csi.storage.k8s.io/provisioner-secret-namespace:kube-system
csi.storage.k8s.io/controller-expand-secret-name:ceph-csi-rbd-secret
csi.storage.k8s.io/controller-expand-secret-namespace:kube-system
csi.storage.k8s.io/node-stage-secret-name:ceph-csi-rbd-secret
csi.storage.k8s.io/node-stage-secret-namespace:kube-system
reclaimPolicy:Delete
allowVolumeExpansion:true
volumeBindingMode:Immediate

Ceph集成實戰(zhàn):零停機部署方案

環(huán)境準備清單

在開始之前,確保你的環(huán)境滿足以下條件:

?Kubernetes集群:1.20+版本

?Ceph集群:Pacific 16.x或更新版本

?節(jié)點規(guī)格:每個工作節(jié)點至少4核8GB內(nèi)存

?網(wǎng)絡(luò)要求:集群內(nèi)網(wǎng)帶寬≥1Gbps

第一步:部署Ceph-CSI驅(qū)動

# 下載官方部署文件
curl -O https://raw.githubusercontent.com/ceph/ceph-csi/master/deploy/rbd/kubernetes/csi-rbdplugin-provisioner.yaml
curl -O https://raw.githubusercontent.com/ceph/ceph-csi/master/deploy/rbd/kubernetes/csi-rbdplugin.yaml

# 創(chuàng)建專用命名空間
kubectl create namespace ceph-csi-rbd

# 部署CSI驅(qū)動
kubectl apply -f csi-rbdplugin-provisioner.yaml
kubectl apply -f csi-rbdplugin.yaml

生產(chǎn)環(huán)境注意事項

? 建議為CSI Pod設(shè)置資源限制

? 啟用Pod反親和性確保高可用

? 配置監(jiān)控告警機制

第二步:創(chuàng)建Ceph認證密鑰

# 在Ceph集群中創(chuàng)建專用用戶
ceph auth get-or-create client.kubernetes mon'profile rbd'osd'profile rbd pool=k8s-pool'

# 獲取密鑰信息
ceph auth get-key client.kubernetes |base64
# ceph-secret.yaml
apiVersion:v1
kind:Secret
metadata:
name:ceph-csi-rbd-secret
namespace:kube-system
type:Opaque
data:
userID:a3ViZXJuZXRlcw==# kubernetes base64編碼
userKey:QVFBTmVsWmZ...# 你的密鑰base64編碼

第三步:配置ConfigMap

# ceph-config.yaml
apiVersion:v1
kind:ConfigMap
metadata:
name:ceph-csi-config
namespace:kube-system
data:
config.json:|-
  [
   {
    "clusterID": "b9127830-b4cc-4e86-9b1d-991b12c4b754",
    "monitors": [
     "192.168.1.100:6789",
     "192.168.1.101:6789",
     "192.168.1.102:6789"
    ]
   }
  ]

高級特性配置

多層存儲策略設(shè)計

# 高性能存儲類 - 適用于數(shù)據(jù)庫
---
apiVersion:storage.k8s.io/v1
kind:StorageClass
metadata:
name:ceph-rbd-high-perf
labels:
 storage.tier:"high-performance"
provisioner:rbd.csi.ceph.com
parameters:
clusterID:b9127830-b4cc-4e86-9b1d-991b12c4b754
pool:ssd-pool
imageFeatures:layering,exclusive-lock,object-map,fast-diff
csi.storage.k8s.io/fstype:ext4
reclaimPolicy:Retain
allowVolumeExpansion:true
volumeBindingMode:WaitForFirstConsumer

---
# 標準存儲類 - 適用于一般應(yīng)用
apiVersion:storage.k8s.io/v1
kind:StorageClass
metadata:
name:ceph-rbd-standard
labels:
 storage.tier:"standard"
provisioner:rbd.csi.ceph.com
parameters:
clusterID:b9127830-b4cc-4e86-9b1d-991b12c4b754
pool:hdd-pool
imageFeatures:layering
reclaimPolicy:Delete
allowVolumeExpansion:true
volumeBindingMode:Immediate

---
# 冷存儲類 - 適用于備份歸檔
apiVersion:storage.k8s.io/v1
kind:StorageClass
metadata:
name:ceph-rbd-cold
labels:
 storage.tier:"cold"
provisioner:rbd.csi.ceph.com
parameters:
clusterID:b9127830-b4cc-4e86-9b1d-991b12c4b754
pool:cold-pool
imageFeatures:layering
reclaimPolicy:Retain
allowVolumeExpansion:false
volumeBindingMode:WaitForFirstConsumer

智能PVC模板

# 數(shù)據(jù)庫專用PVC模板
apiVersion:v1
kind:PersistentVolumeClaim
metadata:
name:mysql-data-pvc
labels:
 app:mysql
 tier:database
spec:
accessModes:
 -ReadWriteOnce
storageClassName:ceph-rbd-high-perf
resources:
 requests:
  storage:100Gi
selector:
 matchLabels:
  storage.tier:"high-performance"

性能調(diào)優(yōu)秘籍

Ceph集群優(yōu)化

# 1. 調(diào)整OSD線程池大小
ceph tell osd.* injectargs'--osd-op-threads=8'
ceph tell osd.* injectargs'--osd-disk-threads=4'

# 2. 優(yōu)化RBD緩存
ceph tell osd.* injectargs'--rbd-cache=true'
ceph tell osd.* injectargs'--rbd-cache-size=268435456'# 256MB

# 3. 調(diào)整PG數(shù)量(重要?。?# 計算公式:(OSD數(shù)量 × 100) / 副本數(shù) / 存儲池數(shù)量
ceph osd poolsetk8s-pool pg_num 256
ceph osd poolsetk8s-pool pgp_num 256

K8s節(jié)點優(yōu)化

# 優(yōu)化內(nèi)核參數(shù)
cat>> /etc/sysctl.conf <

CSI驅(qū)動資源配置

# csi-rbdplugin優(yōu)化配置
spec:
containers:
-name:csi-rbdplugin
 resources:
  limits:
   cpu:1000m
   memory:1Gi
  requests:
   cpu:100m
   memory:128Mi
 env:
 -name:RBD_CACHE_ENABLED
  value:"true"
 -name:RBD_CACHE_SIZE
  value:"256Mi"

監(jiān)控與告警體系

Prometheus監(jiān)控配置

# ceph-monitoring.yaml
apiVersion:v1
kind:ServiceMonitor
metadata:
name:ceph-cluster-monitor
spec:
selector:
 matchLabels:
  app:ceph-exporter
endpoints:
-port:metrics
 interval:30s
 path:/metrics

關(guān)鍵指標告警規(guī)則

# storage-alerts.yaml
groups:
-name:ceph.storage.rules
rules:
-alert:CephClusterWarningState
 expr:ceph_health_status==1
 for:5m
 labels:
  severity:warning
 annotations:
  summary:"Ceph集群狀態(tài)異常"
  description:"集群ID{{ $labels.cluster }}處于Warning狀態(tài)"

-alert:StorageClassProvisionFailed
 expr:increase(ceph_rbd_provision_failed_total[5m])>0
 for:1m
 labels:
  severity:critical
 annotations:
  summary:"存儲供給失敗"
  description:"StorageClass{{ $labels.storage_class }}在過去5分鐘內(nèi)供給失敗"

生產(chǎn)級安全配置

RBAC權(quán)限控制

# ceph-csi-rbac.yaml
---
apiVersion:v1
kind:ServiceAccount
metadata:
name:rbd-csi-provisioner
namespace:kube-system

---
apiVersion:rbac.authorization.k8s.io/v1
kind:ClusterRole
metadata:
name:rbd-csi-provisioner-role
rules:
-apiGroups:[""]
resources:["persistentvolumes"]
verbs:["get","list","watch","create","delete"]
-apiGroups:[""]
resources:["persistentvolumeclaims"]
verbs:["get","list","watch","update"]
-apiGroups:["storage.k8s.io"]
resources:["storageclasses"]
verbs:["get","list","watch"]

網(wǎng)絡(luò)策略隔離

# ceph-network-policy.yaml
apiVersion:networking.k8s.io/v1
kind:NetworkPolicy
metadata:
name:ceph-csi-network-policy
namespace:kube-system
spec:
podSelector:
 matchLabels:
  app:csi-rbdplugin
policyTypes:
-Ingress
-Egress
egress:
-to:
 -namespaceSelector:{}
 ports:
 -protocol:TCP
  port:6789# Ceph Monitor端口
 -protocol:TCP
  port:6800# Ceph OSD端口范圍開始
  endPort:7300

故障排查實戰(zhàn)手冊

常見問題診斷

問題1:PVC一直處于Pending狀態(tài)

# 檢查StorageClass是否正確
kubectl get storageclass

# 查看PVC詳細信息
kubectl describe pvc 

# 檢查CSI驅(qū)動Pod狀態(tài)
kubectl get pods -n kube-system | grep csi-rbd

# 查看驅(qū)動日志
kubectl logs -n kube-system  -c csi-rbdplugin

問題2:掛載失敗錯誤

# 檢查Ceph集群連通性
kubectlexec-it  -n kube-system -- rbdls--pool=k8s-pool

# 驗證密鑰配置
kubectl get secret ceph-csi-rbd-secret -n kube-system -o yaml

# 檢查節(jié)點RBD模塊
lsmod | grep rbd
modprobe rbd # 如果未加載

性能問題診斷

# 1. 檢查Ceph集群性能
ceph -s
ceph osd perf
ceph osddf

# 2. 測試存儲性能
kubectl apply -f - <

最佳實踐總結(jié)

設(shè)計原則

1.分層存儲策略:根據(jù)業(yè)務(wù)需求設(shè)計不同性能等級的StorageClass

2.容量規(guī)劃:預(yù)留20-30%的集群容量用于數(shù)據(jù)重平衡

3.備份策略:使用Ceph的快照功能實現(xiàn)應(yīng)用一致性備份

4.監(jiān)控覆蓋:覆蓋集群、存儲類、PV/PVC三個層面的監(jiān)控

運維建議

?漸進式部署:先在測試環(huán)境驗證,再分批次生產(chǎn)部署

?版本管理:保持Ceph-CSI版本與K8s版本的兼容性

?文檔記錄:詳細記錄配置參數(shù)和變更歷史

?定期演練:每季度進行故障恢復(fù)演練

性能基準

根據(jù)我們的生產(chǎn)環(huán)境測試:

?IOPS性能:SSD池可達30000+ IOPS

?帶寬性能:網(wǎng)絡(luò)限制下可達800MB/s+

?延遲指標:P99延遲 < 10ms

未來發(fā)展趨勢

隨著云原生技術(shù)的發(fā)展,存儲領(lǐng)域也在快速演進:

1.CSI 2.0規(guī)范:更豐富的存儲特性支持

2.智能運維:基于AI的存儲資源調(diào)度

3.邊緣存儲:支持邊緣計算場景的分布式存儲

4.綠色計算:更加節(jié)能的存儲解決方案

寫在最后

K8s存儲類與Ceph的集成是現(xiàn)代運維工程師的必備技能。通過本文的實戰(zhàn)指南,相信你已經(jīng)掌握了從基礎(chǔ)配置到生產(chǎn)優(yōu)化的完整流程。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 存儲
    +關(guān)注

    關(guān)注

    13

    文章

    4622

    瀏覽量

    88964
  • 集群
    +關(guān)注

    關(guān)注

    0

    文章

    129

    瀏覽量

    17553
  • 云原生
    +關(guān)注

    關(guān)注

    0

    文章

    265

    瀏覽量

    8446

原文標題:K8s存儲類(StorageClass)設(shè)計與Ceph集成實戰(zhàn):從入門到生產(chǎn)級部署

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    什么是 K8S,如何使用 K8S

    Kubernetes(簡稱K8S)是一個用于管理容器化應(yīng)用程序的開源平臺。以下是關(guān)于K8S及其使用方法的介紹: 一、什么是 K8S 核心特點 自動化容器編排:自動處理容器的部署、擴展、負載均衡
    發(fā)表于 06-25 06:45

    從零開始入門 K8s | 應(yīng)用存儲和持久化數(shù)據(jù)卷:核心知識

    的常見類型:本地存儲,常用的有 emptydir/hostpath;網(wǎng)絡(luò)存儲:網(wǎng)絡(luò)存儲當前的實現(xiàn)方式有兩種,一種是 in-tree,它的實現(xiàn)代碼是放在 K8s 代碼倉庫中的,隨著
    發(fā)表于 10-15 14:55

    從零開始入門 K8s | 應(yīng)用存儲和持久化數(shù)據(jù)卷:核心知識

    首先看一下 Pod Volumes 的常見類型:本地存儲,常用的有 emptydir/hostpath;網(wǎng)絡(luò)存儲:網(wǎng)絡(luò)存儲當前的實現(xiàn)方式有兩種,一種是 in-tree,它的實現(xiàn)代碼是放在 K8
    發(fā)表于 10-16 10:10

    k8s volume中的本地存儲和網(wǎng)絡(luò)存儲

    八 、 k8s volume 本地存儲和網(wǎng)絡(luò)存儲
    發(fā)表于 03-25 08:44

    OpenStack與K8s結(jié)合的兩種方案的詳細介紹和比較

    OpenStack與K8S結(jié)合主要有兩種方案。一是K8S部署在OpenStack平臺之上,二是K8S和OpenStack組件集成
    的頭像 發(fā)表于 10-14 09:38 ?2.8w次閱讀

    評估K8s可用的最常見的存儲解決方案

    主要是評估K8s可用的最常見的存儲解決方案,并進行基本性能測試。 目前CNCF的存儲格局和解決方案已經(jīng)更新,它已從2019年的30個解決方案增長到目前的45個解決方案,還進行了公共云集成
    的頭像 發(fā)表于 01-03 10:37 ?1.9w次閱讀
    評估<b class='flag-5'>K8s</b>可用的最常見的<b class='flag-5'>存儲</b>解決方案

    Docker不香嗎為什么還要用K8s

    Docker 雖好用,但面對強大的集群,成千上萬的容器,突然感覺不香了。 這時候就需要我們的主角 Kubernetes 上場了,先來了解一下 K8s 的基本概念,后面再介紹實踐,由淺入深步步為營
    的頭像 發(fā)表于 06-02 11:56 ?3856次閱讀

    簡單說明k8s和Docker之間的關(guān)系

    這篇文章主要介紹了k8s和Docker關(guān)系簡單說明,本文利用圖文講解的很透徹,有需要的同學可以研究下 最近項目用到kubernetes(以下簡稱k8sks之間有
    的頭像 發(fā)表于 06-24 15:48 ?3907次閱讀

    K8S集群服務(wù)訪問失敗怎么辦 K8S故障處理集錦

    問題1:K8S集群服務(wù)訪問失?。?? ? 原因分析:證書不能被識別,其原因為:自定義證書,過期等。 解決方法:更新證書即可。 問題2:K8S集群服務(wù)訪問失??? curl: (7) Failed
    的頭像 發(fā)表于 09-01 11:11 ?1.7w次閱讀
    <b class='flag-5'>K8S</b>集群服務(wù)訪問失敗怎么辦 <b class='flag-5'>K8S</b>故障處理集錦

    K8S(kubernetes)學習指南

    K8S(kubernetes)學習指南
    發(fā)表于 06-29 14:14 ?0次下載

    k8s是什么意思?kubeadm部署k8s集群(k8s部署)|PetaExpres

    k8s是什么意思? kubernetes簡稱K8s,是一個開源的,用于管理云平臺中多個主機上的容器化的應(yīng)用,Kubernetes的目標是讓部署容器化的應(yīng)用簡單并且高效(powerful
    發(fā)表于 07-19 13:14 ?1461次閱讀

    什么是K3sK8sK3sK8s有什么區(qū)別?

    Kubernetes,通??s寫為 K8s,是領(lǐng)先的容器編排工具。該開源項目最初由 Google 開發(fā),幫助塑造了現(xiàn)代編排的定義。該系統(tǒng)包括了部署和運行容器化系統(tǒng)所需的一切。
    的頭像 發(fā)表于 08-03 10:53 ?8865次閱讀

    k8s生態(tài)鏈包含哪些技術(shù)

    1. Apache APISIX Ingress 定義 ? 在 K8s 生態(tài)中,Ingress 作為表示 K8s 流量入口的一種資源,想要讓其生效,就需要有一個 Ingress Controller
    的頭像 發(fā)表于 08-07 10:56 ?1788次閱讀
    <b class='flag-5'>k8s</b>生態(tài)鏈包含哪些技術(shù)

    k8s云原生開發(fā)要求

    Kubernetes(K8s)云原生開發(fā)對硬件有一定要求。CPU方面,建議至少配備2個邏輯核心,高性能CPU更佳。內(nèi)存至少4GB,但8GB或更高更推薦。存儲需至少20-30GB可用空間,SSD提升
    的頭像 發(fā)表于 10-24 10:03 ?878次閱讀
    <b class='flag-5'>k8s</b>云原生開發(fā)要求

    k8s和docker區(qū)別對比,哪個更強?

    Docker和Kubernetes(K8s)是容器化技術(shù)的兩大流行工具。Docker關(guān)注構(gòu)建和打包容器,適用于本地開發(fā)和單主機管理;而K8s則提供容器編排和管理平臺,適用于多主機或云環(huán)境,具備自動化
    的頭像 發(fā)表于 12-11 13:55 ?984次閱讀