1. 安装NFS服务器
首先,你需要在一台服务器上安装NFS。这里假设你使用的是基于Debian或RHEL的系统。
对于Debian/Ubuntu系统:
sudo apt update
sudo apt install nfs-kernel-server
对于RHEL/CentOS系统:
sudo yum install nfs-utils
sudo systemctl enable --now nfs-server
设置NFS共享目录
创建一个共享目录并编辑 /etc/exports
文件来配置NFS共享:
mkdir -p /srv/nfs/k8s
echo "/srv/nfs/k8s *(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a /etc/exports
sudo exportfs -rav
sudo systemctl restart nfs-kernel-server
2. 安装NFS客户端
对于想要挂载NFS共享的Kubernetes节点,你需要在每个节点上安装NFS客户端。
Debian/Ubuntu:
sudo apt update
sudo apt install nfs-common
RHEL/CentOS:
sudo yum install nfs-utils
3. 配置NFS客户端使用Kubernetes (YAML配置)
你可以通过PersistentVolumes (PV) 和 PersistentVolumeClaims (PVC) 在Kubernetes中配置NFS客户端。首先,创建一个PersistentVolume对象指向你的NFS服务器:
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
nfs:
path: /srv/nfs/k8s
server: <NFS_SERVER_IP>
persistentVolumeReclaimPolicy: Retain
然后,创建一个PersistentVolumeClaim来使用这个Volume:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
4. 检查NFS连接
你可以通过简单地尝试挂载NFS共享到一个临时目录来测试NFS连接,如:
mkdir -p /tmp/nfs-test
mount -t nfs <NFS_SERVER_IP>:/srv/nfs/k8s /tmp/nfs-test
检查挂载是否成功:
mount | grep nfs
5. 使用StatefulSet部署MySQL
创建一个StatefulSet以及相关的PVC来部署MySQL,示例YAML配置如下:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql
spec:
serviceName: "mysql"
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
value: "yourpassword"
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumeClaimTemplates:
- metadata:
name: mysql-persistent-storage
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: ""
resources:
requests:
storage: 5Gi
注意:确保将<NFS_SERVER_IP>
替换为你的NFS服务器的IP地址,并且调整其他配置(如容量、访问模式等)以适应你的具体需求。