k8s-2:nfs搭建
两种方式:方式一:nfs挂载到宿主机目录优点: 简单易用,无需额外支持缺点:依赖宿主机磁盘容量,pod与宿主机存在强耦合,不利于管理。需要指定标签,当pod部署多个副本并分配到不同host时,数据不共享;当要驱赶pod时,数据不同步;当node故障时,数据易丢失;1.node打标签kubectl label nodes master25 monitor=nfsserver2.all.yamlapi
目录
方法二:在机器上搭建nfs,其余使用就可以手动静态创建所要的pv和pvc,或创建pvc动态创建pv
修改kube-apiserver.yaml ,增加 - --feature-gates=RemoveSelfLink=false
两种方式:
方式一:nfs挂载到宿主机目录
优点: 简单易用,无需额外支持
缺点:依赖宿主机磁盘容量,pod与宿主机存在强耦合,不利于管理。需要指定标签,当pod部署多个副本并分配到不同host时,数据不共享;当要驱赶pod时,数据不同步;当node故障时,数据易丢失;
1.node打标签
|
2.all.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nfs-busybox spec: replicas: 2 template: metadata: labels: name: nfs-busybox spec: containers: - name: busybox image: busybox command: - sh - -c - 'while true; do date > /mnt/index.html; hostname >> /mnt/index.html; sleep $(($RANDOM % 5 + 5)); done' imagePullPolicy: IfNotPresent volumeMounts: # name must match the volume name below - name: nfs mountPath: "/mnt" volumes: - name: nfs persistentVolumeClaim: claimName: nfs --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 1Gi --- apiVersion: v1 kind: PersistentVolume metadata: name: nfs spec: capacity: storage: 1Gi accessModes: - ReadWriteMany nfs: # FIXME: use the right IP # get the server ip from the kube service server: 10.107.89.35 #server: nfs-server.default.svc.cluster.local path: "/nfsdemo/" --- apiVersion: v1 kind: Service metadata: name: nfs-server spec: ports: - name: nfs port: 2049 targetPort: 2049 protocol: TCP - name: mountd port: 20048 - name: rpcbind port: 111 selector: name: nfs-server --- apiVersion: apps/v1 kind: Deployment metadata: name: nfs-server namespace: default spec: replicas: 1 template: metadata: labels: name: nfs-server spec: nodeSelector: label: nfsserver containers: - name: nfs-server image: googlecontainer/volume-nfs:0.8 ports: - name: nfs containerPort: 2049 - name: mountd containerPort: 20048 - name: rpcbind containerPort: 111 securityContext: privileged: true volumeMounts: - mountPath: /exports name: nfs-folder volumes: - name: nfs-folder hostPath: path: "/home/dkongjian/nfs-share" |
方法二:在机器上搭建nfs,其余使用就可以手动静态创建所要的pv和pvc,或创建pvc动态创建pv
优点:可做高可用配置,预防单点故障
缺点:切记一定要配置成开机自启动,
架构是:搭建StorageClass+NFS
|
1.安装nfs-server
|
其余node安装
apt-get install nfs-common
2.创建文件系统
|
3.配置文件系统
vim /etc/exports
|
重启服务
|
showmount测试
|
修改kube-apiserver.yaml ,增加 - --feature-gates=RemoveSelfLink=false
原因是:
创建pvc后状态一直是pending,因为原来是1.20版本(我的是1.22.4)默认禁止使用selfLink。
创建RBAC授权
rbac.yaml: #唯一需要修改的地方只有namespace,根据实际情况定义
|
3.创建NFS资源的StorageClass
class.yaml
|
4.创建nfs-client-provisioner自动配置程序,以便自动创建持久卷(PV)
- 自动创建的 PV 以 ${namespace}-${pvcName}-${pvName} 的命名格式创建在 NFS 上
- 当这个 PV 被回收后会以 archieved-${namespace}-${pvcName}-${pvName} 的命名格式存在 NFS 服务器上
deployment.yaml
|
5.测试
|
查看 Pod/PV/PVC
|
查看 nfs server 目录中信息,同时各子目录中内容为空
|
更多推荐
所有评论(0)