IDC

给CCE集群的节点添加第二块数据盘_云容器引擎 CCE_最佳实践_集群

作者:admin 2021-09-23 我要评论

您可以使用 “安装前执行脚本” 功能来配置CCE集群节点(弹性云服务器ECS),配置方法请参见 创建集群-高级配置 。 1.13.10及更高版本的集群创建节点时,若未开...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

您可以使用“安装前执行脚本”功能来配置CCE集群节点(弹性云服务器ECS),配置方法请参见创建集群-高级配置

  • 1.13.10及更高版本的集群创建节点时,若未开启LVM管理的数据盘,请参考本章节的介绍填写安装前执行脚本进行格式化,否则该数据盘仍会被LVM管理。
  • 1.13.10之前版本的集群创建节点时,若未开启LVM管理的数据盘请务必格式化,否则会与第一块数据盘进行二选一被LVM管理,进而导致与预期不符的情况。

在使用“安装前执行脚本”功能前,请预先编写一个可以格式化数据盘的脚本(该脚本需以root用户执行)。

输入参数:

  1. 设定该脚本名字为formatdisk.sh,将formatdisk.sh保存到您的OBS中,获取该文件在OBS中的地址,获取方式请参见通过对象URL访问对象
  2. 需要指定docker数据盘(使用LVM管理的数据盘称之为docker数据盘)的大小,且docker盘不能与第二块盘大小一致。例如:100G的docker盘,110G的第二块数据盘。
  3. 第二块数据盘的挂载路径。例如:/data/code。

“安装前执行脚本”中执行以下命令来实现格式化能力:

cd /tmp;curl -k -X GET OBS的地址/formatdisk.sh -1 -O;fdisk -l;sleep 30;bash -x formatdisk.sh 100 /data/code;fdisk -l

formatdisk.sh脚本示例如下:

dockerdisksize=$1
mountdir=$2
systemdisksize=40
i=0
while [ 20 -gt $i ]; do 
    echo $i; 
    if [ $(lsblk -o KNAME,TYPE | grep disk | grep -v nvme | awk '{print $1}' | awk '{ print "/dev/"$1}' |wc -l) -ge 3 ]; then 
        break 
    else 
        sleep 5 
    fi; 
    i=$[i+1] 
done 
all_devices=$(lsblk -o KNAME,TYPE | grep disk | grep -v nvme | awk '{print $1}' | awk '{ print "/dev/"$1}')
for device in ${all_devices[@]}; do
    isRawDisk=$(lsblk -n $device 2>/dev/null | grep disk | wc -l)
    if [[ ${isRawDisk} > 0 ]]; then
        # is it partitioned ?
        match=$(lsblk -n $device 2>/dev/null | grep -v disk | wc -l)
        if [[ ${match} > 0 ]]; then
            # already partited
            [[ -n "${DOCKER_BLOCK_DEVICES}" ]] && echo "Raw disk ${device} has been partition, will skip this device"
            continue
        fi
    else
        isPart=$(lsblk -n $device 2>/dev/null | grep part | wc -l)
        if [[ ${isPart} -ne 1 ]]; then
            # not parted
            [[ -n "${DOCKER_BLOCK_DEVICES}" ]] && echo "Disk ${device} has not been partition, will skip this device"
            continue
        fi
        # is used ?
        match=$(lsblk -n $device 2>/dev/null | grep -v part | wc -l)
        if [[ ${match} > 0 ]]; then
            # already used
            [[ -n "${DOCKER_BLOCK_DEVICES}" ]] && echo "Disk ${device} has been used, will skip this device"
            continue
        fi
        isMount=$(lsblk -n -o MOUNTPOINT $device 2>/dev/null)
        if [[ -n ${isMount} ]]; then
            # already used
            [[ -n "${DOCKER_BLOCK_DEVICES}" ]] && echo "Disk ${device} has been used, will skip this device"
            continue
        fi
        isLvm=$(sfdisk -lqL 2>>/dev/null | grep $device | grep "8e.*Linux LVM")
        if [[ ! -n ${isLvm} ]]; then
            # part system type is not Linux LVM
            [[ -n "${DOCKER_BLOCK_DEVICES}" ]] && echo "Disk ${device} system type is not Linux LVM, will skip this device"
            continue
        fi
    fi
    block_devices_size=$(lsblk -n -o SIZE $device 2>/dev/null | awk '{ print $1}')
    if [[ ${block_devices_size}"x" != "${dockerdisksize}Gx" ]] && [[ ${block_devices_size}"x" != "${systemdisksize}Gx" ]]; then
echo "n
p
1


w
" | fdisk $device
        mkfs -t ext4 ${device}1
        mkdir -p $mountdir
	uuid=$(blkid ${device}1 |awk '{print $2}')
	echo "${uuid}  $mountdir ext4  noatime  0 0" | tee -a /etc/fstab >/dev/null
        mount $mountdir
    fi
done

如果直接拷贝上方示例不能正常执行,请使用dos2unix工具进行格式转换。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
腾讯云代理商
精彩导读
海外云服务器
热门资讯
腾讯云代理商