精华内容
下载资源
问答
  • k8s挂载ceph

    2021-04-13 06:31:58
    一、k8s挂载Ceph RBD k8s挂载Ceph RBD有两种方式,一种是传统的PV&PVC的方式,也就是说需要管理员先预先创建好相关PV和PVC,然后对应的deployment或者replication来挂载PVC使用。而在k8s 1.4以后,kubernetes...

    一、k8s挂载Ceph RBD

    k8s挂载Ceph RBD有两种方式,一种是传统的PV&PVC的方式,也就是说需要管理员先预先创建好相关PV和PVC,然后对应的deployment或者replication来挂载PVC使用。而在k8s 1.4以后,kubernetes提供了一种更加方便的动态创建PV的方式,即StorageClass。使用StorageClass时无需预先创建固定大小的PV来等待使用者创建PVC使用,而是直接创建PVC即可使用。

    注:需要说明的是,要想让k8s的node节点执行挂载ceph rbd的指令,需要在所有节点上安装ceph-common包。直接通过yum安装即可。

    1、PV & PVC方式

    创建secret

    #获取管理key并进行64位编码
    ceph auth get-key client.admin | base64
    
    

     创建ceph-secret.yml文件,内容如下:

    apiVersion: v1
    kind: Secret
    metadata:
      name: ceph-secret
    data:
    #Please note this value is base64 encoded.
    # echo "keystring"|base64
      key: QVFDaWtERlpzODcwQWhBQTdxMWRGODBWOFZxMWNGNnZtNmJHVGc9PQo=
    
    

    创建PV

    创建test.pv.yml文件,内容如下:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: test-pv
    spec:
      capacity:
        storage: 2Gi
      accessModes:
        - ReadWriteOnce
      rbd:
        #ceph的monitor节点
        monitors:       
          - 10.5.10.117:6789
          - 10.5.10.236:6789
          - 10.5.10.227:6789
        #ceph的存储池名字
        pool: data 
        #在存储池里创建的image的名字
        image: data         
        user: admin
        secretRef:
          name: ceph-secret
        fsType: xfs
        readOnly: false
      persistentVolumeReclaimPolicy: Recycle
    
    # kubectl create -f test.pv.yml
    
    

    创建PVC

    创建test.pvc.yml文件,内容如下:

    kind: PersistentVolumeClaim
    apiVersion: extensions/v1beta1
    metadata:
      name: test-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 2Gi
    
    kubectl create -f test.pvc.yml
    
    

    创建deployment挂载PVC

    创建test.dm文件,内容如下:

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: test
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            app: test
        spec:
          containers:
          - name: test
            image: dk-reg.op.douyuyuba.com/op-base/openresty:1.9.15
            ports:
            - containerPort: 80
            volumeMounts:
              - mountPath: "/data"
                name: data
          volumes:
            - name: data
              persistentVolumeClaim:
                claimName: test-pvc
    
    kubectl create -f test.dm.yml
    
    

    2、StorageClass方式

    创建secret

    由于StorageClass要求ceph的secret type必须为kubernetes.io/rbd,所以在上面PV & PVC方式中创建的secret无法使用,需要重新创建。如下:

    # 其中key的部分为ceph原生的key,未使用base64重新编码
    kubectl create secret generic ceph-secret --type="kubernetes.io/rbd" --from-literal=key='AQCikDFZs870AhAA7q1dF80V8Vq1cF6vm6bGTg==' --namespace=kube-system
    kubectl create secret generic ceph-secret --type="kubernetes.io/rbd" --from-literal=key='AQCikDFZs870AhAA7q1dF80V8Vq1cF6vm6bGTg==' --namespace=default
    
    

    创建StorageClass

    创建test.sc.yml文件,内容如下:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: test-storageclass
    provisioner: kubernetes.io/rbd
    parameters:
      monitors: 192.168.1.11:6789,192.168.1.12:6789,192.168.1.13:6789
      # Ceph 客户端用户ID(非k8s的)
      adminId: admin
      adminSecretName: ceph-secret
      adminSecretNamespace: kube-system
      pool: data
      userId: admin
      userSecretName: ceph-secret
    
    

    创建PVC

    创建test.pvc.yml文件,内容如下:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: test-sc-pvc
      annotations:
        volume.beta.kubernetes.io/storage-class: test-storageclass
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 2Gi

    kubectl create -f test.pvc.yml

    至于挂载,与PV & PVC的方式一致,不再重复说明

    二、k8s挂载Cephfs

    上面大致说明了使用k8s挂载ceph rbd块设备的方法。这里简单说下k8s挂载ceph 文件系统的方法。

    首先secret可以直接与上面复用,不用再单独创建。也不需要再创建pv和pvc。直接在deployment中挂载即可,方法如下:

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: test
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            app: test
        spec:
          containers:
          - name: test
            image: dk-reg.op.douyuyuba.com/op-base/openresty:1.9.15
            ports:
            - containerPort: 80
            volumeMounts:
              - mountPath: "/data"
                name: data
          volumes:
            - name: data
              cephfs:
                monitors:
                  - 10.5.10.117:6789
                  - 10.5.10.236:6789
                  - 10.5.10.227:6789
                path: /data
                user: admin
                secretRef:
                  name: ceph-secret
    
    

    三、kubeadm部署的k8s集群,使用rbd-provisioner方式

    https://blog.csdn.net/qq_25934401/article/details/108247518

    https://blog.51cto.com/fengjicheng/2401702

    四、ceph-csi方式

    https://docs.ceph.com/en/latest/rbd/rbd-kubernetes/   ceph官网介绍

    Kubernetes中文指南/实践手册 不错

    https://www.bookstack.cn/read/kubernetes-handbook/practice-using-ceph-for-persistent-storage.md      使用Ceph做持久化存储创建MySQL集群

    https://www.e-learn.cn/topic/3836739   k8s 1.19.2使用ceph作存储后端

    https://mp.weixin.qq.com/s/0c4xqm4utNf7_FEDI090qA

    展开全文
  • K8S挂载ceph

    2021-05-20 16:34:25
    动态供给(StorageClass)-RBD方式 Ceph配置 1. kubelet节点安装rbd命令,将ceph的ceph.client.admin.keyring和ceph.conf文件拷贝到master的/etc/ceph目录下 yum -y install ceph-common ...3. 创建k8s访问ceph的用户,

    动态供给(StorageClass)-RBD方式

    Ceph配置

    1. kubelet节点安装rbd命令,将ceph的ceph.client.admin.keyring和ceph.conf文件拷贝到master的/etc/ceph目录下
    yum -y install ceph-common
    
    2. 创建 osd pool 在ceph的mon或者admin节点
    ceph osd pool create kube-data 128 128
    ceph osd pool application enable kube-data rbd
    ceph osd pool ls
    
    3. 创建k8s访问ceph的用户, 在ceph的mon或者admin节点
    ceph auth get-or-create client.kube mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=kube-data' -o ceph.client.kube.keyring
    
    4. 获取admin用户和kube用户的key
    ceph auth get-key client.admin;echo
    ceph auth get-key client.kube;echo
    

    K8S配置

    创建Secret

    • key不需要base64转码
    1. 创建 admin secret, 用户kubenetes集群访问ceph
    kubectl create secret generic ceph-admin-secret --type="kubernetes.io/rbd" \
    --from-literal=key=AQBAeaRgpKjkABAAbQz7RV/7meaFYKO8oZydsQ== \
    --namespace=kube-system
    2. 在 default 命名空间创建pvc用于访问ceph的 secret
    kubectl create secret generic ceph-user-secret --type="kubernetes.io/rbd" \
    --from-literal=key=AQDlGKZgG2xRNxAA4DYniPBpaV5SAyU1/QH/5w== \
    --namespace=default
    

    如果其余命名空间的服务挂载ceph存储,需要按步骤2方法,创建对应的secret

    例如:

    kubectl create secret generic ceph-user-secret --type="kubernetes.io/rbd" \
    --from-literal=key=AQDlGKZgG2xRNxAA4DYniPBpaV5SAyU1/QH/5w== \
    --namespace=monitoring
    

    创建StorageClass

    cat > external-storage-ceph-rbd.yaml << 'EOF'
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: dynamic-ceph-rbd
    provisioner: kubernetes.io/rbd
    # 回收策略: Retain(不删除)  Delete(删除) 默认: Delete
    reclaimPolicy: Retain
    parameters:
      monitors: 192.168.2.101:6789,192.168.2.102:6789,192.168.2.103:6789
      adminId: admin
      adminSecretName: ceph-admin-secret
      adminSecretNamespace: kube-system
      pool: kube-data
      userId: kube
      userSecretName: ceph-user-secret
    EOF
    
    kubectl apply -f external-storage-ceph-rbd.yaml
    kubectl get sc
    
    monitors: ceph集群mon地址
    adminId: ceph集群admin用户ID
    adminSecretName: 在k8s中为ceph集群admin用户secret
    adminSecretNamespace: 创建ceph集群admin用户secret指定的命名空间
    pool: 在ceph集群中创建的pool
    userId: kube用户
    userSecretName: k8s集群为ceph集群kube用户创建的secret
    

    创建PVC测试

    cat > ceph-claim-rbd-test.yaml << 'EOF'
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: ceph-claim-rbd-test
    spec:
      accessModes:     
        - ReadWriteOnce
      storageClassName: dynamic-ceph-rbd
      resources:
        requests:
          storage: 2Gi
    EOF
    kubectl apply -f ceph-claim-rbd-test.yaml
    
    kubectl get pv
    kubectl get pvc
    

    挂载POD验证PVC

    cat > nginx-deployment-dynamic-pvc.yaml << 'EOF'
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: nginx
      name: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - image: nginx:latest
            name: nginx
            volumeMounts:
            - name: www-data
              mountPath: /usr/share/nginx/html
    
          volumes:
          - name: www-data
            persistentVolumeClaim:
              claimName: ceph-claim-nginx
    ---
    
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: ceph-claim-nginx
    spec:
      storageClassName: dynamic-ceph-rbd
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 3Gi
    
    ---
    
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
      namespace: default
      labels:
        app: nginx
    spec:
      selector:
        app: nginx
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      type: NodePort
    EOF
    
    kubectl apply -f nginx-deployment-dynamic-pvc.yaml
    

    在pod中创建默认页面

    kubectl exec -it nginx-b89b49bf9-g6bsg -- /bin/bash
    # echo "dynamic-cephfs-test" > /usr/share/nginx/html/index.html
    

    访问测试,出现如下界面,表示成功

    curl http://10.0.0.146dynamic-cephfs-test
    
    展开全文
  • k8s文件挂载

    千次阅读 2019-06-22 19:38:08
    1在所有节点都要安装nfs工具 ...2挂载的服务端 yum install -y nfs-utils # 暴露启动挂载的路径 vi /etc/exports # ------------ /data/nfs *(rw,no_root_squash) # ------------ systemctl start nfs ps -ef |gre...

    1在所有节点都要安装nfs工具

     

    yum install -y nfs-utils

    2挂载的服务端

    yum install -y nfs-utils
    # 暴露启动挂载的路径
    vi /etc/exports
    # ------------
    /data/nfs *(rw,no_root_squash)
    # ------------
    systemctl start nfs
    ps -ef |grep nfs

     

    用nginx用户创建文件

    su - nginx

     

     

    3可以配置pv 和pvc,这里直接在pod上挂载(应该注意文件权限,最好用nginx用户来创建)

     

     

    apiVersion: apps/v1beta2
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
            - name: nginx
              image: nginx:1.14
              ports:
                - containerPort: 80
              volumeMounts:
              - mountPath: /usr/share/nginx/html
                name: nginx-html
          volumes:
           - name: nginx-html
             nfs:
               server: 10.0.2.15
               path: /nfs

     

     

    展开全文
  • k8s挂载数据卷

    2021-08-30 11:21:46
    概述 项目需要监控判题器和beego服务端...yaml文件 apiVersion: apps/v1 kind: Deployment metadata: name: unioj-judger-deployment namespace: default spec: selector: matchLabels: app: unioj-judger repl

    概述

    • 项目需要监控判题器和beego服务端的日志情况,不想使用浸入应用的方式,故而将judger的日志做数据卷映射到本机,启动logagent对日志进行收集

    配置

    yaml文件

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: unioj-judger-deployment
      namespace: default
    spec:
      selector:
        matchLabels:
          app: unioj-judger
      replicas: 1
      template:
        metadata:
          labels:
            app: unioj-judger
        spec:
          nodeName: k8s-node2
          restartPolicy: Always
          containers:
          - name: unioj-judger
            image: registry.cn-beijing.aliyuncs.com/uyistcoj/unioj-judger
            imagePullPolicy: Always
            ports:
            - containerPort: 7999
            resources:
              requests:     
                memory: 100Mi
                cpu: 400m
            livenessProbe:
              httpGet:
                path: /healthy
                port: 7999
              initialDelaySeconds: 3
              periodSeconds: 3
              successThreshold: 1        # 健康阀值 
            volumeMounts:
            - name: log
              mountPath: /src/unioj/logs
          volumes:
          - name: log
            hostPath:
              path: /data
              type: DirectoryOrCreate
    
    

    注意

    需要到该pod分配到的node查看该挂载目录,在master上没有的(有中文故而是■■■■■■)
    在这里插入图片描述

    展开全文
  • Trying to mount config files from a hostPath to a kubernetes container. This works using minikube and VirtualBox shared folder, but I am unable to make this work on Linux.I making use of AWS EKS and t...
  • K8S configmap挂载文件

    千次阅读 2020-09-29 09:56:14
    新建configmap: apiVersion: v1 kind: ConfigMap metadata: name: front-conf namespace: tsp data: baseUrl.js: | ... window.websocketUrl = 'ws:...在deployment挂载配置文件: ... deployment.spec volumes: - n
  • 比如将用户数据放在一个NFS文件系统上,不同的用户区分不同的子目录。 如果每个用户的容器,都直接挂载了整个NFS,同时又不能封禁容器的外网访问,那么这样是不安全的,如果被反弹Shell之后,会存在安全隐患。 我们...
  • k8s挂载ceph rbd 环境 192.168.126.101 ceph01 192.168.126.102 ceph02 192.168.126.103 ceph03 192.168.126.104 ceph04 192.168.126.105 ceph-admin 192.168.48.11 ceph01 192.168.48.12 ceph02 192.168.48.13 ...
  • k8s容器挂载配置文件

    千次阅读 2018-01-18 14:56:00
    1、新建ConfigMap apiVersion: v1 kind: ConfigMap metadata: name: test ... 上面红色的部分是指要挂载容器内部的文件的权限。(必须是介于0和0777(八进制)之间的数字,包括两者在内)  
  • K8S磁盘挂载方式

    2021-09-13 16:39:39
    针对k8s环境,需要在k8s对应的机器上安装nfs客户端,否则部署时会因为挂载失败而报错 1.操作步骤 1)在磁盘服务器上安装nfs服务端 1.1安装NFS服务: #执行以下命令安装NFS服务器,apt会自动安装...
  • k8s目录挂载

    2021-04-07 14:11:29
    k8s目录挂载一,Volumes文档二,Subpath三,HostPath三,未完待续。 一,Volumes文档 Volumes官方文档 二,Subpath volumeMounts.subPath属性在引用的卷中指定一个子路径,而不是其根。 示例如下: apiVersion: v1 ...
  • k8s pod中文件挂载到本地

    千次阅读 2019-07-11 17:19:15
    mountPath: /home/redis # pod中docker容器目录,即要被挂载的目录 volumes: - name: sys-time hostPath: path: /etc/localtime - name: redisdata # 对应前面的volumeMounts name hostPath: path: /root/...
  • 如果使用 k8s 部署 mysql、redis、minio等数据和文件存储服务,k8s 默认容器如果重建,则容器中的数据文件将会丢失,所以为了解决这些问题,通常就需要将容器中需要持久化的文件存储到其它可持久化存储目录中。...
  • 本项目部署在k8s系统上,图片、文件等都是挂载k8s的nfs系统上的,也就是让/home/oss挂载到nfs/k8s/oss上,然后文件上传到/home/oss上。 1、配置静态文件 配置静态文件,这样就可以通过链接访问上传到/home/oss上的...
  • 8088 targetPort: 8088 nodePort: 32090 protocol: TCP type: NodePort # 容器内挂载目录 volumeMounts: name_springboot_conf: springboot-conf mountPath: /config # 要挂载的本地目录 volumes: name_springboot_...
  • k8s pod挂载secret

    2021-08-11 10:47:38
    Secret secrets和configmap都是用来传输信息,或者是配置文件的,secrets存储的的信息存放在内存中,且默认是base64的编码方式,所以要注意 Secret两种挂载方式 ...然后是挂载到Pod的yaml文件 在这里插入代码片 ...
  • 编写配置文件 1.运用helm创建图表 helm create <name> 2.编写配置文件 cd <name> vim values.yaml namespace: vcs replicaCount: 1 resources: limits: cpu: 4 memory: 4Gi requests: cpu: 2 ...
  • k8s不能挂载ceph块存储

    千次阅读 2017-05-13 18:08:58
    我是参考 Tony Bai 博客进行k8s挂载ceph的存储,但是发现最终pod的状态一直是ContainerCreating一、环境说明: Tony Bai 是把k8s 和 ceph都部署在那两台虚拟机上 我的环境是k8s集群和ceph存储集群分别部署在不同机器...
  • 更改k8s挂载配置 spec: containers: ...... volumeMounts: - name: file-service-mount # 名称* mountPath: /root/fileservice # docker容易内存储路径 volumes: - name: file-service-mount # 名称* 与...
  • hostPath path:挂载的本地文件路径 设置挂载点 name:对应数据卷别名 mountPath:挂载到容器内部的目录位置 (即将容器中的/usr/local/tomcat/webapps挂载到本地/mnt目录下) 部署 kubectl create -f ./deploy.yml,...
  • k8s yaml文件详解

    千次阅读 2018-09-27 22:06:06
    k8s yaml文件详解 1、yaml文件详解如下: apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 metadata: #资源的元数据/属性 name: web04-pod ...
  • k8s1.5.4挂载volume之glusterfsvolume的例子集合https://github.com/kubernetes/kubernetes/tree/master/examples/volumeshttp://www.dockerinfo.net/2926.htmlhttp://dockone.io/article/2087https://www.kubern...
  • k8s集群中安装redis、mysql(使用helm),两个简单的案例。1、k8s中安装redis服务 (4.0.8-r2)mkdir redisworkcd redisworkhelm search redishelm fetch stable/redis --version 1.1.15 #下载redis-1.1.15.tgz包到当前...
  • k8s对象-挂载

    2021-08-13 09:15:00
    以下介绍集中常用挂载类型: 1. emptyDir 1.1 概念 位置 pod所在的node节点。 实际位置在 /var/lib/kubelet/pods/下(2.1.3 中我们将验证这个操作) 生命周期 该pod启动时创建 该pod被移除时删除 容器崩.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,311
精华内容 4,524
关键字:

k8s挂载文件