1. 程式人生 > >Kubernetes 1.11.2使用NFS作為共享存儲

Kubernetes 1.11.2使用NFS作為共享存儲

ins 權限 labels ora cas 打開 sta program ports

環境:
NFS服務器: 192.168.0.252 /data/nfs

Kubernetes Master: 192.168.0.210
Kubernetes Node: 192.168.0.211
Kubernetes Node: 192.168.0.212

本地我們使用NFS作為Nginx的網站目錄,使所有的pod共享一套代碼

1.NFS服務器搭建

yum -y install nfs-utils

創建共享目錄
mkdir -p /data/nfs

修改配置文件
vim /etc/exports
/data/nfs 192.168.0.0/24(rw,no_root_squash,no_all_squash,sync)

配置選項說明:

/data/nfs 需要共享出去的目錄
192.168.0.0/24 只有192.168.0.0網段的機器可以訪問這個NFS服務
rw 所有客戶機可寫
sync 說明所有寫入會同時寫入硬盤和內存,async就說明會先暫存於內存中,然後寫入硬盤
no_root_squash 如果登錄的用戶是root的話,那麽他就具有root的權限
no_all_squash 與no_root_squash相識,如果登錄的是user用戶,那麽也是user權限

systemctl start nfs
systemctl enable nfs

在192.168.0.210掛載測試
mkdir -p /tmp/nfs
mount -t nfs 192.168.0.252:/data/nfs /mnt/nfs

mount: wrong fs type, bad option, bad superblock on 192.168.0.252:/data/nfs,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.<type> helper program)

   In some cases useful info is found in syslog - try

如果提示這個說明機器沒有安裝yum -y install nfs-utils

註意:所有kubernetes機器都需要安裝nfs-utils

2.kubernetes創建PV

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
  labels:
    pv: nfs-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /data/nfs
    server: 192.168.0.252

kubernetes創建PVC

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: nfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi
  selector:
    matchLabels:
      pv: nfs-pv

kubernetes創建deployment

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-test
spec:
  replicas: 3
  selector:
    matchLabels:
      name: nginx-test
  template:
    metadata:
      labels:
        name: nginx-test
    spec:
      containers:
      - name: nginx-test
        image: nginx
        volumeMounts:
        - mountPath: /usr/share/nginx/html
          name: nginx-data
        ports:
        - containerPort: 80
      volumes:
      - name: nginx-data
        persistentVolumeClaim:
          claimName: nfs-pvc

創建kubernetes的service

apiVersion: v1
kind: Service
metadata:
  name: nginx-test
  labels:
    name: nginx-test
spec:
  type: NodePort
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
    name: http
    nodePort: 30008
  selector:
    name: nginx-test

因為上面我們已經在192.168.0.210上將nfs掛載到/mnt/nfs目錄了,進入目錄
echo "hello,nfs for kubernetes">/tmp/nfs/index.html

打開http://192.168.0.210:30008/就顯示
hello,nfs for kubernetes

Kubernetes 1.11.2使用NFS作為共享存儲