最近更新时间:2024-07-12 14:44:22
对于通过virtual-kubelet创建的容器实例,支持容器实例通过指定云硬盘ID或自动创建云硬盘这两种方式挂载云硬盘。
已在Kubernetes集群中部署虚拟节点,部署方式:KCE集群参考Kubernetes集群对接KCI,自建集群参考自建Kubernetes集群中对接KCI。
容器实例挂载云硬盘时,请注意以下事项:
云硬盘为非共享存储,一个云硬盘只能挂载到一个容器实例。
云硬盘只能挂载到相同可用区的容器实例,不支持跨可用区挂载。
1.登录云硬盘控制台。
2.创建云硬盘并记录云盘ID。
注:如果您使用之前已有的云硬盘,请确保云硬盘所属的地域和可用区与将挂载此云硬盘的容器实例一致,且该云硬盘未进行分区格式化。
创建容器实例并挂载云硬盘,配置示例如下:
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模式需要注意,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
命令查看盘的大小、挂载路径和文件系统类型均正确。
创建容器实例,并配置云硬盘相关参数,配置示例如下:
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” | 是 | 新建云硬盘时,指定云硬盘类型: |
size | String | “200” | 是 | 新建云硬盘时,云硬盘大小,单位为GB。 |
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
命令查看盘的大小、挂载路径和文件系统类型均正确。
在云硬盘控制台,可以查看挂载到容器实例的云硬盘信息。
在云硬盘的详情页,“挂载主机”显示容器实例的名称,“挂载设备”显示云硬盘的设备文件名。
纯净模式