全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

容器实例支持挂载云硬盘

最近更新时间:2024-07-12 14:44:22

对于通过virtual-kubelet创建的容器实例,支持容器实例通过指定云硬盘ID或自动创建云硬盘这两种方式挂载云硬盘。

前提

注意事项

容器实例挂载云硬盘时,请注意以下事项:

  • 云硬盘为非共享存储,一个云硬盘只能挂载到一个容器实例。

  • 云硬盘只能挂载到相同可用区的容器实例,不支持跨可用区挂载。

指定云硬盘ID挂载

步骤1:创建云硬盘

1.登录云硬盘控制台

2.创建云硬盘并记录云盘ID。

注:如果您使用之前已有的云硬盘,请确保云硬盘所属的地域和可用区与将挂载此云硬盘的容器实例一致,且该云硬盘未进行分区格式化。

步骤2:将云硬盘挂载到容器实例

创建容器实例并挂载云硬盘,配置示例如下:

Flexvolume模式
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-ebs
  namespace: default
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
        annotations:
            k8s.ksyun.com/kci-instance-type: N3.2B  #指定N3机型,2核4G的云服务器为容器实例底层资源
        labels:
            app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        volumeMounts:
        - name: test
          mountPath: "/data"
      volumes:
      - name: test
        flexVolume:
          driver: "ksc/ebs"   # 必填,值必须为 ksc/ebs
          fsType: "ext4"      # ext3,ext4,xfs,缺省为ext4   
          options:
            volumeId: 1600a2b4-09fb-4845-9167-f57df39dbb65  # 云硬盘的Id
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: type
                operator: In
                values:
                - virtual-kubelet
      tolerations:
      - key: rbkci-virtual-kubelet.io/provider
        value: kingsoftcloud
        effect: NoSchedule

CSI模式

注意:使用CSI模式需要注意,vk虚拟节点子网建议只指定一个,指定多子网可能出现云盘与机型实例不在同一可用区的情况,导致开机失败。

CSI模式需要通过PV/PVC使用,静态存储卷挂载方式如下:

  • 定义PV

apiVersion: v1
kind: PersistentVolume
metadata:
  name: csi-pv
spec:
  storageClassName: ""
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  csi:
    driver: "com.ksc.csi.diskplugin"
    fsType: "ext4"
    volumeHandle: "b5c80953-1499-40ff-918a-4d6d4dfbfddd" # 待挂载的云硬盘Id
  nodeAffinity:  # 选填,通过定义该参数可以将使用这个PV的Pod调度到指定地域和可用区的节点上
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: failure-domain.beta.kubernetes.io/region
          operator: In
          values:
          - "cn-beijing-6" # 节点的地域
        - key: failure-domain.beta.kubernetes.io/zone
          operator: In
          values:
          - "cn-beijing-6a"  # 节点的可用区
  • 定义PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-disk
  namespace: default
spec:
  storageClassName: ""
  volumeName: csi-pv  # 指定需绑定的PV名称,如不指定会根据存储容量和accessModes自动匹配符合条件的PV
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  • 创建Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-disk-deploy
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - name: pvc-disk
          mountPath: "/data"
      volumes:
      - name: pvc-disk
        persistentVolumeClaim:
          claimName: pvc-disk
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: type
                operator: In
                values:
                - virtual-kubelet
      tolerations:
      - key: rbkci-virtual-kubelet.io/provider
        value: kingsoftcloud
        effect: NoSchedule

待Pod正常运行后,执行df -h -T命令查看盘的大小、挂载路径和文件系统类型均正确。

image20220826114754542.png

创建容器实例时自动新建云硬盘并挂载

创建容器实例,并配置云硬盘相关参数,配置示例如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-ebs
  namespace: default
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
        annotations:
            k8s.ksyun.com/kci-instance-type: N3.2B  #指定N3机型,2核4G的云服务器为容器实例底层资源
        labels:
            app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        volumeMounts:
        - name: test
          mountPath: "/data"
      volumes:
      - name: test
        flexVolume:
          driver: "ksc/ebs"   # 必填,值必须为 ksc/ebs
          fsType: "ext4"      # ext3,ext4,xfs,缺省为ext4   
          options:
            type: "SSD3.0"      # 必填
            size: "30"        # 必填
            delWithInstance: "true"   # 缺省值为false
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: type
                operator: In
                values:
                - virtual-kubelet
      tolerations:
      - key: rbkci-virtual-kubelet.io/provider
        value: kingsoftcloud
        effect: NoSchedule

options参数说明如下表所示:

名称

类型

示例值

是否必填

描述

volumeId

String

“f2c0c483-e5e7-4477-8245-05acbf97cc24”

已有云硬盘ID,该云盘需处于待挂载状态。

type

String

“SSD3.0”

新建云硬盘时,指定云硬盘类型:
1. 支持SSD3.0/EHDD;
2. S6/X6机型支持ESSD型数据盘,具体类型值为:“ESSD_PL0/ESSD_PL1/ESSD_PL2”

size

String

“200”

新建云硬盘时,云硬盘大小,单位为GB。
若云硬盘类型为SSD3.0/EHDD,取值范围为[10,32000];
若云硬盘类型为ESSD_PL0/ESSD_PL1,取值范围为[40,32000];
若云硬盘类型为ESSD_PL2,取值范围为[461,32000]。

snapshotId

String

“bae18ac5-3af3-40a5-a1c7-5282b35866ed”

新建云硬盘时,云硬盘快照ID,支持SSD3.0云硬盘和EHDD高效云盘,以及S6/X6机型支持ESSD型云硬盘。

delWithInstance

String

“true”

新建云硬盘时,配置云硬盘是否随pod删除而释放,缺省为false。

注:若flexvolume options中同时配置了 volumeId 和 其它云硬盘盘创建参数,则volumeId优先级高,会走指定云硬盘ID挂载流程,不会创建云硬盘。

待Pod正常运行后,执行df -h -T命令查看盘的大小、挂载路径和文件系统类型均正确。

image20220826164242973.png

云硬盘控制台

在云硬盘控制台,可以查看挂载到容器实例的云硬盘信息。

云硬盘控制台的列表页.png

在云硬盘的详情页,“挂载主机”显示容器实例的名称,“挂载设备”显示云硬盘的设备文件名。

云硬盘详情页无红框.png

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈