typora/note/K8S/实战笔记/动态制备pv-nfs子文件夹.md
2024-12-12 10:48:55 +08:00

106 lines
2.4 KiB
Markdown

### 一、Github仓库手动安装
- github 仓库 https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner
#### 1. clone 仓库
```bash
git clone https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner
cd nfs-subdir-external-provisioner/deploy
```
#### 2. 修改deployment和rbac
- vim deployment.yaml
![image-20231028145130015](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20231028145130015.png)
- vim rbac.yaml 替换namespace为你想部署pod的空间
![image-20231028145243771](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20231028145243771.png)
- 执行以下命令
```bash
kubectl apply -f rbac.yaml
kubectl apply -f deployment.yaml
```
#### 3. 创建存储类
```bash
kubectl apply -f class.yaml
```
![image-20231028145331651](https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20231028145331651.png)
#### 4. 部署pvc和pod
```bash
kubectl apply -f test-claim.yaml
kubectl apply -f test-pod.yaml
```
#### 5. pod的存储卷生命和pvc声明组合
```yaml
---
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1
kind: StatefulSet # StatefulSet 类型的资源
metadata:
name: web # StatefulSet 对象的名字
spec:
serviceName: "nginx" # 使用哪个 service 来管理 dns
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14
ports: # 容器内部要暴露的端口
- containerPort: 80 # 具体暴露的端口号
name: web # 该端口配置的名字
volumeMounts:
- mountPath: /usr/share/nginx/html
name: nginx-test-pvc
volumeClaimTemplates:
- metadata:
name: nginx-test-pvc
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
```
### 二、helm 安装
```bash
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --set nfs.server=192.168.0.12 --set nfs.path=/volume1/share
```