環境:
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