成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

K8S 經(jīng)典實(shí)戰(zhàn)案例:NFS+StorageClass+PV/PVC+Deployment

運(yùn)維
本篇文章分享一下在 Kubernetes (K8s) 中搭建 NFS 存儲(chǔ),以及通過 Deployment 使用這些存儲(chǔ)卷的完整流程。

本篇文章分享一下在 Kubernetes (K8s) 中搭建 NFS 存儲(chǔ),并實(shí)現(xiàn) PersistentVolume (PV)、PersistentVolumeClaim (PVC)、動(dòng)態(tài)存儲(chǔ)卷StorageClass,以及通過 Deployment 使用這些存儲(chǔ)卷的完整流程,可以按照以下步驟進(jìn)行。

實(shí)驗(yàn)步驟:

  • 配置 NFS 服務(wù)器
  • 創(chuàng)建 StorageClass
  • 創(chuàng)建 PV
  • 創(chuàng)建 PVC
  • 創(chuàng)建 Deployment,并掛載 PVC 到應(yīng)用

掛載驗(yàn)證實(shí)驗(yàn)架構(gòu)圖

圖片圖片

步驟 1: 配置 NFS 服務(wù)器

首先,在 Kubernetes 集群外部的服務(wù)器上,我們需要搭建一個(gè)后端存儲(chǔ):NFS 服務(wù)器。

NFS服務(wù)器IP地址:10.0.0.103

(1) 安裝 NFS 服務(wù)

yum install -y nfs-utils

(2) 創(chuàng)建共享目錄

mkdir -p /data/nfs

(3) 配置 NFS 共享目錄

編輯 /etc/exports 文件以設(shè)置 NFS 共享目錄。

vim /etc/exports

在文件中添加以下行:

/data/nfs *(rw,sync,no_subtree_check)

將 /data/nfs 目錄以讀寫(rw)方式對(duì)所有客戶端(*)共享。

(4) 啟動(dòng) NFS 服務(wù)

啟動(dòng)并將NFS服務(wù)設(shè)置開機(jī)自啟

systemctl enable --now nfs-server

(5) 導(dǎo)出共享目錄

使共享目錄立即生效:

exportfs -a
 showmount -e

(6) 配置防火墻

如果啟用了防火墻,需要允許 NFS 服務(wù)的相關(guān)端口:

firewall-cmd --per --add-service=nfs
firewall-cmd --per --add-service=mountd
firewall-cmd --per --add-service=rpc-bind
firewall-cmd --reload

步驟 2: 配置StorageClass

在 Kubernetes 中,我們將使用 StorageClass 來動(dòng)態(tài)配置存儲(chǔ)卷。通過 PVC 綁定現(xiàn)有的 NFS 存儲(chǔ)。

(1) 創(chuàng)建 StorageClass 配置

創(chuàng)建一個(gè)名為 nfs-storage-class.yaml 的文件,內(nèi)容如下:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-storage-class
provisioner: kubernetes.io/no-provisioner  # NFS 不需要?jiǎng)討B(tài) provisioner
reclaimPolicy: retain  # 默認(rèn)值是 Delete
volumeBindingMode: WaitForFirstConsumer   # 等待 Pod 使用 PVC 時(shí)才綁定 PV,默認(rèn)使用 Immediate 模式:立即綁定

(2) 應(yīng)用 StorageClass 配置

kubectl apply -f nfs-storage-class.yaml

檢查StorageClass狀態(tài)

[root@k8s-master data]# kubectl get storageclass
NAME                PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
nfs-storage-class   kubernetes.io/no-provisioner   Delete          WaitForFirstConsumer   false                  14s

步驟 3: 創(chuàng)建 PV

創(chuàng)建一個(gè) PersistentVolume (PV),將它指向 NFS 共享的目錄。

(1) 創(chuàng)建 PV 配置文件

創(chuàng)建一個(gè) nfs-pv.yaml 文件,內(nèi)容如下:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
spec:
  capacity:
    storage: 10Gi  # 定義 PV 的存儲(chǔ)容量
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany  # 允許多個(gè) Pod 同時(shí)訪問此 PV
  persistentVolumeReclaimPolicy: Retain  # 釋放 PVC 后保留 PV 數(shù)據(jù)
  storageClassName: nfs-storage-class  # 與 StorageClass 名稱一致
  nfs:
    path: /data/nfs  # NFS 共享目錄的路徑
    server: 10.0.0.103  # 替換為實(shí)際的 NFS 服務(wù)器 IP

(2) 應(yīng)用 PV 配置

kubectl apply -f nfs-pv.yaml

檢查 PV 的狀態(tài):

[root@k8s-master data]# kubectl get pv
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS        CLAIM            STORAGECLASS        REASON   AGE
nfs-pv   5Gi        RWX            Retain           Available                      nfs-storage-class            5s

如果 PV 配置正確,它應(yīng)該處于 Available 狀態(tài)。

步驟 4: 創(chuàng)建PVC

創(chuàng)建一個(gè) PersistentVolumeClaim (PVC),它請(qǐng)求使用 NFS 存儲(chǔ)。

(1) 創(chuàng)建 PVC 配置文件

創(chuàng)建一個(gè) nfs-pvc.yaml 文件,內(nèi)容如下:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
spec:
  accessModes:
    - ReadWriteMany  # 允許多個(gè) Pod 同時(shí)訪問
  volumeMode: Filesystem
  resources:
    requests:
      storage: 3Gi  # 請(qǐng)求的存儲(chǔ)容量,不能大于PV容量
  storageClassName: nfs-storage-class  # 與 StorageClass 名稱一致

(2) 應(yīng)用 PVC 配置

應(yīng)用 PVC 配置文件:

kubectl apply -f nfs-pvc.yaml

檢查 PVC 的狀態(tài):

[root@k8s-master data]# kubectl get pvc
NAME      STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS        AGE
nfs-pvc   Pending                                      nfs-storage-class   4m30s

【溫馨提示】由于在聲明StorageClass時(shí),將volumeBindingMode設(shè)置為WaitForFirstConsumer,等待 Pod 使用 PVC 時(shí)才綁定 PV,所以現(xiàn)在的PVC是Pending狀態(tài),沒有綁定對(duì)應(yīng)的Pod。

如果volumeBindingMode設(shè)置為Immediate,則會(huì)立即綁定,顯示為Bound。

步驟 5: 掛載 PVC

創(chuàng)建一個(gè) Deployment,并將 PVC 掛載到 Pod 中。

(1) 創(chuàng)建 Deployment 配置文件

創(chuàng)建一個(gè)名為 nginx-deployment.yaml 的文件,內(nèi)容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1  # 部署 1 個(gè)副本(Pod)
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: docker.m.daocloud.io/nginx:1.25
          volumeMounts:
            - mountPath: /usr/share/nginx/html  # 將 PVC 掛載到此目錄
              name: nfs-volume
      volumes:
        - name: nfs-volume
          persistentVolumeClaim:
            claimName: nfs-pvc  # 掛載 PVC

(2) 應(yīng)用 Deployment 配置

kubectl apply -f nginx-deployment.yaml

(3) 再次檢查PVC狀態(tài)

[root@k8s-master data]# kubectl get pvc
NAME      STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS        AGE
nfs-pvc   Bound    nfs-pv   5Gi        RWX            nfs-storage-class   10m

此時(shí)可以看到已經(jīng)是Bound狀態(tài),說明已經(jīng)和Pod產(chǎn)生了關(guān)聯(lián)。

(4) 檢查 Pod 狀態(tài)

使用以下命令檢查 Pod 狀態(tài):

[root@k8s-master data]# kubectl get pod 
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-645c47fd8b-sjv5m   1/1     Running   0          8m35s

確保 Pod 正在運(yùn)行并沒有錯(cuò)誤。

【溫馨提示】如果使用NFS作為后端存儲(chǔ),需要在每個(gè)節(jié)點(diǎn)上安裝NFS客戶端,不然Pod無法連接NFS,導(dǎo)致創(chuàng)建Pod失敗。

步驟 6: 驗(yàn)證掛載

驗(yàn)證 Nginx Pod 是否正確掛載了 NFS 存儲(chǔ)。

(1) 進(jìn)入 Pod 檢查掛載

首先,通過 kubectl exec 命令進(jìn)入 Pod,檢查 /usr/share/nginx/html 目錄,看看是否已掛載 NFS 存儲(chǔ)

[root@k8s-master data]# kubectl exec -it nginx-deployment-645c47fd8b-sjv5m -- /bin/bash 
root@nginx-deployment-645c47fd8b-sjv5m:/# ls /usr/share/nginx/html
kube-system-es-pv-claim-pvc-ef2cc9a4-d836-49fe-8d30-b9c98238f5b5
root@nginx-deployment-645c47fd8b-sjv5m:/#

如果一切正常,你應(yīng)該能夠看到 NFS 存儲(chǔ)中的內(nèi)容。如果是空的,那就意味著 Nginx Pod 已經(jīng)成功掛載了 NFS 存儲(chǔ)卷。

(2) 測(cè)試驗(yàn)證

測(cè)試:給index.html文件增加內(nèi)容

root@nginx-deployment-645c47fd8b-sjv5m:/usr/share/nginx/html# echo  "hello nginx" > index.html

驗(yàn)證:進(jìn)入后端NFS掛載目錄查看:

[root@harbor ~]# cd /data/nfs
[root@harbor nfs]# ls
index.html  kube-system-es-pv-claim-pvc-ef2cc9a4-d836-49fe-8d30-b9c98238f5b5
[root@harbor nfs]# cat index.html 
hello nginx

可以看到在Pod里面創(chuàng)建的數(shù)據(jù)已經(jīng)存儲(chǔ)到NFS存儲(chǔ)中。

至此,整個(gè)持久化存儲(chǔ)的環(huán)境已經(jīng)搭建完成。

責(zé)任編輯:趙寧寧 來源: 運(yùn)維李哥不背鍋
相關(guān)推薦

2023-09-18 14:34:07

Kubernetes云原生

2023-09-13 09:02:22

PVPVC存儲(chǔ)

2021-05-07 14:03:36

大數(shù)據(jù)存儲(chǔ)接口CSI

2023-09-06 08:12:04

k8s云原生

2021-08-05 07:28:26

K8sNFS ProvisiSubdir

2021-07-28 10:10:57

K8SMount PVCPod

2022-10-10 12:54:00

Flink運(yùn)維

2023-11-06 01:17:25

主機(jī)容器選項(xiàng)

2024-02-01 09:48:17

2022-04-22 13:32:01

K8s容器引擎架構(gòu)

2023-09-08 08:09:12

k8sservice服務(wù)

2023-02-27 07:40:00

2023-11-06 07:16:22

WasmK8s模塊

2024-06-18 13:22:42

Nginx云原生Kubernetes

2023-11-15 13:44:00

k8s-域名日志

2023-11-27 13:54:00

kubernetes高可用

2023-03-06 07:19:50

2023-09-15 08:00:20

Ingress網(wǎng)關(guān)Istio

2023-03-03 07:54:21

2022-11-08 08:55:31

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲精品一区中文字幕 | 国产免费黄网 | 日本成人福利 | 中文字幕一区二区三区在线观看 | 欧美精品成人一区二区三区四区 | 国产精品美女久久久久久免费 | 国产精品久久久久久影视 | 天天久久| 一区二区三区在线播放 | 日本高清视频在线播放 | 亚洲一区二区三 | 色姑娘av | 国产a一区二区 | 盗摄精品av一区二区三区 | 婷婷久久一区 | 免费av毛片 | 精品粉嫩aⅴ一区二区三区四区 | 3级毛片| 欧美日日 | 欧美日韩黄色一级片 | 免费国产一区 | 中文字幕成人 | 久久成人在线视频 | 一级欧美| 色资源站| 男女免费网站 | 午夜精品久久久久久久久久久久 | 久久免费电影 | 亚洲精品日韩视频 | 一区二区三区在线免费 | 特黄色一级毛片 | 日韩欧美三级 | 一级片av | 欧美亚洲另类丝袜综合网动图 | 久草青青草 | 成人在线免费观看视频 | 成人在线免费观看 | 午夜色播| 91美女在线| 综合久久久久久久 | 亚洲成人免费av |