栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

k8s + nfs 动态存储模式

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

k8s + nfs 动态存储模式

Kubernetes使用NFS共享存储有两种方式:

手动方式静态创建所需要的PV和PVC;通过创建PVC动态地创建对应PV,无需手动创建PV。

动态创建PV,是指在现有PV不满足PVC的请求时,可以使用存储分类(StorageClass),描述具体过程为:PV先创建分类,PVC请求已创建的某个类(StorageClass)的资源,这样就达到动态配置的效果。即通过一个叫 Storage Class的对象由存储系统根据PVC的要求自动创建。

其中动态方式是通过StorageClass来完成的,这是一种新的存储供应方式。动态卷供给能力让管理员不必进行预先创建存储卷,而是随用户需求进行创建。

使用StorageClass有什么好处呢?除了由存储系统动态创建,节省了管理员的时间,还有一个好处是可以封装不同类型的存储供PVC选用。

在StorageClass出现以前,PVC绑定一个PV只能根据两个条件,一个是存储的大小,另一个是访问模式。在StorageClass出现后,等于增加了一个绑定维度。

1、下载动态PV配置yaml文件

https://github.com/kubernetes-retired/external-storage/tree/master/nfs-client/deploy

[root@master1 pv-d]# ls
class.yaml  deployment.yaml  rbac.yaml

更改deployment.yaml,将nfs地址和路径修改为自己的本地地址

 

2、依次应用yaml文件

[root@master1 pv-d]# kubectl apply -f rbac.yaml 
serviceaccount/nfs-client-provisioner created
clusterrole.rbac.authorization.k8s.io/nfs-client-provisioner-runner created
clusterrolebinding.rbac.authorization.k8s.io/run-nfs-client-provisioner created
role.rbac.authorization.k8s.io/leader-locking-nfs-client-provisioner created
rolebinding.rbac.authorization.k8s.io/leader-locking-nfs-client-provisioner created
[root@master1 pv-d]# kubectl apply -f class.yaml 
storageclass.storage.k8s.io/managed-nfs-storage created
[root@master1 pv-d]# kubectl apply -f deployment.yaml 
deployment.apps/nfs-client-provisioner created

3、创建nginx-svc.yaml文件

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: nginx
  selector:
    app: nginx
  clusterIP: None

创建pod   nginx-stfset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx
  serviceName: "nginx"
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      imagePullSecrets:
      - name: huoban-harbor
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "managed-nfs-storage"
      resources:
        requests:
          storage: 1Gi

应用两个yaml文件

[root@master1 pv-d]# kubectl apply -f nginx-svc.yaml 
service/nginx created
[root@master1 pv-d]# kubectl apply -f nginx-stfset.yaml 
statefulset.apps/web created

如果pod一直处于pending状态,

#在/etc/kubernetes/manifests/kube-apiserver.yaml配置文件中加入如下代码:
- --feature-gates=RemoveSelflink=false
#重新应用apiserver yaml文件,同时重新创建所有NFS yaml文件即可。
kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/752070.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号