基於Ubuntu-22.04安裝K8s-v1.28.2實驗(三)數據卷掛載NFS(網絡文件系統)

安裝 NFS 服務器: 首先,打開終端並安裝 NFS 服務器軟件包:

sudo apt update
sudo apt install nfs-kernel-server

創建共享目錄: 決定哪個目錄你想要共享,然後創建它(如果還不存在):

sudo mkdir -p /nfs/data

配置共享目錄權限: 配置目錄的權限,確保 NFS 客戶端可以訪問它:

sudo chown root:root /nfs/data
sudo chmod 777 /nfs/data

編輯 /etc/exports 文件: 決定你想要共享的目錄和哪些客戶端可以訪問它,然後編輯 /etc/exports 文件:

sudo nano /etc/exports
在這個文件中,添加以下行

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

應用 exports 文件並重啓服務: 修改完 /etc/exports 文件後,應用更改並重啓 NFS 服務:

sudo exportfs -ra
sudo systemctl restart nfs-kernel-server

節點安裝數據卷驅動

每個節點都要運行 apt install nfs-common

k8s配置文件

# hustoj-storage-class.yml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: hustoj-storage-class
provisioner: kubernetes.io/nfs
parameters:
  nfsServer: 192.168.215.129
  nfsPath: /nfs/data
  readOnly: "false"
#pv-definition.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: hustoj-pv
spec:
  storageClassName: hustoj-storage-class
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: 192.168.215.129
    path: /nfs/data
#pvc-definition.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: hustoj-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: hustoj-storage-class
#nginx-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: nginx-deployment
 namespace: default
spec:
 replicas: 6
 selector:
   matchLabels:
     app: nginx
 template:
   metadata:
     labels:
       app: nginx
   spec:
     securityContext:
       fsGroup: 0
       runAsUser: 0
     containers:
       - name: nginx
         image: registry.cn-shanghai.aliyuncs.com/shiningrise/hustoj:v1.6
         securityContext:
           runAsUser: 0
           allowPrivilegeEscalation: true
         ports:
         - containerPort: 80
         volumeMounts:
         - mountPath: /volume  # 將卷掛載到容器內的 `/path/to/mount` 路徑
           name: hustoj-volume  # 引用之前定義的卷名稱
     volumes:
       - name: hustoj-volume
         persistentVolumeClaim:
           claimName: hustoj-pvc
#nginx-service.yml
apiVersion: v1
kind: Service
metadata:
 name: nginx-service
 namespace: default
spec:
 selector:
   app: nginx
 loadBalancerIP: 192.168.215.200
 ports:
   - protocol: TCP
     port: 80
     targetPort: 80
 type: LoadBalancer #NodePort LoadBalancer

相關文件下載

https://files.cnblogs.com/files/shiningrise/k8s_3.zip?t=1715732180&download=true

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章