亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

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

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

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

K8s存儲(chǔ)類設(shè)計(jì)與Ceph集成實(shí)戰(zhàn)

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2025-08-22 11:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

為什么StorageClass是K8s存儲(chǔ)的靈魂?

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

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

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

?擴(kuò)容操作繁瑣:業(yè)務(wù)增長(zhǎng)時(shí),存儲(chǔ)擴(kuò)容需要大量人工干預(yù)

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

StorageClass核心原理解析

# 高性能SSD存儲(chǔ)類配置
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集成實(shí)戰(zhàn):零停機(jī)部署方案

環(huán)境準(zhǔn)備清單

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

?Kubernetes集群:1.20+版本

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

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

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

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

# 下載官方部署文件
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ū)動(dòng)
kubectl apply -f csi-rbdplugin-provisioner.yaml
kubectl apply -f csi-rbdplugin.yaml

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

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

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

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

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

# 在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"
    ]
   }
  ]

高級(jí)特性配置

多層存儲(chǔ)策略設(shè)計(jì)

# 高性能存儲(chǔ)類 - 適用于數(shù)據(jù)庫(kù)
---
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

---
# 標(biāo)準(zhǔn)存儲(chǔ)類 - 適用于一般應(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

---
# 冷存儲(chǔ)類 - 適用于備份歸檔
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ù)庫(kù)專用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ù)量(重要?。?# 計(jì)算公式:(OSD數(shù)量 × 100) / 副本數(shù) / 存儲(chǔ)池?cái)?shù)量
ceph osd poolsetk8s-pool pg_num 256
ceph osd poolsetk8s-pool pgp_num 256

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

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

CSI驅(qū)動(dòng)資源配置

# 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)鍵指標(biāo)告警規(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:"存儲(chǔ)供給失敗"
  description:"StorageClass{{ $labels.storage_class }}在過(guò)去5分鐘內(nèi)供給失敗"

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

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端口范圍開(kāi)始
  endPort:7300

故障排查實(shí)戰(zhàn)手冊(cè)

常見(jiàn)問(wèn)題診斷

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

# 檢查StorageClass是否正確
kubectl get storageclass

# 查看PVC詳細(xì)信息
kubectl describe pvc 

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

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

問(wèn)題2:掛載失敗錯(cuò)誤

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

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

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

性能問(wèn)題診斷

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

# 2. 測(cè)試存儲(chǔ)性能
kubectl apply -f - <

最佳實(shí)踐總結(jié)

設(shè)計(jì)原則

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

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

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

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

運(yùn)維建議

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

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

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

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

性能基準(zhǔn)

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

?IOPS性能:SSD池可達(dá)30000+ IOPS

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

?延遲指標(biāo):P99延遲 < 10ms

未來(lái)發(fā)展趨勢(shì)

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

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

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

3.邊緣存儲(chǔ):支持邊緣計(jì)算場(chǎng)景的分布式存儲(chǔ)

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

寫在最后

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

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

    關(guān)注

    13

    文章

    4648

    瀏覽量

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

    關(guān)注

    0

    文章

    129

    瀏覽量

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

    關(guān)注

    0

    文章

    266

    瀏覽量

    8486

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    什么是 K8S,如何使用 K8S

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

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

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

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

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

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

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

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

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

    評(píng)估K8s可用的最常見(jiàn)的存儲(chǔ)解決方案

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

    Docker不香嗎為什么還要用K8s

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

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

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

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

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

    K8S(kubernetes)學(xué)習(xí)指南

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

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

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

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

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

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

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

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

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

    k8s和docker區(qū)別對(duì)比,哪個(gè)更強(qiáng)?

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