• (K8s学习笔记二)存储卷挂载


    1.POD增加一个cachevol的Volume存储卷,挂载到容器的nginx-cache目录上

    apiVersion: extensions/v1beta1
    kind: ReplicaSet
    metadata:
      name: frontend
    spec:
      replicas: 3
      selector:
        tier: frontend
      volumes:
        - name: cachevol      # 增加一个名为cachevol的volume存储卷
          emptyDir: {}        # pod分配到node时创建的,k8s自动分配的一个目录,pod从node移除时emptyDir中的数据永久删除
      template:
        metadata:
          labels:
            app: nginx
            tier: frontend
        spec:
          containers:
          - name: nginx1.18
            image: nginx:1.18.0
            volumeMounts:
              - mountPath: /nginx-cache    # 将cachevol volume存储卷mount到容器内的/etc/nginx/cache目录上
                name: cachevol
            imagePullPolicy: IfNotPresent
            env:
            - name: GET_HOSTS_FROM
              value: env
            ports:
            - containerPort: 80

    2.hostPath在POD上挂载宿主机的文件或目录

    apiVersion: extensions/v1beta1
      kind: ReplicaSet
      metadata:
        name: mysql5.7
      spec:
        replicas: 2
        selector:
          app: mysql
        template:
          metadata:
            labels:
              app: mysql           # spec.template.metadata.labels标签名与spec.selector名称要相同
          spec:
            volumes:
              - name: "data-storage"
                hostPath:
                  path: "/opt/data"      # 宿主机目录
            containers:
            - name: mysql5.7
              image: mysql:5.7.29
              ports:
              - containerPort: 3306
              env:
              - name: MYSQL_ROOT_PASSWORD
                value: "123456"

    3.挂载NFS Server的目录

    apiVersion: extensions/v1beta1
      kind: ReplicaSet
      metadata:
        name: mysql5.7
      spec:
        replicas: 2
        selector:
          app: mysql
        template:
          metadata:
            labels:
              app: mysql           # spec.template.metadata.labels标签名与spec.selector名称要相同
          spec:
            volumes:
    #          - name:  mypd       # 使用PVC时注视掉开启这三项内容
    #            persistentVolumeClaim:
    #               claimName: myclaim
              - name: nfs
                nfs:
                server: 192.168.1.2   # nfs server地址
                path: "/data"         # nfs挂载目录
            containers:
            - name: mysql5.7
              image: mysql:5.7.29
              ports:
              - containerPort: 3306
              env:
              - name: MYSQL_ROOT_PASSWORD
                value: "123456"
    
    说明:其他可定义的type
    iscsi:使用iSCSI存储设备上的目录挂载到Pod中
    flocker:使用Flocker管理存储卷
    glusterfs:使用GlusterFS网络文件系统的目录挂载到Pod中
    rbd:使用Ceph块设备共享存储挂载到Pod中
    gitRepo:通过挂载一个空目录,并从Git库clone一个git repository以供Pod使用
    secret:一个Secret Volume用于为Pod提供加密的信息,你可以将定义在K8s中的Secret直接挂载为文件让Pod访问,这种类型的Volume不会被持久化

    4.Persistent Volume挂载网络存储定义占用空间大小

    # nfs-persistent_volume.yaml
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv0001
    spec:
      capacity:
        storage: 5Gi      # 声明需占用存储空间为5GB
      accessModes:
        - ReadWriteOnce   # 有读写权限且只能被单个node挂载;ReadOnlyMany:只读权限允许被多个node挂载;ReadWriteMany:有读写权限允许被多个node挂载
      nfs:
        path: /data
        server: 192.168.1.2
    
    # nfs-persistent_volume_claim.yaml
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: myclaim
    spec:
      accessModes:
        - ReadWriteOnce   # 有读写权限且只能被单个node挂载;ReadOnlyMany:只读权限允许被多个node挂载;ReadWriteMany:有读写权限允许被多个node挂载
      resources:
        requests:
          storage: 8Gi    # 声明需占用8GB存储空间   
      nfs:
        path: /data
        server: 192.168.1.2
    
    PV状态说明:
    Available:空闲状态
    Bound:已经绑定到某个PVC上
    Released:对应的PVC已经被删除,但资源还没有备集群回收
    Failed:PV自动回收失败

    注解:PV可以理解成K8s集群中的某个网络存储对应的一块存储,他与Volume类似,但有以下区别:

    1.PV只能是网络存储,不能属于任何Node,但可以在每个Node上访问

    2.PV并不是被定义在Pod上的,而是独立于Pod之外的

    3.PV目前支持类型包括:FC、NFS、iSCSI、CephFS、GlusterFS、VMware Photon等

    一入运维深似海,从此不见彼岸花
  • 相关阅读:
    ISO/IEC 9899:2011 条款6.6——常量表达式
    ISO/IEC 9899:2011 条款6.5.17——逗号操作符
    ISO/IEC 9899:2011 条款6.5.16——赋值操作符
    ISO/IEC 9899:2011 条款6.5.15——条件操作符
    ISO/IEC 9899:2011 条款6.5.10——按位与操作符
    ISO/IEC 9899:2011 条款6.5.9——相等操作符
    php正则表达式入门-常用语法格式
    史上最全PHP正则表达式实例汇总
    mysql数据库TINYINT取值范围详解
    Sql Server删除数据表中重复记录 三种方法
  • 原文地址:https://www.cnblogs.com/cn-jasonho/p/13285566.html
Copyright © 2020-2023  润新知