试验环境为 ubuntu 20.04
一、nfs 部署安装
- 安装 nfs
apt-get install nfs-kernel-server
- 创建共享目录
mkdir nfs_data
- 修改共享配置
root@master:~# vim /etc/exports
/root/nfs_data *(rw,no_root_squash)
- 重启 nfs
/etc/init.d/nfs-kernel-server restart
- 查看共享目录
showmount -e
二、安装 nfs provisioner
- 创建 server account 用户
service_account.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: nfs-provisioner
- 启动 service account 并查看
kubectl apply -f service_account.yaml
kubectl get sa
- 创建 ServiceAccount
授权给 nfs 可以访问 k8s 内部一些功能
kubectl create clusterrolebinding nfs-provisioner-clusterrolebinding --clusterrole=cluster-admin --serviceaccount=default:nfs-provisioner
- 创建 nfs deployment
k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.0
下载不下来可以考虑其他办法下载完成后传到节点上。使用ctr -n=k8s.io images import nfs-subdir-external-provisioner.tar.gz
nfs-deployment.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
name: nfs-provisioner
spec:
replicas: 1
selector:
matchLabels:
app: nfs-provisioner
strategy:
type: Recreate
template:
metadata:
labels:
app: nfs-provisioner
spec:
serviceAccountName: nfs-provisioner # ServiceAccount 的 name
containers:
- name: nfs-provisioner
image: k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.0
imagePullPolicy: IfNotPresent
volumeMounts:
- name: nfs-client-root
mountPath: /persistentvolumes
env:
- name: PROVISIONER_NAME
value: example.com/nfs
- name: NFS_SERVER
value: 192.168.17.130 # nfs 服务 ip
- name: NFS_PATH
value: /root/nfs_data/nfs_pro # nfs 共享的目录地址
volumes:
- name: nfs-client-root
nfs:
server: 192.168.17.130 # nfs 服务 ip
path: /root/nfs_data/nfs_pro # nfs 共享的目录地址
- 启动 deployment 并查看
kubectl apply -f nfs-deployment.yaml
kubectl get pods
网友评论