云服务器内容精选
-
导入存储池 创建节点时导入 在创建节点时,在存储配置中可以为节点添加数据盘,选择“作为临时存储卷”导入存储池,详情请参见创建节点。 图1 导入临时卷 手动导入 如果创建节点时没有导入临时存储卷,或当前存储卷容量不够,可以进行手动导入。 前往ECS控制台为节点添加SCSI类型的磁盘。操作步骤详情请参见新增磁盘。 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏中选择“存储”,并切换至“存储池”页签。 查看已添加磁盘的节点,选择“导入临时卷”,导入时可以选择写入模式。 如存储池列表中未找到手动挂载的磁盘,请耐心等待1分钟后刷新列表。 线性:线性逻辑卷是将一个或多个物理卷整合为一个逻辑卷,实际写入数据时会先往一个基本物理卷上写入,当存储空间占满时再往另一个基本物理卷写入。 条带化:创建逻辑卷时指定条带化,当实际写入数据时会将连续数据分成大小相同的块,然后依次存储在多个物理卷上,实现数据的并发读写从而提高读写性能。多块卷才能选择条带化。
-
通过kubectl使用本地临时卷 请参见通过kubectl连接集群配置kubectl命令。 创建并编辑nginx-emptydir.yaml文件。 vi nginx-emptydir.yaml YAML文件内容如下: apiVersion: apps/v1 kind: Deployment metadata: name: nginx-emptydir namespace: default spec: replicas: 2 selector: matchLabels: app: nginx-emptydir template: metadata: labels: app: nginx-emptydir spec: containers: - name: container-1 image: nginx:latest volumeMounts: - name: vol-emptydir # 卷名称,需与volumes字段中的卷名称对应 mountPath: /tmp # emptyDir挂载路径 imagePullSecrets: - name: default-secret volumes: - name: vol-emptydir # 卷名称,可自定义 emptyDir: medium: LocalVolume # emptyDir磁盘介质设置为LocalVolume,表示使用本地临时卷 sizeLimit: 1Gi # 卷容量大小 创建工作负载。 kubectl apply -f nginx-emptydir.yaml
-
创建方式 创建方式是指动态创建或静态绑定 参数名 取值范围 默认值 是否允许修改 作用范围 Creation Method 三种方式:动态创建、绑定已有存储卷PV、绑定新建存储卷PV 动态创建 支持初始化时配置,不支持后续修改 - 创建方式非PVC原生字段,是CCE服务前端用于展示PVC绑定方式为动态还是静态的区分入口 配置建议: 如果用户提前在IaaS服务侧创建了存储资源,则可选择“已有存储卷PV”或“新建存储卷PV”这两种方式,否则选择“动态创建”方式
-
回收策略 当与此PV绑定的PVC被删除以后,PV如何被处理的策略 参数名 取值范围 默认值 是否允许修改 作用范围 persistentVolumeReclaimPolicy 两种策略:Retain, Delete Retain 支持初始化时配置,不支持后续修改 - 回收策略配置为Retain时,当删除与之绑定的PVC,这个PV被标记为Released,且底层卷保留。回收策略为Delete时,当删除与之绑定的PVC,底层卷及PV也会被删除。 配置建议: 建议配置为Retain,避免误删与此PV绑定的PVC时导致底层卷被删除
-
访问模式 访问模式包含了PV可以被挂载的方式 参数名 取值范围 默认值 是否允许修改 作用范围 accessModes 两种模式:ReadWriteMany, ReadWriteOnce 无 支持初始化时配置,不支持后续修改 - 访问模式包含了卷可以被挂载的方式。CCE当前支持ReadWriteMany, ReadWriteOnce两种。ReadWriteMany指以读写方式挂载到多个节点,ReadWriteOnce指以读写方式挂载到单个节点。 配置建议: 根据存储卷类型进行配置。如块存储及本地持久卷存储配置ReadWriteOnce,文件存储及对象存储配置ReadWriteMany
-
操作步骤 请参见通过kubectl连接集群,使用kubectl连接集群。 执行如下命令,配置名为“sfsturbo-deployment-example.yaml”的创建deployment的yaml文件。 touch sfsturbo-deployment-example.yaml vi sfsturbo-deployment-example.yaml 在无状态工作负载中基于pvc共享式使用极速文件存储示例: apiVersion: apps/v1 kind: Deployment metadata: name: sfsturbo-deployment-example # 工作负载名称 namespace: default spec: replicas: 1 selector: matchLabels: app: sfsturbo-deployment-example template: metadata: labels: app: sfsturbo-deployment-example spec: containers: - image: nginx name: container-0 volumeMounts: - mountPath: /tmp # 挂载路径 name: pvc-sfsturbo-example restartPolicy: Always imagePullSecrets: - name: default-secret volumes: - name: pvc-sfsturbo-example persistentVolumeClaim: claimName: pvc-sfsturbo-example # 挂载PVC 表1 关键参数说明 参数 描述 name 为创建的无状态工作负载名称。 app 为无状态工作负载名称。 mountPath 为容器内挂载路径,此处示例中为“/tmp”。 “spec.template.spec.containers.volumeMounts.name” 和 “spec.template.spec.volumes.name”有映射关系,必须保持一致。 执行如下命令创建工作负载。 kubectl create -f sfsturbo-deployment-example.yaml
-
操作步骤 请参见通过kubectl连接集群,使用kubectl连接集群。 执行如下命令,配置名为“obs-deployment-example.yaml”的创建Pod的yaml文件。 touch obs-deployment-example.yaml vi obs-deployment-example.yaml 在无状态工作负载中基于pvc共享式使用对象存储示例: apiVersion: apps/v1 kind: Deployment metadata: name: obs-deployment-example # 工作负载名称 namespace: default spec: replicas: 1 selector: matchLabels: app: obs-deployment-example template: metadata: labels: app: obs-deployment-example spec: containers: - image: nginx name: container-0 volumeMounts: - mountPath: /tmp # 挂载路径 name: pvc-obs-example restartPolicy: Always imagePullSecrets: - name: default-secret volumes: - name: pvc-obs-example persistentVolumeClaim: claimName: pvc-obs-auto-example # PVC名称 “spec.template.spec.containers.volumeMounts.name”和 “spec.template.spec.volumes.name”有映射关系,必须保持一致。 执行如下命令创建工作负载。 kubectl create -f obs-deployment-example.yaml
-
添加云硬盘存储卷 参照创建无状态负载(Deployment)、创建有状态负载(StatefulSet)或创建普通任务(Job)创建工作负载或普通任务,在添加容器后,展开“数据存储”。在“云存储”页签,单击“添加云存储”。 选择存储类型为“云硬盘”。 表2 挂载云硬盘参数配置 参数 参数说明 云存储类型 云硬盘:云硬盘的使用方式与传统服务器硬盘完全一致。同时,云硬盘具有更高的数据可靠性,更高的I/O吞吐能力和更加简单易用等特点,适用于文件系统、数据库或者其他需要块存储设备的系统软件或工作负载。 注意: 如需挂载云硬盘,创建工作负载时的实例数量必须选择为1个实例,即单实例,选择多实例后挂载云硬盘的选项将置灰,无法挂载。 创建有状态工作负载并添加云存储时,云硬盘暂不支持使用已有存储。 云硬盘不支持跨可用区挂载,且暂时不支持被多个工作负载、同一个工作负载的多个实例或多个任务使用。 分配方式 使用已有存储 选择已创建的存储,您需要提前创建好存储。 针对同一集群和命名空间,创建无状态工作负载时可以选择“使用已有存储”。 创建有状态工作负载时暂不支持选择“使用已有存储”,只能使用“自动分配存储”。 自动分配存储 选择自动分配存储后,需要配置如下选项: 访问模式:是用来对PV进行访问模式的设置,用于描述用户应用对存储资源的访问权限。 ReadWriteOnce (RWO):基于EVS非共享卷提供容器负载单Pod单读单写块存储的功能,但是该卷只能被单个节点挂载。v1.13.10-r1开始支持RWO模式的EVS卷。 可用区:存储所在的可用区,自动分配存储仅支持Node节点所在可用区。 子类型:选择存储的子类型。 高I/O:是指由SAS存储提供资源的磁盘类型。 超高I/O:是指由SSD存储提供资源的磁盘类型。 存储容量:输入存储容量,单位为GB。请不要超过存储容量配额,否则会创建失败。 存储格式:默认选择CSI。 CSI,即Container Storage Interface,容器存储接口机制,用于在Kubernetes和外部存储系统之间建立一套标准的存储管理接口,通过该接口为容器提供存储服务。 加密:勾选“KMS加密”后,将为云硬盘提供易用、高安全性的密钥管理服务(Key Management Service,KMS),该功能仅在部分Region的1.13.10及以上版本的集群中支持。若未创建委托请单击“创建委托”,并配置如下参数: 委托名称:委托表示委托方通过创建信任关系,给被委托方授予访问其资源的权限。当“委托名称”为“EVSAccessKMS”时,表示已经成功授权EVS访问KMS,授权成功后,EVS可以获取KMS密钥用来加解密云硬盘系统。 密钥名称:密钥资源创建完成后,可在容器应用中加载使用。如何创建密钥请参见创建密钥。 密钥ID:默认生成。 添加容器挂载 单击“添加容器挂载”。 挂载路径:输入数据卷挂载到容器上的路径。 须知: 请不要挂载在系统目录下,如“/”、“/var/run”等,会导致容器异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响容器启动的文件,否则文件会被替换,导致容器启动异常,工作负载创建失败。 挂载高危目录的情况下 ,建议使用低权限帐号启动,否则可能会造成宿主机高危文件被破坏。 设置权限。 只读:只能读容器路径中的数据卷。 读写:可修改容器路径中的数据卷,容器迁移时新写入的数据不会随之迁移,会造成数据丢失。 图1 添加云存储 单击“确定”。
-
约束与限制 CCE默认创建计费模式为“按需计费”的云硬盘。如需使用包周期的云硬盘,请参考云硬盘包周期。 云硬盘不支持跨可用区挂载,且暂时不支持被多个工作负载、同一个工作负载的多个实例或多个任务使用。 由于CCE集群各节点之间暂不支持共享盘的数据共享功能,多个节点挂载使用同一个云硬盘可能会出现读写冲突、数据缓存冲突等问题,所以创建无状态工作负载时,若使用了EVS云硬盘,建议工作负载只选择一个实例。 1.19.10以下版本的集群中,如果使用HPA策略对挂载了EVS卷的负载进行扩容,当新Pod被调度到另一个节点时,会导致之前Pod不能正常读写。 1.19.10及以上版本集群中,如果使用HPA策略对挂载了EVS卷的负载进行扩容,新Pod会因为无法挂载云硬盘导致无法成功启动。 创建有状态工作负载并添加云存储时,云硬盘暂不支持使用已有存储。 不支持导入分区过或者具有非ext4文件系统的云硬盘。 CCE集群中的容器存储目前已支持加密(Kubernetes 1.13版本及以上),当前仅在部分区域(Region)提供端到端支持。 存储不支持选择企业项目,新创建的存储卷默认创建到default企业项目下。
-
操作步骤 请参见通过kubectl连接集群,使用kubectl连接集群。 执行如下命令,配置名为“sfs-deployment-example.yaml”的创建Pod的yaml文件。 touch sfs-deployment-example.yaml vi sfs-deployment-example.yaml 在无状态工作负载中基于pvc共享式使用文件存储示例: apiVersion: apps/v1 kind: Deployment metadata: name: sfs-deployment-example # 工作负载名称 namespace: default spec: replicas: 1 selector: matchLabels: app: sfs-deployment-example template: metadata: labels: app: sfs-deployment-example spec: containers: - image: nginx name: container-0 volumeMounts: - mountPath: /tmp # 挂载路径 name: pvc-sfs-example imagePullSecrets: - name: default-secret restartPolicy: Always volumes: - name: pvc-sfs-example persistentVolumeClaim: claimName: pvc-sfs-auto-example # 挂载PVC “spec.template.spec.containers.volumeMounts.name” 和 “spec.template.spec.volumes.name”有映射关系,必须保持一致。 执行如下命令创建工作负载。 kubectl create -f sfs-deployment-example.yaml
-
使用说明 使用便捷:您可以像使用传统服务器硬盘一样,对挂载到服务器上的块存储(硬盘)做格式化、创建文件系统等操作。 数据不共享:每台服务器使用独立的块存储(硬盘),多服务器之间数据隔离。 私有网络:数据访问必须在数据中心内部网络中。 容量性能:单卷容量有限(TB级),但性能极佳(IO读写时延ms级)。 使用限制:不支持导入分区过或者具有非ext4文件系统的云硬盘。 应用场景:主要面向HPC高性能计算、企业核心集群应用、企业应用系统和开发测试等。适用于供单实例部署的无状态负载(Deployment)和普通任务(Job),以及有状态工作负载(StatefulSet)的每个实例独占式使用。因为云硬盘属于非共享存储,不能同时被多个节点挂载,若两个Pod配置了使用同一个云硬盘,当这两个Pod被调度到不同的节点时,必然有一个Pod会因为无法挂载云硬盘导致无法成功启动。
-
操作步骤 参照使用kubectl自动创建文件存储中操作创建文件存储卷,记录文件存储卷名称。 请参见通过kubectl连接集群,使用kubectl连接集群。 新建一个YAML文件,用于创建工作负载。假设文件名为sfs-statefulset-example.yaml。 touch sfs-statefulset-example.yaml vi sfs-statefulset-example.yaml yaml示例如下: apiVersion: apps/v1kind: StatefulSetmetadata: name: sfs-statefulset-example namespace: defaultspec: replicas: 2 selector: matchLabels: app: sfs-statefulset-example serviceName: qwqq template: metadata: annotations: metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"","path":"","port":"","names":""}]' pod.alpha.kubernetes.io/initialized: "true" labels: app: sfs-statefulset-example spec: affinity: {} containers: - image: nginx:latest name: container-0 volumeMounts: - mountPath: /tmp name: pvc-sfs-example imagePullSecrets: - name: default-secret volumes: - name: pvc-sfs-example persistentVolumeClaim: claimName: cce-sfs-demo 表1 关键参数说明 前置路径 参数 描述 spec replicas 实例数。 metadata name 新建工作负载的名称。 spec.template.spec.containers image 新建工作负载使用的镜像。 spec.template.spec.containers.volumeMounts mountPath 容器内挂载路径。 spec serviceName 工作负载对应的服务,服务创建过程请参见创建有状态负载(StatefulSet)。 spec.template.spec.volumes.persistentVolumeClaim claimName 已有PVC名称。 spec.template.spec.containers.volumeMounts.name和spec.template.spec.volumes.name有映射关系,必须保持一致。 创建有状态工作负载。 kubectl create -f sfs-statefulset-example .yaml
-
操作步骤 登录OBS控制台,创建对象存储桶,记录桶名称和存储类型。 请参见通过kubectl连接集群,使用kubectl连接集群。 新建两个yaml文件,用于创建PersistentVolume(PV)、PersistentVolumeClaim(PVC),假设文件名为pv-obs-example.yaml、pvc-obs-example.yaml。 touch pv-obs-example.yaml pvc-obs-example.yaml K8s集群版本(K8s version) 说明 yaml示例 1.11 ≤ K8s version ≤ 1.13 1.11以上及1.13版本集群 请参见1.11~1.13 yaml文件配置示例 K8s version = 1.9 1.9版本集群 请参见1.9 yaml文件配置示例 1.11 ≤ K8s version ≤ 1.13(1.11以上及1.13版本集群) PV yaml文件配置示例: apiVersion: v1 kind: PersistentVolume metadata: name: pv-obs-example annotations: pv.kubernetes.io/provisioned-by: flexvolume-huawei.com/fuxiobsspec: accessModes: - ReadWriteMany capacity: storage: 1Gi claimRef: apiVersion: v1 kind: PersistentVolumeClaim name: pvc-obs-example namespace: default flexVolume: driver: huawei.com/fuxiobs fsType: obs options: fsType: obs region: cn-north-4 storage_class: STANDARD volumeID: test-obs persistentVolumeReclaimPolicy: Delete storageClassName: obs-standard 表1 关键参数说明 参数 描述 driver 挂载依赖的存储驱动,对象存储配置为“huawei.com/fuxiobs”。 storage_class 存储类型,包括STANDARD(标准桶)、STANDARD_IA(低频访问桶)。 region 集群所在的region。 volumeID 对象存储的桶名称。 获取方法:在CCE控制台,单击左侧栏目树中的“资源管理-存储管理”,在“对象存储卷”页签下单击PVC的名称,在PVC详情页的“PV详情”页签下复制“PV名称”后的内容即可。 storage 存储容量,单位为Gi。此处配置为固定值1Gi。 storageClassName 对象存储支持的存储类型,包括obs-standard(标准)、obs-standard-ia(低频)。 spec.claimRef.apiVersion 固定值"v1"。 spec.claimRef.kind 固定值"PersistentVolumeClaim"。 spec.claimRef.name 与下一步创建的pvc的name一致。 spec.claimRef.namespace 与下一步创建的pvc的namespace一致。 PVC yaml文件配置示例: apiVersion: v1kind: PersistentVolumeClaimmetadata: annotations: volume.beta.kubernetes.io/storage-class: obs-standard volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxiobs name: pvc-obs-example namespace: defaultspec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi volumeName: pv-obs-example 表2 关键参数说明 参数 描述 volume.beta.kubernetes.io/storage-class 对象存储支持的存储类型,包括obs-standard、obs-standard-ia。 volume.beta.kubernetes.io/storage-provisioner 必须使用flexvolume-huawei.com/fuxiobs。 volumeName PV的名称。 storage 存储容量,单位为Gi。此处配置为固定值1Gi。 K8s version = 1.9(1.9版本集群) PV yaml文件配置示例: apiVersion: v1 kind: PersistentVolume metadata: name: pv-obs-example namespace: default spec: accessModes: - ReadWriteMany capacity: storage: 1Gi flexVolume: driver: huawei.com/fuxiobs fsType: obs options: fsType: obs kubernetes.io/namespace: default region: cn-north-4 storage_class: STANDARD volumeID: test-obs persistentVolumeReclaimPolicy: Delete storageClassName: obs-standard 表3 关键参数说明 参数 描述 driver 挂载依赖的存储驱动,对象存储配置为“huawei.com/fuxiobs”。 storage_class 存储类型,包括STANDARD(标准桶)、STANDARD_IA(低频访问桶)。 region 集群所在的region。 volumeID 对象存储的桶名称。 获取方法:在CCE控制台,单击左侧栏目树中的“资源管理-存储管理”,在“对象存储卷”页签下单击PVC的名称,在PVC详情页的“PV详情”页签下复制“PV名称”后的内容即可。 storage 存储容量,单位为Gi。此处配置为固定值1Gi。 storageClassName 对象存储支持的存储类型,包括obs-standard(标准)、obs-standard-ia(低频)。 PVC yaml文件配置示例: apiVersion: v1kind: PersistentVolumeClaimmetadata: annotations: volume.beta.kubernetes.io/storage-class: obs-standard volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxiobs name: pvc-obs-example namespace: defaultspec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi volumeName: pv-obs-example volumeNamespace: default 表4 关键参数说明 参数 描述 volume.beta.kubernetes.io/storage-class 对象存储支持的存储类型,包括obs-standard、obs-standard-ia。 volume.beta.kubernetes.io/storage-provisioner 必须使用flexvolume-huawei.com/fuxiobs。 volumeName PV的名称。 storage 存储容量,单位为Gi。此处配置为固定值1Gi。 创建PV。 kubectl create -f pv-obs-example.yaml 创建PVC。 kubectl create -f pvc-obs-example.yaml
-
操作步骤 参照创建文件存储卷中操作创建极速文件存储卷,记录极速文件存储卷名称。 请参见通过kubectl连接集群,使用kubectl连接集群。 新建一个文件,用于创建工作负载。假设文件名为efs-statefulset-example.yaml。 touch efs-statefulset-example.yaml vi efs-statefulset-example.yaml yaml示例如下: apiVersion: apps/v1kind: StatefulSetmetadata: name: efs-statefulset-example namespace: defaultspec: replicas: 1 selector: matchLabels: app: efs-statefulset-example template: metadata: annotations: metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"","path":"","port":"","names":""}]' pod.alpha.kubernetes.io/initialized: 'true' labels: app: efs-statefulset-example spec: containers: - image: 'nginx:1.0.0' name: container-0 resources: requests: {} limits: {} env: - name: PAAS_APP_NAME value: efs-statefulset-example - name: PAAS_NAMESPACE value: default - name: PAAS_PROJECT_ID value: b18296881cc34f929baa8b9e95abf88b volumeMounts: - name: efs-statefulset-example mountPath: /tmp readOnly: false subPath: '' imagePullSecrets: - name: default-secret terminationGracePeriodSeconds: 30 volumes: - persistentVolumeClaim: claimName: cce-efs-import-jnr481gm-3y5o name: efs-statefulset-example affinity: {} tolerations: - key: node.kubernetes.io/not-ready operator: Exists effect: NoExecute tolerationSeconds: 300 - key: node.kubernetes.io/unreachable operator: Exists effect: NoExecute tolerationSeconds: 300 podManagementPolicy: OrderedReady serviceName: test updateStrategy: type: RollingUpdate 表1 关键参数说明 参数 描述 replicas 实例数。 name 新建工作负载的名称。 image 新建工作负载使用的镜像。 mountPath 容器内挂载路径。 serviceName 工作负载对应的服务,服务创建过程请参见创建有状态负载(StatefulSet)。 claimName 已有PVC名称。 spec.template.spec.containers.volumeMounts.name和spec.template.spec.volumes.name有映射关系,必须保持一致。 创建有状态工作负载。 kubectl create -f efs-statefulset-example.yaml
-
EmptyDir的类型 CCE提供了如下两种EmptyDir类型: 临时路径:Kubernetes原生的EmptyDir类型,生命周期与容器实例相同,并支持指定内存作为存储介质。容器实例消亡时,EmptyDir会被删除,数据会永久丢失。 本地临时卷:本地临时存储卷将节点的本地数据盘通过LVM组成存储池(VolumeGroup),然后划分LV作为EmptyDir的存储介质给容器挂载使用,相比原生EmptyDir默认的存储介质类型性能更好。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格