国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

9.云原生存儲之ceph在k8s中應(yīng)用及問題處理

這篇具有很好參考價值的文章主要介紹了9.云原生存儲之ceph在k8s中應(yīng)用及問題處理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

云原生專欄大綱

ceph應(yīng)用場景

官網(wǎng)文檔:Ceph Docs

  1. 對象存儲(Ceph Object Storage):
    對象存儲適用于需要存儲和訪問大量非結(jié)構(gòu)化數(shù)據(jù)的場景,例如圖像、視頻、日志文件等。在 Kubernetes 中,可以使用 Ceph Rados Gateway 提供的對象存儲接口,將應(yīng)用程序的對象數(shù)據(jù)存儲在 Ceph 集群中。對象存儲提供了高可擴展性和高可靠性,并且可以通過 HTTP 或 S3 API 進行訪問。
  2. 塊存儲(Ceph Block Storage):
    塊存儲適用于需要將持久化數(shù)據(jù)作為塊設(shè)備掛載到容器中的場景,例如數(shù)據(jù)庫、文件系統(tǒng)等應(yīng)用。在 Kubernetes 中,可以使用 Ceph RBD(Rados Block Device)提供的塊存儲功能。通過創(chuàng)建和管理 RBD 卷,可以將塊設(shè)備掛載到 Pod 中,以提供高性能和可靠的塊存儲。
  3. 文件系統(tǒng)(Ceph File System):
    文件系統(tǒng)適用于需要共享文件數(shù)據(jù)的場景,例如共享配置文件、共享存儲卷等。在 Kubernetes 中,可以使用 CephFS(Ceph File System)作為持久化存儲卷,將文件系統(tǒng)掛載到多個 Pod 中,實現(xiàn)文件級別的共享和訪問。CephFS 提供了高性能和可擴展的分布式文件系統(tǒng)功能。

總結(jié)來說,Ceph 對象存儲適用于存儲大量非結(jié)構(gòu)化數(shù)據(jù),塊存儲適用于需要掛載塊設(shè)備的應(yīng)用,文件系統(tǒng)適用于需要共享文件數(shù)據(jù)的場景。根據(jù)應(yīng)用的需求和特點,選擇適合的 Ceph 存儲方式可以提供高性能、可靠性和可擴展性的存儲解決方案。

ceph應(yīng)用

在k8s集群外使用塊設(shè)備

ceph客戶端配置

  1. 通過rook-ceph-tools工具查看配置
sh-4.4$ cat /etc/ceph/ceph.conf
[global]
mon_host = 192.168.31.25:6789,192.168.31.24:6789,192.168.31.20:6789

[client.admin]
keyring = /etc/ceph/keyring


sh-4.4$ cat /etc/ceph/keyring
[client.admin]
key = AQBaFp1lEAyWNRAAmSeFCljy78bBBH3+D0qkmw==
  1. 將上述配置在其他機器創(chuàng)建,

確保其他機器能訪問上述mon_host配置的ip:port。mon_host配置ip為宿主集群ip,需將cluster.yaml中provider: host配置注釋放開,不然使用的是k8s集群中service的虛擬vip,需修改上述配置

# 宿主機上查看是否暴露端口
[root@ksnode20 ~]# ss -anput | grep ":6789"
tcp    LISTEN     0      128    192.168.31.20:6789                  *:*                   users:(("ceph-mon",pid=19223,fd=28))
  1. 確定centos版本和下載源
# 查看el版本
cat /etc/redhat-release
#CentOS Linux release 7.5.1804 (Core) 
# 對應(yīng)el7版本

# rook-ceph-tools中查看
sh-4.4$ cat /etc/redhat-release
CentOS Stream release 8
  1. 查看版本
# rook-ceph-tools中查看ceph版本
sh-4.4$ ceph -v
ceph version 16.2.10 (45fa1a083152e41a408d15505f594ec5f1b4fe17) pacific (stable)
  1. 下載ceph客戶端
vi /etc/yum.repos.d/ceph.repo

# 添加如下內(nèi)容,https://mirrors.aliyun.com/ceph找到相應(yīng)版本
[ceph]
name=ceph
baseurl=https://mirrors.aliyun.com/ceph/rpm-16.2.10/el8/x86_64/
enabled=1
gpgcheck=0


####安裝客戶端
yum install ceph-common -y

  1. 測試
sh-4.4$ ceph -s
  cluster:
    id:     b4e4ce76-8a0c-4171-a5ec-27da6394983e
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum a,b,c (age 21h)
    mgr: b(active, since 21h), standbys: a
    osd: 5 osds: 5 up (since 21h), 5 in (since 21h)

  data:
    pools:   1 pools, 1 pgs
    objects: 0 objects, 0 B
    usage:   27 MiB used, 2.4 TiB / 2.4 TiB avail
    pgs:     1 active+clean


Ceph是一個開源的分布式存儲系統(tǒng),提供了豐富的命令行工具來管理和操作Ceph集群。以下是一些常用的Ceph命令:

1. ceph-deploy: 用于在Ceph集群中部署和管理節(jié)點。
2. ceph: 主要命令行工具,用于執(zhí)行各種Ceph管理操作。
  ceph health: 檢查Ceph集群的健康狀態(tài)。
  ceph status: 顯示Ceph集群的狀態(tài)信息。
  ceph osd status: 顯示Ceph集群中每個OSD(對象存儲設(shè)備)的狀態(tài)信息。
  ceph df: 顯示Ceph集群的存儲使用情況。
  ceph osd pool ls: 列出Ceph集群中的所有存儲池。
  ceph osd pool stats: 顯示Ceph集群中每個存儲池的統(tǒng)計信息。
  ceph osd tree: 顯示Ceph集群中的OSD樹結(jié)構(gòu)。
  ceph pg stat: 顯示Ceph集群中PGPlacement Group)的狀態(tài)信息。
  ceph pg dump: 顯示Ceph集群中PG的詳細(xì)信息。
  ceph osd crush tree: 顯示Ceph集群中的CRUSH映射樹結(jié)構(gòu)。
  ceph osd lspools: 列出Ceph集群中的所有存儲池。
3. rados: 用于執(zhí)行與RADOS(可靠自動分布式對象存儲)相關(guān)的操作。
  rados df: 顯示RADOS集群的存儲使用情況。
  rados ls: 列出RADOS集群中的所有對象。
  rados rm: 刪除RADOS集群中的對象。
  rados put: 將文件上傳為RADOS對象。
  rados get:RADOS集群中下載對象。
4. rbd: 用于執(zhí)行與RBD(塊設(shè)備)相關(guān)的操作。
  rbd create: 創(chuàng)建一個RBD鏡像。
  rbd ls: 列出RBD鏡像。
  rbd info: 顯示RBD鏡像的詳細(xì)信息。
  rbd map:RBD鏡像映射為塊設(shè)備。
  rbd unmap: 解除RBD鏡像的塊設(shè)備映射。
  rbd resize: 調(diào)整RBD鏡像的大小。
  rbd snap create: 創(chuàng)建RBD鏡像的快照。
  rbd snap ls: 列出RBD鏡像的快照。
  rbd snap rm: 刪除RBD鏡像的快照。

創(chuàng)建塊掛載使用

  1. 創(chuàng)建pool
#  該命令的作用是在 Ceph 存儲集群中創(chuàng)建一個名為 "rook"OSD 池,初始設(shè)置為具有 16PG 和至少 16 個副本
sh-4.4$ ceph osd pool create rook 16 16
pool 'rook' created

# 用于列出 Ceph 存儲集群中存在的所有 OSD 池
sh-4.4$ ceph osd lspools
1 device_health_metrics
2 rook
  • ceph osd pool create:這是 Ceph 命令行工具的一部分,用于創(chuàng)建 OSD 池。
  • rook:這是要創(chuàng)建的 OSD 池的名稱。您可以根據(jù)自己的需求選擇一個合適的名稱。
  • 16:這是指定 OSD 池的初始 PG(Placement Group)數(shù)量。PG 是 Ceph 存儲集群中數(shù)據(jù)分布和負(fù)載均衡的單位。選擇適當(dāng)?shù)?PG 數(shù)量對于性能和數(shù)據(jù)分布非常重要。根據(jù)集群的大小和負(fù)載情況,您可以根據(jù)需要調(diào)整這個數(shù)字。
  • 16:這是指定 OSD 池的最小副本數(shù)。Ceph 使用副本(replication)來提供數(shù)據(jù)冗余和高可用性。設(shè)置最小副本數(shù)將確保在發(fā)生故障時仍然有足夠的副本可用。同樣,您可以根據(jù)需求調(diào)整這個數(shù)字。
  1. 在pool上創(chuàng)建RDB塊
# 在名為 "rook"OSD 池中創(chuàng)建一個名為 "rook-rbd.img"RBD 鏡像,其大小為 1GB
sh-4.4$ rbd create -p rook --image rook-rbd.img --size 1G

# 獲得名為 "rook"OSD 池中所有 RBD 鏡像的列表
sh-4.4$ rbd ls -p rook
rook-rbd.img


  1. 客戶端掛載塊
# 將指定的 RBD 鏡像映射到本地系統(tǒng)中,使其在本地系統(tǒng)上可用。映射后,該鏡像將作為塊設(shè)備出現(xiàn),并可以像其他塊設(shè)備一樣進行讀取和寫入操作。
rbd map rook/rook-rbd.img

# 在/dev/rbd0設(shè)備上創(chuàng)建一個XFS文件系統(tǒng)。這將格式化該設(shè)備,并將其準(zhǔn)備好以存儲文件和目錄
mkfs.xfs /dev/rbd0

# 掛載
mount /dev/rbd0 /media

9.云原生存儲之ceph在k8s中應(yīng)用及問題處理,私有云+云原生實戰(zhàn),云原生,ceph,kubernetes

刪除pool

要刪除 Ceph 中的池(Pool),可以按照以下步驟進行操作:

  1. 檢查池狀態(tài):運行以下命令,確保要刪除的池處于健康狀態(tài)(HEALTH_OK):
ceph -s
  1. 停止池中的操作:在刪除池之前,最好停止對該池的任何操作,以確保數(shù)據(jù)的完整性??梢允褂靡韵旅顣和3刂械?I/O 操作:
#查看pool列表
ceph osd pool ls

ceph osd pool set <pool-name> size 0
  1. 刪除池:運行以下命令刪除池:
ceph osd pool delete <pool-name> <pool-name> --yes-i-really-really-mean-it

ceph osd pool delete rook rook --yes-i-really-really-mean-it

將 替換為要刪除的池的名稱。請注意,這是一個不可逆的操作,所有池中的數(shù)據(jù)將被永久刪除。因此,請謹(jǐn)慎執(zhí)行此命令,并確保已備份重要數(shù)據(jù)。

  1. 確認(rèn)刪除:運行以下命令確認(rèn)池已被刪除:
ceph osd lspools

檢查輸出中是否不再包含已刪除的池。
請注意,刪除池是一個潛在的危險操作,需要謹(jǐn)慎處理。在執(zhí)行刪除操作之前,請確保已備份重要數(shù)據(jù),并確保不再需要該池中的任何數(shù)據(jù)。建議在刪除池之前,仔細(xì)評估并確認(rèn)操作的后果,并參考 Ceph 官方文檔獲取更多詳細(xì)的指導(dǎo)和建議。

在k8s集群內(nèi)使用塊設(shè)備

塊存儲允許單個 Pod 掛載存儲。官網(wǎng)參考文檔:https://rook.io/docs/rook/v1.9/ceph-block.html

創(chuàng)建塊池和StorageClass

  1. 編輯storageclass.yaml
# 指定所使用的API版本,這里使用的是Ceph Rook的API版本
apiVersion: ceph.rook.io/v1
# 指定資源的類型為CephBlockPool,表示創(chuàng)建一個Ceph塊池。
kind: CephBlockPool
# 元數(shù)據(jù)部分,用于定義資源的元數(shù)據(jù)信息。
metadata:
  # 指定資源的名稱為"replicapool",這是創(chuàng)建的Ceph塊池的名稱。
  name: replicapool
  # 指定資源所屬的命名空間為"rook-ceph",命名空間用于對資源進行邏輯隔離和管理。
  namespace: rook-ceph
# 規(guī)格部分,用于定義資源的配置規(guī)格
spec:
  # 指定故障域為"host",表示塊池的數(shù)據(jù)副本將在不同的主機上進行分布,以提高數(shù)據(jù)的容錯性和可用性。
  failureDomain: host
  # 指定塊池的復(fù)制方式為"replicated",表示數(shù)據(jù)將以復(fù)制的方式進行存儲。
  replicated:
    # 指定復(fù)制的副本數(shù)為3,表示每個數(shù)據(jù)塊將被復(fù)制為3個副本。
    size: 3
	# 設(shè)置為true,表示要求每個副本都處于安全狀態(tài),確保數(shù)據(jù)的完整性和可靠性。
    requireSafeReplicaSize: true
---
# 指定所使用的API版本,這里使用的是Kubernetes的存儲API版本。
apiVersion: storage.k8s.io/v1
# 指定資源的類型為StorageClass,表示創(chuàng)建一個存儲類。
kind: StorageClass
# 元數(shù)據(jù)部分,用于定義資源的元數(shù)據(jù)信息。
metadata:
  # 指定資源的名稱為"rook-ceph-block",這是創(chuàng)建的存儲類的名稱。
  name: rook-ceph-block
# 指定存儲類的提供者為"rook-ceph.rbd.csi.ceph.com",表示使用Rook Ceph提供的CSI插件進行存儲。
provisioner: rook-ceph.rbd.csi.ceph.com
# 參數(shù)部分,用于定義存儲類的配置參數(shù)
parameters:
  # 指定集群ID為"rook-ceph",表示使用名為"rook-ceph"的Ceph集群。
  clusterID: rook-ceph # namespace:cluster
  # 指定使用的Ceph塊池為"replicapool",表示存儲數(shù)據(jù)的塊池名稱。
  pool: replicapool
  # 指定存儲的鏡像格式為"2",表示使用Ceph的版本2鏡像格式。
  imageFormat: "2"
  # 指定鏡像特性為"layering",表示啟用鏡像層級特性。
  imageFeatures: layering
  # 指定CSI插件的提供者密鑰名稱為"rook-csi-rbd-provisioner",用于訪問Rook Ceph提供的存儲。
  csi.storage.k8s.io/provisioner-secret-name: rook-csi-rbd-provisioner
  # 指定CSI插件的提供者密鑰所在的命名空間為"rook-ceph"。
  csi.storage.k8s.io/provisioner-secret-namespace: rook-ceph
  # 指定CSI插件的控制器擴展密鑰名稱為"rook-csi-rbd-provisioner"。
  csi.storage.k8s.io/controller-expand-secret-name: rook-csi-rbd-provisioner
  # 指定CSI插件的控制器擴展密鑰所在的命名空間為"rook-ceph"。
  csi.storage.k8s.io/controller-expand-secret-namespace: rook-ceph
  # 指定CSI插件的節(jié)點階段密鑰名稱為"rook-csi-rbd-node"。
  csi.storage.k8s.io/node-stage-secret-name: rook-csi-rbd-node
  # 指定CSI插件的節(jié)點階段密鑰所在的命名空間為"rook-ceph"。
  csi.storage.k8s.io/node-stage-secret-namespace: rook-ceph
  # 指定文件系統(tǒng)類型為"ext4",表示使用ext4文件系統(tǒng)進行掛載。
  csi.storage.k8s.io/fstype: ext4
# 設(shè)置為true,表示允許對該存儲類的卷進行擴展。
allowVolumeExpansion: true
# 指定回收策略為"Delete",表示當(dāng)卷被刪除時,相關(guān)的存儲資源也會被刪除。
reclaimPolicy: Delete
  1. 創(chuàng)建資源
kubectl create -f deploy/examples/csi/rbd/storageclass.yaml

9.云原生存儲之ceph在k8s中應(yīng)用及問題處理,私有云+云原生實戰(zhàn),云原生,ceph,kubernetes
9.云原生存儲之ceph在k8s中應(yīng)用及問題處理,私有云+云原生實戰(zhàn),云原生,ceph,kubernetes
9.云原生存儲之ceph在k8s中應(yīng)用及問題處理,私有云+云原生實戰(zhàn),云原生,ceph,kubernetes
ALLOWVOLUMEEXPANSION是Kubernetes中存儲類(StorageClass)的一個屬性,用于指示該存儲類是否允許卷的擴展(容量增加)。
當(dāng)存儲類的 ALLOWVOLUMEEXPANSION 屬性設(shè)置為 true 時,表示該存儲類允許動態(tài)卷的擴展。這意味著在使用該存儲類創(chuàng)建的卷上,可以通過修改卷的容量來增加其存儲空間。擴展卷的過程可以是在線的,而不需要中斷應(yīng)用程序的運行。
如果存儲類的 ALLOWVOLUMEEXPANSION 屬性設(shè)置為 false 或未設(shè)置(默認(rèn)值為 false),則不允許對使用該存儲類創(chuàng)建的卷進行擴展。在這種情況下,如果需要增加卷的容量,通常需要創(chuàng)建一個新的卷,并將數(shù)據(jù)從舊卷遷移到新卷。
要注意的是,存儲后端必須支持卷的擴展功能,并且相應(yīng)的存儲插件和驅(qū)動程序也必須進行相應(yīng)的配置和支持。因此,在使用 ALLOWVOLUMEEXPANSION 屬性之前,需要確保存儲后端和相關(guān)組件都支持卷擴展操作。
要查看存儲類是否允許卷擴展,可以使用 kubectl describe storageclass <storageclass_name> 命令,并查找 AllowVolumeExpansion 字段的值。

使用存儲

下述操作可直接在kubesphere中可視化操作

  1. 創(chuàng)建PVC資源

9.云原生存儲之ceph在k8s中應(yīng)用及問題處理,私有云+云原生實戰(zhàn),云原生,ceph,kubernetes9.云原生存儲之ceph在k8s中應(yīng)用及問題處理,私有云+云原生實戰(zhàn),云原生,ceph,kubernetes
上述操作生成的資源文件內(nèi)容如下:

# 指定要創(chuàng)建的資源類型為持久卷聲明
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
	# 指定持久卷聲明的名稱為 "rook-ceph-block-pvc"
  name: rook-ceph-block-pvc
  namespace: rook-ceph
  annotations:
    kubesphere.io/creator: admin
    pv.kubernetes.io/bind-completed: 'yes'
    pv.kubernetes.io/bound-by-controller: 'yes'
    volume.beta.kubernetes.io/storage-provisioner: rook-ceph.rbd.csi.ceph.com
    volume.kubernetes.io/storage-provisioner: rook-ceph.rbd.csi.ceph.com
  finalizers:
    - kubernetes.io/pvc-protection
# 指定持久卷聲明的規(guī)格和配置
spec:
  # 指定卷的訪問模式,這里使用了 "ReadWriteOnce",表示該卷可以被單個節(jié)點以讀寫方式掛載。
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      # # 指定需要 10GB 的存儲容量
      storage: 10Gi
  volumeName: pvc-23ae523d-6b0c-423f-b2ed-748a7758d7b9
  # # 指定存儲類的名稱為 "rook-ceph-block"。這將告訴 Kubernetes 使用名為 "rook-ceph-block" 的存儲類來提供持久卷。
  storageClassName: rook-ceph-block
  volumeMode: Filesystem
  1. pod引用PVC
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
    tier: mysql
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: wordpress
        tier: mysql
    spec:
      containers:
        - image: mysql:5.6
          name: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: changeme
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pv-claim

塊存儲映射問題處理

問題現(xiàn)象

參考:https://rook.io/docs/rook/v1.9/ceph-block.html

當(dāng)操作執(zhí)行如下命令:

kubectl create -f deploy/examples/csi/rbd/storageclass.yaml
kubectl create -f mysql.yaml
kubectl create -f wordpress.yaml

上述命令執(zhí)行現(xiàn)象如下:
9.云原生存儲之ceph在k8s中應(yīng)用及問題處理,私有云+云原生實戰(zhàn),云原生,ceph,kubernetes

事件分析

	MountVolume.MountDevice failed for volume "pvc-541330c2-c399-4d33-a6dc-a2e1146ae87d" : rpc error: code = Internal desc = rbd: map failed with error an error (exit status 95) occurred while running rbd args: [--id csi-rbd-node -m 192.168.31.24:6789,192.168.31.20:6789,192.168.31.25:6789 --keyfile=***stripped*** map replicapool/csi-vol-b6def63c-afa0-11ee-a3c0-923efe8ba7cc --device-type krbd --options noudev], rbd error output: rbd: sysfs write failed rbd: map failed: (95) Operation not supported

具體是由于 rbd(RADOS Block Device)映射失敗而導(dǎo)致的。錯誤消息中提到了 “Operation not supported”,這可能是由于以下原因之一引起的:

  1. 內(nèi)核模塊未加載:確保在執(zhí)行 rbd 操作之前,已加載了正確的內(nèi)核模塊。在節(jié)點上執(zhí)行以下命令加載內(nèi)核模塊: modprobe rbd
  2. 缺少依賴軟件包:確保節(jié)點上安裝了必要的軟件包,包括 Ceph 和 RBD 相關(guān)的軟件包。具體所需的軟件包可能因操作系統(tǒng)和安裝方式而異。請參考 Ceph 和 Rook 的官方文檔,查找正確的軟件包依賴關(guān)系并進行安裝。
  3. 內(nèi)核版本不兼容:某些內(nèi)核版本可能不完全支持 rbd 映射功能。嘗試升級或更換到支持的內(nèi)核版本。請參考 Ceph 和 Rook 的官方文檔,了解支持的內(nèi)核版本要求。
  4. 硬件限制:某些硬件環(huán)境可能不支持 rbd 映射操作。確保硬件環(huán)境滿足 rbd 映射的要求。如果使用的是虛擬化環(huán)境,請檢查虛擬化平臺的文檔,確認(rèn)是否支持 rbd 映射。
  5. SELinux 或安全策略限制:如果啟用了 SELinux 或其他安全策略,可能會限制 rbd 映射操作。請檢查安全策略配置,并相應(yīng)地調(diào)整以允許 rbd 映射。

請根據(jù)你的環(huán)境和具體情況逐一檢查這些可能的原因,并采取適當(dāng)?shù)拇胧﹣斫鉀Q問題。如果問題仍然存在,建議參考 Ceph、Rook 和 Kubernetes 相關(guān)的官方文檔和社區(qū)支持資源,以獲取更深入的故障排除和解決方案。

Unable to attach or mount volumes: unmounted volumes=[wordpress-persistent-storage], unattached volumes=[kube-api-access-54dwt wordpress-persistent-storage]: timed out waiting for the condition

這個錯誤消息表明在附加或掛載卷時遇到了問題。錯誤消息中提到了超時等待條件,可能是由于以下原因之一引起的:

  1. 存儲類配置錯誤:檢查所使用的存儲類(StorageClass)配置是否正確。確保存儲類指定了正確的卷插件和參數(shù),并與底層存儲系統(tǒng)兼容。可以通過運行 kubectl describe storageclass 命令來查看存儲類的詳細(xì)信息,并確保其配置正確。
  2. 存儲系統(tǒng)故障:如果底層存儲系統(tǒng)出現(xiàn)故障或不可用,可能導(dǎo)致掛載卷超時。確保存儲系統(tǒng)正常運行,并且與 Kubernetes 集群連接正常。檢查存儲系統(tǒng)的日志和狀態(tài),以確定是否存在任何問題。
  3. 節(jié)點資源不足:如果節(jié)點上的資源(例如 CPU、內(nèi)存、存儲)不足,可能導(dǎo)致掛載卷超時。檢查節(jié)點的資源使用情況,確保節(jié)點具有足夠的資源來處理卷掛載操作。
  4. 網(wǎng)絡(luò)問題:網(wǎng)絡(luò)問題可能導(dǎo)致掛載卷超時。確保網(wǎng)絡(luò)連接正常,并且 Kubernetes 集群中的各個組件可以相互通信。檢查網(wǎng)絡(luò)配置和防火墻設(shè)置,確保沒有阻止卷掛載所需的流量。
  5. 存儲系統(tǒng)性能問題:如果底層存儲系統(tǒng)的性能不足,可能導(dǎo)致掛載卷超時。檢查存儲系統(tǒng)的性能指標(biāo),并確保其能夠處理所需的讀寫操作。

在解決問題之前,建議備份重要數(shù)據(jù),并參考 Kubernetes 和底層存儲系統(tǒng)的官方文檔,以獲取更詳細(xì)的故障排除步驟和支持。此外,查看 Kubernetes 事件日志和存儲系統(tǒng)日志,以獲取更多關(guān)于超時問題的詳細(xì)信息。

0/8 nodes are available: 8 pod has unbound immediate PersistentVolumeClaims.

這個錯誤消息表明在調(diào)度 Pod 時遇到了問題,沒有可用的節(jié)點。錯誤消息中提到有 8 個 Pod 的 PersistentVolumeClaims(PVC)處于未綁定狀態(tài),這可能是由以下原因之一引起的:

  1. 存儲類配置錯誤:檢查所使用的存儲類(StorageClass)配置是否正確。確保存儲類指定的卷插件和參數(shù)與底層存儲系統(tǒng)兼容,并且有足夠的可用存儲容量。如果存儲類配置錯誤,可能導(dǎo)致 PVC 無法綁定到可用的持久卷(PersistentVolume)。
  2. 持久卷不足:如果沒有足夠的可用持久卷來滿足 PVC 的需求,可能導(dǎo)致 PVC 無法綁定。檢查持久卷的狀態(tài)和可用性,確保有足夠的持久卷供應(yīng)給 PVC 使用。
  3. 節(jié)點資源不足:如果節(jié)點上的資源(例如 CPU、內(nèi)存、存儲)不足,可能導(dǎo)致 Pod 無法調(diào)度。檢查節(jié)點的資源使用情況,確保節(jié)點具有足夠的資源來運行 Pod,并滿足 PVC 的需求。
  4. 節(jié)點標(biāo)簽不匹配:如果節(jié)點的標(biāo)簽與 Pod 的調(diào)度要求不匹配,可能導(dǎo)致 Pod 無法調(diào)度到節(jié)點上。檢查節(jié)點的標(biāo)簽和 Pod 的調(diào)度要求,確保它們匹配。
  5. 網(wǎng)絡(luò)問題:網(wǎng)絡(luò)問題可能導(dǎo)致節(jié)點無法與存儲系統(tǒng)通信,從而導(dǎo)致 PVC 無法綁定。確保網(wǎng)絡(luò)連接正常,并且節(jié)點可以訪問存儲系統(tǒng)。
  6. 存儲系統(tǒng)故障:如果底層存儲系統(tǒng)出現(xiàn)故障或不可用,可能導(dǎo)致 PVC 無法綁定。檢查存儲系統(tǒng)的狀態(tài)和日志,以確定是否存在任何問題。

解決此問題的步驟可能包括檢查存儲類配置、持久卷可用性、節(jié)點資源、節(jié)點標(biāo)簽和網(wǎng)絡(luò)連接。此外,查看 Kubernetes 事件日志和存儲系統(tǒng)日志,以獲取更多關(guān)于 PVC 綁定問題的詳細(xì)信息。如果問題仍然存在,建議參考 Kubernetes 和底層存儲系統(tǒng)的官方文檔,以獲取更詳細(xì)的故障排除步驟和支持。

csi-rbdplugin pod日志分析

W0110 10:42:47.457179   30223 rbd_attach.go:226] nbd modprobe failed (an error (exit status 1) occurred while running modprobe args: [nbd]): "modprobe: FATAL: Module nbd not found in directory /lib/modules/3.10.0-862.el7.x86_64\n"

錯誤消息 “modprobe: FATAL: Module nbd not found in directory /lib/modules/3.10.0-862.el7.x86_64” 表明在您的 CentOS 系統(tǒng)中找不到名為 “nbd” 的內(nèi)核模塊。
nbd 是 Network Block Device 的縮寫,它允許通過網(wǎng)絡(luò)連接將遠(yuǎn)程塊設(shè)備映射到本地系統(tǒng)。通常,nbd 模塊應(yīng)該存在于 /lib/modules/<kernel_version> 目錄中,其中 <kernel_version> 是您當(dāng)前使用的內(nèi)核版本。

W0111 01:23:26.200423   43637 util.go:250] kernel 3.10.0-862.el7.x86_64 does not support required features

 W0111 01:23:26.814313   43637 rbd_attach.go:469] ID: 3562 Req-ID: 0001-0009-rook-ceph-0000000000000005-b22dcee8-b01d-11ee-879c-dab0780880f4 rbd: map error an error (exit status 95) occurred while running rbd args: [--id csi-rbd-node -m 192.168.31.25:6789,192.168.31.24:6789,192.168.31.20:6789 --keyfile=***stripped*** map replicapool/csi-vol-b22dcee8-b01d-11ee-879c-dab0780880f4 --device-type krbd --options noudev], rbd output: rbd: sysfs write failed

 rbd: map failed: (95) Operation not supported

錯誤消息 “rbd: map failed,kernel 3.10.0-862.el7.x86_64 does not support required features” 表明您的 CentOS 操作系統(tǒng)內(nèi)核版本不支持所需的功能。
這個問題通常發(fā)生在使用 RBD (Rados Block Device) 時,該設(shè)備需要在內(nèi)核中啟用一些特定的功能。您的內(nèi)核版本可能過舊,不支持所需的功能。
解決此問題的一種方法是升級您的內(nèi)核版本。

問題小結(jié)

操作系統(tǒng)內(nèi)核版本過低,內(nèi)核中沒有RBD內(nèi)核模塊,兩種解決方案:(推薦安裝rdb內(nèi)核)

  1. 升級內(nèi)核(影響大)
  2. 安裝rdb內(nèi)核模塊(影響?。?/strong>

CentOS 上升級內(nèi)核可能對運行在其上的 Kubernetes (K8s) 環(huán)境產(chǎn)生一些影響。以下是一些可能的影響和注意事項:

  1. 容器運行時兼容性:在升級內(nèi)核之前,您需要確保所選的內(nèi)核版本與您使用的容器運行時兼容。不同的容器運行時可能對內(nèi)核版本有特定的要求。您應(yīng)該查看容器運行時的文檔或支持頁面,以了解其支持的內(nèi)核版本范圍。
  2. 內(nèi)核模塊和功能:升級內(nèi)核可能會導(dǎo)致某些內(nèi)核模塊或功能的更改或移除。如果您的 Kubernetes 集群依賴于特定的內(nèi)核模塊或功能,您需要確保新的內(nèi)核版本仍然支持這些要求。
  3. 容器網(wǎng)絡(luò):升級內(nèi)核可能會對容器網(wǎng)絡(luò)產(chǎn)生一些影響。某些網(wǎng)絡(luò)插件或驅(qū)動程序可能需要與特定的內(nèi)核版本配合使用。在升級內(nèi)核之前,您應(yīng)該檢查您使用的容器網(wǎng)絡(luò)插件或驅(qū)動程序的兼容性和支持情況。
  4. 安全性和性能改進:升級內(nèi)核通常會帶來安全性和性能方面的改進。新的內(nèi)核版本可能修復(fù)了一些已知的漏洞或改進了系統(tǒng)性能。這些改進可能會對您的 Kubernetes 集群產(chǎn)生積極的影響,提供更好的安全性和性能。
  5. 測試和驗證:在升級內(nèi)核之前,建議您在非生產(chǎn)環(huán)境中進行測試和驗證。您可以創(chuàng)建一個與生產(chǎn)環(huán)境相似的測試環(huán)境,并在該環(huán)境中進行內(nèi)核升級。這樣可以幫助您發(fā)現(xiàn)潛在的問題并解決它們,以確保升級過程順利進行。

在進行任何重要的系統(tǒng)更改之前,包括內(nèi)核升級,都建議您備份重要的數(shù)據(jù)和配置,以便在需要時進行恢復(fù)。此外,您還應(yīng)該參考 CentOS 和 Kubernetes 的官方文檔,以獲取更詳細(xì)的指導(dǎo)和建議,以確保您的升級過程正確無誤。

CentOS 7 編譯安裝 nbd 模塊

CentOS 7 編譯安裝 nbd 模塊-CSDN博客
CentOS 7 安裝 nbd - OrcHome

nbd內(nèi)核模塊介紹

“nbd” 是 Network Block Device(網(wǎng)絡(luò)塊設(shè)備)的縮寫,它是一種允許通過網(wǎng)絡(luò)連接將遠(yuǎn)程塊設(shè)備映射到本地系統(tǒng)的內(nèi)核模塊。它提供了一種將遠(yuǎn)程存儲設(shè)備(如硬盤、分區(qū)或鏡像文件)映射為本地塊設(shè)備的方法。
通過使用 nbd 內(nèi)核模塊,您可以在本地系統(tǒng)上像使用本地塊設(shè)備一樣使用遠(yuǎn)程存儲設(shè)備。這對于需要遠(yuǎn)程訪問和操作存儲設(shè)備的應(yīng)用程序和系統(tǒng)非常有用。
一些常見的用例包括:

  • 在分布式存儲系統(tǒng)中使用 nbd 將遠(yuǎn)程存儲設(shè)備映射到本地系統(tǒng),以實現(xiàn)高可用性和容錯性。
  • 在虛擬化環(huán)境中,將遠(yuǎn)程存儲設(shè)備映射到虛擬機實例,以實現(xiàn)共享存儲和遷移虛擬機的能力。
  • 在云環(huán)境中,將遠(yuǎn)程存儲設(shè)備映射到云實例,以實現(xiàn)持久化存儲和數(shù)據(jù)共享。

要使用 nbd 內(nèi)核模塊,您需要加載該模塊到內(nèi)核中,并使用相應(yīng)的工具配置和管理映射的遠(yuǎn)程塊設(shè)備。具體操作和配置可能因操作系統(tǒng)和使用的工具而有所不同。
請注意,nbd 內(nèi)核模塊的可用性和功能取決于您的操作系統(tǒng)和內(nèi)核版本。某些發(fā)行版可能已經(jīng)將 nbd 內(nèi)核模塊包含在默認(rèn)內(nèi)核中,而其他發(fā)行版可能需要手動安裝和配置。
在 Linux 系統(tǒng)中,nbd 內(nèi)核模塊通常位于 /lib/modules/<kernel_version>/kernel/drivers/block/nbd.ko 路徑下,其中 <kernel_version> 是您當(dāng)前使用的內(nèi)核版本。
如果您需要使用 nbd 內(nèi)核模塊,請確保您的系統(tǒng)具有適當(dāng)?shù)臋?quán)限,并按照操作系統(tǒng)和工具的文檔進行安裝和配置。

安裝 nbd 模塊

  1. 確認(rèn)nbd內(nèi)核模塊是否安裝
[root@localhost ~]# modprobe nbd
modprobe: FATAL: Module nbd not found.
  1. 查看 linux 版本
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)   #查看系統(tǒng)版本
 
[root@localhost ~]# uname -r         #查看linux的內(nèi)核信息
3.10.0-957.el7.x86_64
  1. 安裝相關(guān)包
yum install kernel-devel kernel-headers elfutils-libelf-devel gcc+ gcc-c++ -y
  1. 下載內(nèi)核包

找對應(yīng)的kernel源碼包,一般yum都是升級到最新的,因此到 http://vault.centos.org/ 的整個7系列的最新版本目錄下去找:

wget https://vault.centos.org/7.9.2009/os/Source/SPackages/kernel-3.10.0-1160.el7.src.rpm

# 根據(jù)自己的系統(tǒng)版本去下載
# 7.9.2009                為 redhat-release 系統(tǒng)版本
# 3.10.0-1160.102.1.el7   為 uname -r 內(nèi)核信息
  1. 編譯

安裝bzip2

sudo yum install bzip2

開始編譯

rpm -ivh kernel-3.10.0-957.el7.src.rpm
 
cd ~/rpmbuild/SOURCES/

# 驗證文件,如果顯示的類型不是 "XZ compressed data",則可能是文件本身損壞或者文件類型不正確。
file linux-3.10.0-862.el7.tar.xz

#解壓 -C 指定目錄 /usr/src/kernels
tar Jxvf linux-3.10.0-957.el7.tar.xz -C /usr/src/kernels/
# 注意,這里使用的是大寫的 J 選項,而不是之前的小寫 j 選項。J 選項告訴 tar 命令使用 xz 工具來解壓縮文件。
 
#解壓后生成兩個文件
ll /usr/src/kernels/
drwxr-xr-x. 22 root root 4096 96 08:07 3.10.0-957.27.2.el7.x86_64
drwxrwxr-x. 24 root root 4096 96 08:17 linux-3.10.0-957.el7

###############################
cd /usr/src/kernels/linux-3.10.0-957.el7
 
#刪除所有編譯生成文件,內(nèi)核配置文件
make mrproper
 
cp /usr/src/kernels/3.10.0-957.27.2.el7.x86_64/Module.symvers ./
 
cp /boot/config-3.10.0-957.el7.x86_64 ./.config
 
#備份當(dāng)前.config文件為.config.old
make oldconfig
 
make prepare
 
make scripts
  1. 編譯

修改配置

vi drivers/block/nbd.c

#######################
// sreq.cmd_type = REQ_TYPE_SPECIAL;
sreq.cmd_type = 7;  #修改為7

編譯

make CONFIG_BLK_DEV_NBD=m M=drivers/block

如果報以下錯誤:

make[1]: *** No rule to make target tools/objtool/objtool', needed bydrivers/block/floppy.o'. Stop.

則執(zhí)行:

make CONFIG_BLK_DEV_NBD=m M=drivers/block CONFIG_STACK_VALIDATION=
  1. 復(fù)制文件
cp drivers/block/nbd.ko /lib/modules/$(uname -r)/kernel/drivers/block/

depmod -a
  1. 驗證nbd是否安裝成功
modinfo nbd

輸出

filename:       /lib/modules/3.10.0-1160.102.1.el7.x86_64/kernel/drivers/block/nbd.ko
license:        GPL
description:    Network Block Device
retpoline:      Y
rhelversion:    7.9
srcversion:     171F87FBEBE350C33C34226
depends:        
vermagic:       3.10.0 SMP mod_unload modversions 
parm:           nbds_max:number of network block devices to initialize (default: 16) (int)
parm:           max_part:number of partitions per device (default: 0) (int)
parm:           debugflags:flags for controlling debug output (int)

重新使用塊存儲驗證

  1. 重建驅(qū)動程序
kubectl delete po -l app=csi-cephfsplugin-provisioner -n rook-ceph
kubectl delete po -l app=csi-rbdplugin-provisioner -n rook-ceph
kubectl delete po -l app=csi-rbdplugin -n rook-ceph
kubectl delete po -l app=csi-cephfsplugin -n rook-ceph
  1. 查看csi-rbdplugin
 W0111 05:13:24.427112   65526 util.go:250] kernel 3.10.0-862.el7.x86_64 does not support required features

 W0111 05:13:24.427606   65526 rbd_attach.go:241] kernel version "3.10.0-862.el7.x86_64" doesn't support cookie feature

最終確認(rèn)是centos內(nèi)核不支持,建議使用centos8或者升級centos,建議依據(jù)如下:

升級centos驗證

先升級CentOS 操作系統(tǒng)驗證,你可以按照以下步驟進行操作:

  1. 備份數(shù)據(jù):在進行任何操作之前,強烈建議你備份重要的數(shù)據(jù)。升級過程可能會對系統(tǒng)進行更改,因此備份可以保護你的數(shù)據(jù)免受意外損失。
  2. 更新當(dāng)前系統(tǒng):在升級之前,確保你的當(dāng)前系統(tǒng)已經(jīng)是最新的狀態(tài)。運行以下命令來更新已安裝的軟件包:
sudo yum update -y

這將更新系統(tǒng)上的所有已安裝軟件包到最新版本。

  1. 安裝升級工具:CentOS 提供了一個名為 yum-utils 的軟件包,其中包含了用于升級 CentOS 的工具。如果你的系統(tǒng)上沒有安裝該軟件包,可以通過以下命令進行安裝:
sudo yum install yum-utils
  1. 運行系統(tǒng)升級:一旦你安裝了 yum-utils 工具,你可以使用 yum 命令來執(zhí)行實際的系統(tǒng)升級。運行以下命令來升級 CentOS:
sudo yum upgrade

這將檢查可用的更新并升級系統(tǒng)上的軟件包。根據(jù)系統(tǒng)的大小和網(wǎng)絡(luò)速度,升級過程可能需要一些時間。

  1. 重啟系統(tǒng):升級完成后,建議重新啟動系統(tǒng)以應(yīng)用所有更改。使用以下命令重新啟動系統(tǒng):
sudo reboot

# 重啟后內(nèi)核才會重新加載
  1. 驗證升級:系統(tǒng)重新啟動后,可以通過運行以下命令來驗證 CentOS 的版本:
[root@ksnode25 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

[root@ksnode25 ~]# uname -r
3.10.0-1160.105.1.el7.x86_64

[root@ksnode25 ~]# modprobe nbd
modprobe: FATAL: Module nbd not found.

升級后nbd需要重新安裝
9.云原生存儲之ceph在k8s中應(yīng)用及問題處理,私有云+云原生實戰(zhàn),云原生,ceph,kubernetes

重新運行發(fā)現(xiàn)運行正常

kubectl create -f mysql.yaml
kubectl create -f wordpress.yaml

9.云原生存儲之ceph在k8s中應(yīng)用及問題處理,私有云+云原生實戰(zhàn),云原生,ceph,kubernetes
查看rdb映射情況,進入mon pod終端執(zhí)行:rbd showmapped
9.云原生存儲之ceph在k8s中應(yīng)用及問題處理,私有云+云原生實戰(zhàn),云原生,ceph,kubernetes
進入升級centos機器查看dev設(shè)備信息如下,說明驗證成功
9.云原生存儲之ceph在k8s中應(yīng)用及問題處理,私有云+云原生實戰(zhàn),云原生,ceph,kubernetes

驗證小結(jié)

升級centos后部署成功,由于centos不在維護,生產(chǎn)環(huán)境建議更換操作系統(tǒng):
9.云原生存儲之ceph在k8s中應(yīng)用及問題處理,私有云+云原生實戰(zhàn),云原生,ceph,kubernetes

  1. Pacific(16.2.z)支持centos7和8
  2. ceph客戶端發(fā)現(xiàn)只有el8版本,https://mirrors.aliyun.com/ceph/rpm-16.2.10/el8/x86_64/
  3. CentOS Linux停止維護,推出了CentOS Stream項目
  4. 查看rook-ceph-tools系統(tǒng)版本:CentOS Stream release 8

總結(jié):綜合上圖可選擇centos8和Ubuntu20.04替換centos7,但是生產(chǎn)環(huán)境不建議使用CentOS Linux(停止維護),也不建議使用CentOS Stream(無法保證系統(tǒng)的穩(wěn)定性與兼容性),老項目不建議更換操作系統(tǒng)穩(wěn)定運行就行。新項目可以考慮使用其他穩(wěn)定操作系統(tǒng)。

操作系統(tǒng)選擇考慮

CentOS 7 停止維護后如何平替你的生產(chǎn)系統(tǒng)?
從習(xí)慣和兼容性考慮,CentOS Linux 和 Rocky Linux。您可能想知道Rocky Linux是否適合您。如果您依賴CentOS而不想運行CentOS Stream或為RHL付費,那么當(dāng)穩(wěn)定版本可用時,您可以考慮Rocky Linux 。
rockylinux安裝包下載_開源鏡像站-阿里云
重慶大學(xué)開源軟件鏡像站
CentOS Linux 和 Rocky Linux 都是基于 RHEL(Red Hat Enterprise Linux)的操作系統(tǒng),它們有很多相似之處,但也有一些區(qū)別。

  1. 起源和維護:
    • CentOS Linux:CentOS Linux 是一個由社區(qū)維護的開源操作系統(tǒng),它是基于 RHEL 的重構(gòu)版本。在過去,CentOS Linux 通過重新編譯 RHEL 的源代碼來創(chuàng)建一個免費的替代品,并提供長期支持。
    • Rocky Linux:Rocky Linux 是由 CentOS 創(chuàng)始人之一創(chuàng)建的一個社區(qū)驅(qū)動的企業(yè)級操作系統(tǒng)。它的目標(biāo)是提供一個免費、開源的替代方案,以填補 CentOS Linux 停止維護的空白。
  2. 繼承和兼容性:
    • CentOS Linux:CentOS Linux 的目標(biāo)是與 RHEL 完全兼容,并提供與 RHEL 相同的功能和特性。它通常會在 RHEL 發(fā)布后的一段時間內(nèi)推出相應(yīng)的更新,以確保與 RHEL 的兼容性。
    • Rocky Linux:Rocky Linux 也是基于 RHEL 的代碼構(gòu)建的,旨在提供與 RHEL 完全兼容的功能和特性。它的設(shè)計目標(biāo)是與 CentOS Linux 8 的二進制兼容,以便用戶可以平滑地從 CentOS Linux 遷移到 Rocky Linux。
  3. 社區(qū)支持:
    • CentOS Linux:CentOS Linux 依賴于社區(qū)支持,用戶可以通過郵件列表、論壇和社區(qū)文檔等途徑獲取幫助。在過去,CentOS 社區(qū)一直提供了廣泛的支持和資源。
    • Rocky Linux:Rocky Linux 同樣依賴于社區(qū)支持,它的目標(biāo)是建立一個活躍的社區(qū),提供用戶支持和貢獻。

總的來說,CentOS Linux 和 Rocky Linux 在目標(biāo)和理念上非常相似,都致力于提供一個免費、開源的 RHEL 替代方案。主要區(qū)別在于起源和維護方面,以及社區(qū)的背景和發(fā)展。如果你已經(jīng)在使用 CentOS Linux,Rocky Linux 可能是一個平滑的過渡選擇,因為它的設(shè)計目標(biāo)是與 CentOS Linux 8 兼容。無論選擇哪個操作系統(tǒng),都需要評估其社區(qū)支持、更新和兼容性等因素,以選擇適合你需求的操作系統(tǒng)。

Rocky 8替換k8s節(jié)點驗證

不管是將centos7升級還是替換為Rocky 8,都要考慮對k8s集群的影響,防止操作將k8s搞崩潰,小編這兒推薦一種做法:文章來源地址http://www.zghlxwxcb.cn/news/detail-819091.html

  1. 驗證可行版本的centos后,將其加入k8s集群
  2. 保證可行版本的centos集群有,etcd、控制面板、worker節(jié)點
  3. 下架以前的老節(jié)點

到了這里,關(guān)于9.云原生存儲之ceph在k8s中應(yīng)用及問題處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 云原生Kubernetes:K8S存儲卷

    云原生Kubernetes:K8S存儲卷

    目錄 一、理論 1.存儲卷 2.emptyDir 存儲卷 3.hostPath卷 4.NFS共享存儲 5.PVC 和 PV 6.靜態(tài)創(chuàng)建PV 7.動態(tài)創(chuàng)建PV 二、實驗 ?1.emptyDir 存儲卷 2.hostPath卷 3.NFS共享存儲 4.靜態(tài)創(chuàng)建PV 5.動態(tài)創(chuàng)建PV 三、問題 1.生成pod一直pending 2.shoumount -e未顯示共享目錄 3.靜態(tài)創(chuàng)建pv 報錯 4.使用 Deployment 來創(chuàng)建

    2024年02月07日
    瀏覽(33)
  • K8s 持久化存儲有幾種方式?一文了解本地盤/CSI 外接存儲/K8s 原生存儲的優(yōu)缺點

    K8s 持久化存儲有幾種方式?一文了解本地盤/CSI 外接存儲/K8s 原生存儲的優(yōu)缺點

    當(dāng)今云原生環(huán)境中,Kubernetes(K8s)已成為既定的容器編排工具。隨著 K8s 的普及,存儲也成為 K8s 用戶關(guān)注的一個重要問題:為了滿足不同的場景需求,K8s 可以支持基于不同架構(gòu)的多種存儲方案。這些方案間有什么區(qū)別?用戶應(yīng)如何選擇? 本文將從架構(gòu)角度出發(fā),詳細(xì)介紹本

    2024年02月10日
    瀏覽(19)
  • 云原生之容器編排實踐-在K8S集群中使用Registry2搭建私有鏡像倉庫

    云原生之容器編排實踐-在K8S集群中使用Registry2搭建私有鏡像倉庫

    基于前面搭建的3節(jié)點 Kubernetes 集群,今天我們使用 Registry2 搭建私有鏡像倉庫,這在鏡像安全性以及離線環(huán)境下運維等方面具有重要意義。 Note: 由于是測試環(huán)境,以下創(chuàng)建了一個 local-storage 的 StorageClass ,并使用本地磁盤的方式創(chuàng)建使用 PV ,實際建議使用 NFS 。 共用到了三臺

    2024年02月19日
    瀏覽(22)
  • 【云原生】K8S存儲卷:PV、PVC詳解

    【云原生】K8S存儲卷:PV、PVC詳解

    容器磁盤上的文件的生命周期是短暫的,這就使得在容器中運行重要應(yīng)用時會出現(xiàn)一些問題。首先,當(dāng)容器崩潰時,kubelet 會重啟它,但是容器中的文件將丟失——容器以干凈的狀態(tài)(鏡像最初的狀態(tài))重新啟動。其次,在Pod中同時運行多個容器時,這些容器之間通常需要共

    2024年02月12日
    瀏覽(21)
  • 【云原生-Kubernetes篇】K8s的存儲卷/數(shù)據(jù)卷+PV與PVC

    【云原生-Kubernetes篇】K8s的存儲卷/數(shù)據(jù)卷+PV與PVC

    容器部署過程中一般有以下三種數(shù)據(jù): ? 啟動時需要的 初始數(shù)據(jù) :例如配置文件 (init container) ? 啟動過程中產(chǎn)生的 臨時數(shù)據(jù) :該臨時數(shù)據(jù)需要多個容器間共享 ? 啟動過程中產(chǎn)生的 持久化數(shù)據(jù) :例如MySQL的data目錄 (業(yè)務(wù)數(shù)據(jù)–很重要) 而容器中的文件在磁盤上是 臨時

    2024年02月05日
    瀏覽(20)
  • 【云原生、k8s】管理Kubernetes應(yīng)用搭建與部署

    官方提供Kubernetes部署3種方式 (一)minikube Minikube是一個工具,可以在本地快速運行一個單點的Kubernetes,嘗試Kubernetes或日常開發(fā)的用戶使用。不能用于生產(chǎn)環(huán)境。 官方文檔:https://kubernetes.io/docs/setup/minikube/ (二)二進制包 從官方下載發(fā)行版的二進制包,手動部署每個組件,

    2024年01月21日
    瀏覽(122)
  • 【云原生,k8s】Helm應(yīng)用包管理器介紹

    【云原生,k8s】Helm應(yīng)用包管理器介紹

    目錄 一、為什么需要Helm? (一)Helm介紹 (二)Helm有3個重要概念: (三)Helm特點 二、Helm V3變化 (一)架構(gòu)變化 (二)自動創(chuàng)建名稱空間 三、Helm應(yīng)用包管理器部署 1、部署Helm客戶端工具 2、Helm常用命令 3、配置國內(nèi)的Chart倉庫 4、使用chart部署一個Nginx應(yīng)用 5、使用chart部

    2024年02月12日
    瀏覽(25)
  • 后端SpringBoot應(yīng)用向云原生K8S平臺遷移

    后端SpringBoot應(yīng)用向云原生K8S平臺遷移

    傳統(tǒng)后端Java Spring單體架構(gòu)在向微服務(wù)架構(gòu)升級的過程中,我們引入了Spring Cloud(Netflex、Alibaba等)框架,Spring Cloud幫我們解決了分布式服務(wù)的注冊發(fā)現(xiàn)、服務(wù)的動態(tài)配置等等。以目前國內(nèi)比較流行的Spring Cloud Alibaba為例,我們需要在我們的代碼中集成Spring Cloud Alibaba的相關(guān)依

    2024年02月13日
    瀏覽(21)
  • 云原生Kubernetes:簡化K8S應(yīng)用部署工具Helm

    云原生Kubernetes:簡化K8S應(yīng)用部署工具Helm

    目錄 一、理論 1.HELM ?編輯 2.部署HELM2 3.部署HELM3(2to3方式) 4.部署HELM3(單獨安裝) 二、實驗 1.部署 HELM2 2.部署HELM3(2to3方式) 3.部署HELM3(單獨安裝) 三、問題 1.api版本過期 2.helm初始化報錯 3.pod狀態(tài)為ImagePullBackOff 4.helm?命令顯示?no repositories to show?的錯誤 5.Helm安裝報錯

    2024年02月07日
    瀏覽(103)
  • 云上攻防-云原生篇&K8s安全&Config泄漏&Etcd存儲&Dashboard鑒權(quán)&Proxy暴露

    云上攻防-云原生篇&K8s安全&Config泄漏&Etcd存儲&Dashboard鑒權(quán)&Proxy暴露

    如上圖所示:etcd服務(wù)是運行在master節(jié)點上的,master節(jié)點上查看該服務(wù) 默認(rèn)通過證書認(rèn)證,主要存放節(jié)點的數(shù)據(jù),如一些token和證書。 當(dāng)然,初始安全情況下,該服務(wù)是安全的(2379不對外開放,本地可訪問),下面三種主要是配置問題 配置文件:/etc/kubernetes/manifests/etcd.yaml 注釋

    2024年02月08日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包