เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชฎเชพเชŸเซ‡ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเซเชฒเช—เชˆเชจเซเชธ: เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎเชฅเซ€ CSI เชธเซเชงเซ€

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชฎเชพเชŸเซ‡ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเซเชฒเช—เชˆเชจเซเชธ: เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎเชฅเซ€ CSI เชธเซเชงเซ€

เชœเซเชฏเชพเชฐเซ‡ Kubernetes เชนเชœเซ เชชเชฃ v1.0.0 เชนเชคเซเช‚, เชคเซเชฏเชพเช‚ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเซเชฒเช—เช‡เชจเซเชธ เชนเชคเชพ. เชธเชคเชค (เช•เชพเชฏเชฎเซ€) เช•เชจเซเชŸเซ‡เชจเชฐ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฟเชธเซเชŸเชฎเซ‹เชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชฎเชจเซ€ เชœเชฐเซ‚เชฐ เชนเชคเซ€. เชคเซ‡เชฎเชจเซ€ เชธเช‚เช–เซเชฏเชพ เช“เช›เซ€ เชนเชคเซ€, เช…เชจเซ‡ เชชเซเชฐเชฅเชฎเชฎเชพเช‚ GCE PD, Ceph, AWS EBS เช…เชจเซ‡ เช…เชจเซเชฏ เชœเซ‡เชตเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชชเซเชฐเชฆเชพเชคเชพเช“ เชนเชคเชพ.

เชชเซเชฒเช—เช‡เชจเซเชธ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชธเชพเชฅเซ‡ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ, เชคเซ‡เชฅเซ€ เชœ เชคเซ‡เชฎเชจเซ‡ เชคเซ‡เชฎเชจเซเช‚ เชจเชพเชฎ เชฎเชณเซเชฏเซเช‚ - เช‡เชจ-เชŸเซเชฐเซ€. เชœเซ‹ เช•เซ‡, เช˜เชฃเชพ เชฒเซ‹เช•เซ‹ เชฎเชพเชŸเซ‡, เช†เชตเชพ เชชเซเชฒเช—เชฟเชจเซเชธเชจเซ‹ เชนเชพเชฒเชจเซ‹ เชธเซ‡เชŸ เช…เชชเซ‚เชฐเชคเซ‹ เชนเซ‹เชตเชพเชจเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡. เช•เชพเชฐเซ€เช—เชฐเซ‹เช เชชเซ‡เชšเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซ€เชธ เช•เซ‹เชฐเชฎเชพเช‚ เชธเชฐเชณ เชชเซเชฒเช—เชˆเชจเซ‹ เช‰เชฎเซ‡เชฐเซเชฏเชพ, เชคเซเชฏเชพเชฐเชฌเชพเชฆ เชคเซ‡เช“เช เชคเซ‡เชฎเชจเชพ เชชเซ‹เชคเชพเชจเชพ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเซเชฏเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชคเซ‡เชฎเชจเชพ เชธเชฐเซเชตเชฐ เชชเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเชฏเชพ. เชชเชฐเช‚เชคเซ เชธเชฎเชฏ เชœเชคเชพเช‚, เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชตเชฒเชชเชฐเซเชธเชจเซ‡ เชคเซ‡ เชธเชฎเชœเชพเชฏเซเช‚ เชฎเชพเช›เชฒเซ€ เชธเชฎเชธเซเชฏเชพ เชนเชฒ เชฅเชˆ เชถเช•เชคเซ€ เชจเชฅเซ€. เชฒเซ‹เช•เซ‹เชจเซ‡ เชœเชฐเซ‚เชฐ เช›เซ‡ เชฎเชพเช›เซ€เชฎเชพเชฐเซ€ เชฒเชพเช•เชกเซ€. เช…เชจเซ‡ Kubernetes v1.2.0 เชจเชพ เชชเซเชฐเช•เชพเชถเชจเชฎเชพเช‚ เชคเซ‡ เชฆเซ‡เช–เชพเชฏเซเช‚...

เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎ เชชเซเชฒเช—เช‡เชจ: เชจเซเชฏเซ‚เชจเชคเชฎ เชซเชฟเชถเชฟเช‚เช— เชฐเซ‹เชก

Kubernetes เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เช FlexVolume เชชเซเชฒเช—เช‡เชจ เชฌเชจเชพเชตเซเชฏเซเช‚, เชœเซ‡ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฆเซเชตเชพเชฐเชพ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเชพ Flexvolume เชกเซเชฐเชพเช‡เชตเชฐเซ‹ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชšเชฒ เช…เชจเซ‡ เชชเชฆเซเชงเชคเชฟเช“เชจเซเช‚ เชคเชพเชฐเซเช•เชฟเช• เชฎเชพเชณเช–เซเช‚ เชนเชคเซเช‚.

เชšเชพเชฒเซ‹ เชฌเช‚เชง เช•เชฐเซ€เช เช…เชจเซ‡ เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎ เชกเซเชฐเชพเชˆเชตเชฐ เชถเซเช‚ เช›เซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชจเชœเซ€เช•เชฅเซ€ เชจเชœเชฐ เช•เชฐเซ€เช. เช† เชšเซ‹เช•เซเช•เชธ เช›เซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชซเชพเช‡เชฒ (เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชซเชพเช‡เชฒ, เชชเชพเชฏเชฅเซ‹เชจ เชธเซเช•เซเชฐเชฟเชชเซเชŸ, เชฌเซ‡เชถ เชธเซเช•เซเชฐเชฟเชชเซเชŸ, เชตเช—เซ‡เชฐเซ‡), เชœเซ‡, เชœเซเชฏเชพเชฐเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เชฅเชพเชฏ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เช‡เชจเชชเซเชŸ เชคเชฐเซ€เช•เซ‡ เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจ เชฆเชฒเซ€เชฒเซ‹ เชฒเซ‡ เช›เซ‡ เช…เชจเซ‡ JSON เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชชเซ‚เชฐเซเชต-เชœเชพเชฃเซ€เชคเชพ เชซเซ€เชฒเซเชกเซเชธ เชธเชพเชฅเซ‡เชจเซ‹ เชธเช‚เชฆเซ‡เชถ เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡. เชธเช‚เชฎเซ‡เชฒเชจ เชฆเซเชตเชพเชฐเชพ, เชชเซเชฐเชฅเชฎ เช†เชฆเซ‡เชถ เชตเชพเช•เซเชฏ เชฆเชฒเซ€เชฒ เชนเช‚เชฎเซ‡เชถเชพ เชเช• เชชเชฆเซเชงเชคเชฟ เช›เซ‡, เช…เชจเซ‡ เชฌเชพเช•เซ€เชจเซ€ เชฆเชฒเซ€เชฒเซ‹ เชคเซ‡เชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เช›เซ‡.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชฎเชพเชŸเซ‡ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเซเชฒเช—เชˆเชจเซเชธ: เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎเชฅเซ€ CSI เชธเซเชงเซ€
เช“เชชเชจเชถเชฟเชซเซเชŸเชฎเชพเช‚ CIFS เชถเซ‡เชฐเซเชธ เชฎเชพเชŸเซ‡ เช•เชจเซ‡เช•เซเชถเชจ เชกเชพเชฏเชพเช—เซเชฐเชพเชฎ. เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎ เชกเซเชฐเชพเชˆเชตเชฐ - เชœเชฎเชฃเซ‡ เช•เซ‡เชจเซเชฆเซเชฐเชฎเชพเช‚

เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เชจเซเชฏเซ‚เชจเชคเชฎ เชธเชฎเซ‚เชน เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡:

flexvolume_driver mount # ะพั‚ะฒะตั‡ะฐะตั‚ ะทะฐ ะฟั€ะธัะพะตะดะธะฝะตะฝะธะต ั‚ะพะผะฐ ะบ pod'ัƒ
# ะคะพั€ะผะฐั‚ ะฒะพะทะฒั€ะฐั‰ะฐะตะผะพะณะพ ัะพะพะฑั‰ะตะฝะธั:
{
  "status": "Success"/"Failure"/"Not supported",
  "message": "ะŸะพ ะบะฐะบะพะน ะฟั€ะธั‡ะธะฝะต ะฑั‹ะป ะฒะพะทะฒั€ะฐั‰ะตะฝ ะธะผะตะฝะฝะพ ั‚ะฐะบะพะน ัั‚ะฐั‚ัƒั",
}

flexvolume_driver unmount # ะพั‚ะฒะตั‡ะฐะตั‚ ะทะฐ ะพั‚ัะพะตะดะธะฝะตะฝะธะต ั‚ะพะผะฐ ะพั‚ pod'ะฐ
# ะคะพั€ะผะฐั‚ ะฒะพะทะฒั€ะฐั‰ะฐะตะผะพะณะพ ัะพะพะฑั‰ะตะฝะธั:
{
  "status": "Success"/"Failure"/"Not supported",
  "message": "ะŸะพ ะบะฐะบะพะน ะฟั€ะธั‡ะธะฝะต ะฑั‹ะป ะฒะพะทะฒั€ะฐั‰ะตะฝ ะธะผะตะฝะฝะพ ั‚ะฐะบะพะน ัั‚ะฐั‚ัƒั",
}

flexvolume_driver init # ะพั‚ะฒะตั‡ะฐะตั‚ ะทะฐ ะธะฝะธั†ะธะฐะปะธะทะฐั†ะธัŽ ะฟะปะฐะณะธะฝะฐ
# ะคะพั€ะผะฐั‚ ะฒะพะทะฒั€ะฐั‰ะฐะตะผะพะณะพ ัะพะพะฑั‰ะตะฝะธั:
{
  "status": "Success"/"Failure"/"Not supported",
  "message": "ะŸะพ ะบะฐะบะพะน ะฟั€ะธั‡ะธะฝะต ะฑั‹ะป ะฒะพะทะฒั€ะฐั‰ะตะฝ ะธะผะตะฝะฝะพ ั‚ะฐะบะพะน ัั‚ะฐั‚ัƒั",
  // ะžะฟั€ะตะดะตะปัะตั‚, ะธัะฟะพะปัŒะทัƒะตั‚ ะปะธ ะดั€ะฐะนะฒะตั€ ะผะตั‚ะพะดั‹ attach/deatach
  "capabilities":{"attach": True/False}
}

เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ attach ะธ detach เชกเซเชฐเชพเช‡เชตเชฐเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช•เซเชฏเซ‚เชฌเซ‡เชฒเซ‡เชŸ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เช•เชพเชฐเซเชฏ เช•เชฐเชถเซ‡ เชคเซ‡ เชฆเซƒเชถเซเชฏเชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชถเซ‡. เชคเซเชฏเชพเช‚ เชชเชฃ เช–เชพเชธ เชชเชฆเซเชงเชคเชฟเช“ เช›เซ‡ expandvolume ะธ expandfs, เชœเซ‡ เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เชตเซ‹เชฒเซเชฏเซเชฎเชจเซเช‚ เช•เชฆ เชฌเชฆเชฒเชตเชพ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เช›เซ‡.

เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเชพ เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เชœเซ‡ เชชเชฆเซเชงเชคเชฟ เช‰เชฎเซ‡เชฐเซ‡ เช›เซ‡ expandvolume, เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เชธเชฎเชฏเชฎเชพเช‚ เชตเซ‹เชฒเซเชฏเซเชฎเชจเซเช‚ เช•เชฆ เชฌเชฆเชฒเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ, เชคเชฎเซ‡ เชคเชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เชชเชฐเชฟเชšเชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชฎเชพเชฐเซ€ เช–เซ‡เช‚เชšเชตเชพเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เชฐเซเช• เชธเซ‡เชซ เช“เชชเชฐเซ‡เชŸเชฐเชฎเชพเช‚.

เช…เชจเซ‡ เช…เชนเซ€เช‚ NFS เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ Flexvolume เชกเซเชฐเชพเช‡เชตเชฐเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡:

usage() {
    err "Invalid usage. Usage: "
    err "t$0 init"
    err "t$0 mount <mount dir> <json params>"
    err "t$0 unmount <mount dir>"
    exit 1
}

err() {
    echo -ne $* 1>&2
}

log() {
    echo -ne $* >&1
}

ismounted() {
    MOUNT=`findmnt -n ${MNTPATH} 2>/dev/null | cut -d' ' -f1`
    if [ "${MOUNT}" == "${MNTPATH}" ]; then
        echo "1"
    else
        echo "0"
    fi
}

domount() {
    MNTPATH=$1

    NFS_SERVER=$(echo $2 | jq -r '.server')
    SHARE=$(echo $2 | jq -r '.share')

    if [ $(ismounted) -eq 1 ] ; then
        log '{"status": "Success"}'
        exit 0
    fi

    mkdir -p ${MNTPATH} &> /dev/null

    mount -t nfs ${NFS_SERVER}:/${SHARE} ${MNTPATH} &> /dev/null
    if [ $? -ne 0 ]; then
        err "{ "status": "Failure", "message": "Failed to mount ${NFS_SERVER}:${SHARE} at ${MNTPATH}"}"
        exit 1
    fi
    log '{"status": "Success"}'
    exit 0
}

unmount() {
    MNTPATH=$1
    if [ $(ismounted) -eq 0 ] ; then
        log '{"status": "Success"}'
        exit 0
    fi

    umount ${MNTPATH} &> /dev/null
    if [ $? -ne 0 ]; then
        err "{ "status": "Failed", "message": "Failed to unmount volume at ${MNTPATH}"}"
        exit 1
    fi

    log '{"status": "Success"}'
    exit 0
}

op=$1

if [ "$op" = "init" ]; then
    log '{"status": "Success", "capabilities": {"attach": false}}'
    exit 0
fi

if [ $# -lt 2 ]; then
    usage
fi

shift

case "$op" in
    mount)
        domount $*
        ;;
    unmount)
        unmount $*
        ;;
    *)
        log '{"status": "Not supported"}'
        exit 0
esac

exit 1

เชคเซ‡เชฅเซ€, เชตเชพเชธเซเชคเชตเชฟเช• เชเช•เซเชเซ‡เช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชซเชพเช‡เชฒ เชคเซˆเชฏเชพเชฐ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชคเชฎเชพเชฐเซ‡ เชœเชฐเซ‚เชฐ เช›เซ‡ เชกเซเชฐเชพเช‡เชตเชฐเชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เช…เชชเชฒเซ‹เชก เช•เชฐเซ‹. เชกเซเชฐเชพเชˆเชตเชฐ เชฆเชฐเซ‡เช• เช•เซเชฒเชธเซเชŸเชฐ เชจเซ‹เชก เชชเชฐ เชชเซ‚เชฐเซเชตเชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชชเชพเชฅ เช…เชจเซเชธเชพเชฐ เชธเซเชฅเชฟเชค เชนเซ‹เชตเซ‹ เชœเซ‹เชˆเช. เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เชคเซ‡ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚:

/usr/libexec/kubernetes/kubelet-plugins/volume/exec/ะธะผั_ะฟะพัั‚ะฐะฒั‰ะธะบะฐ_ั…ั€ะฐะฝะธะปะธั‰ะฐ~ะธะผั_ะดั€ะฐะนะฒะตั€ะฐ/

... เชชเชฐเช‚เชคเซ เชœเซเชฏเชพเชฐเซ‡ เชตเชฟเชตเชฟเชง เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเชฟเชธเซเชŸเซเชฐเชฟเชฌเซเชฏเซเชถเชจ (เช“เชชเชจเชถเชฟเชซเซเชŸ, เชฐเซ‡เชจเซเชšเชฐ...) เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชชเชพเชฅ เช…เชฒเช— เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎ เชธเชฎเชธเซเชฏเชพเช“: เชซเชฟเชถเชฟเช‚เช— เชธเชณเชฟเชฏเชพเชจเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชธเซเชŸ เช•เชฐเชตเซ€?

เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎ เชกเซเชฐเชพเช‡เชตเชฐเชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐ เชจเซ‹เชกเซเชธ เชชเชฐ เช…เชชเชฒเซ‹เชก เช•เชฐเชตเซเช‚ เช เชฌเชฟเชจ-เชคเซเชšเซเช› เช•เชพเชฐเซเชฏ เชนเชคเซเช‚. เชเช•เชตเชพเชฐ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เช‘เชชเชฐเซ‡เชถเชจ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชจเชตเชพ เชจเซ‹เชกเซเชธ เชฆเซ‡เช–เชพเชฏ เชคเซ‡เชตเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเซ‹ เชธเชฐเชณ เช›เซ‡: เชจเชตเชพ เชจเซ‹เชกเชจเชพ เช‰เชฎเซ‡เชฐเชพเชจเซ‡ เช•เชพเชฐเชฃเซ‡, เชธเซเชตเชšเชพเชฒเชฟเชค เช†เชกเซ€ เชธเซเช•เซ‡เชฒเชฟเช‚เช—, เช…เชฅเชตเชพ - เช–เชฐเชพเชฌ เชถเซเช‚ เช›เซ‡ - เช–เชพเชฎเซ€เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชจเซ‹เชกเชจเซ‡ เชฌเชฆเชฒเชตเซเช‚. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช† เช—เชพเช‚เช เซ‹ เชชเชฐ เชธเช‚เช—เซเชฐเชน เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช เช…เชถเช•เซเชฏ เช›เซ‡, เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชคเชฎเซ‡ เชนเชœเซ เชชเชฃ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ Flexvolume เชกเซเชฐเชพเช‡เชตเชฐเชจเซ‡ เชคเซ‡เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ‹ เชจเชนเซ€เช‚ เช•เชฐเซ‹.

เช† เชธเชฎเชธเซเชฏเชพเชจเซ‹ เช‰เช•เซ‡เชฒ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช†เชฆเชฟเชฎเชฎเชพเช‚เชจเซ‹ เชเช• เชนเชคเซ‹ - DaemonSet. เชœเซเชฏเชพเชฐเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชจเชตเซ‹ เชจเซ‹เชก เชฆเซ‡เช–เชพเชฏ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เช…เชฎเชพเชฐเชพ เชกเซ‡เชฎเชจเชธเซ‡เชŸเชฎเชพเช‚เชฅเซ€ เชชเซ‹เชก เชงเชฐเชพเชตเซ‡ เช›เซ‡, เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎ เชกเซเชฐเชพเช‡เชตเชฐเซ‹ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เชชเชพเชฅ เชธเชพเชฅเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชตเซ‹เชฒเซเชฏเซเชฎ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เช›เซ‡. เชธเชซเชณ เชธเชฐเซเชœเชจ เชชเชฐ, เชชเซ‹เชก เชกเซเชฐเชพเชˆเชตเชฐ เชฎเชพเชŸเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชซเชพเชˆเชฒเซ‹เชจเซ€ เชจเช•เชฒ เช•เชฐเซ‡ เช›เซ‡.

เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎ เชชเซเชฒเช—เช‡เชจ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡ เช…เชนเซ€เช‚ เช†เชตเชพ เชกเซ‡เชฎเชจเชธเซ‡เชŸเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡:

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: flex-set
spec:
  template:
    metadata:
      name: flex-deploy
      labels:
        app: flex-deploy
    spec:
      containers:
        - image: <deployment_image>
          name: flex-deploy
          securityContext:
              privileged: true
          volumeMounts:
            - mountPath: /flexmnt
              name: flexvolume-mount
      volumes:
        - name: flexvolume-mount
          hostPath:
            path: <host_driver_directory>

... เช…เชจเซ‡ เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎ เชกเซเชฐเชพเชˆเชตเชฐ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡ เชฌเซ‡เชถ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ:

#!/bin/sh

set -o errexit
set -o pipefail

VENDOR=k8s.io
DRIVER=nfs

driver_dir=$VENDOR${VENDOR:+"~"}${DRIVER}
if [ ! -d "/flexmnt/$driver_dir" ]; then
  mkdir "/flexmnt/$driver_dir"
fi

cp "/$DRIVER" "/flexmnt/$driver_dir/.$DRIVER"
mv -f "/flexmnt/$driver_dir/.$DRIVER" "/flexmnt/$driver_dir/$DRIVER"

while : ; do
  sleep 3600
done

เชคเซ‡ เช•เซ‹เชชเซ€ เช“เชชเชฐเซ‡เชถเชจ เชญเซ‚เชฒเซ€ เชจเชฅเซ€ เชฎเชนเชคเซเชตเชจเซเช‚ เช›เซ‡ เชชเชฐเชฎเชพเชฃเซ เชจเชฅเซ€. เชคเซเชฏเชพเช‚ เชเช• เช‰เชšเซเชš เชคเช• เช›เซ‡ เช•เซ‡ เช•เซเชฌเซ‡เชฒเซ‡เชŸ เชคเซ‡เชจเซ€ เชœเซ‹เช—เชตเชพเชˆ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชชเซ‚เชฐเซเชฃ เชฅเชพเชฏ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚ เชกเซเชฐเชพเช‡เชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเชถเซ‡, เชœเซ‡ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชญเซ‚เชฒเชจเซเช‚ เช•เชพเชฐเชฃ เชฌเชจเชถเซ‡. เชธเชพเชšเซ‹ เช…เชญเชฟเช—เชฎ เช เช›เซ‡ เช•เซ‡ เชชเชนเซ‡เชฒเชพ เชกเซเชฐเชพเชˆเชตเชฐ เชซเชพเชˆเชฒเซ‹เชจเซ‡ เช…เชฒเช— เชจเชพเชฎ เชนเซ‡เช เชณ เชจเช•เชฒ เช•เชฐเชตเซ€, เช…เชจเซ‡ เชชเช›เซ€ เชชเชฐเชฎเชพเชฃเซ เชจเชพเชฎ เชฌเชฆเชฒเชตเชพเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชฎเชพเชŸเซ‡ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเซเชฒเช—เชˆเชจเซเชธ: เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎเชฅเซ€ CSI เชธเซเชงเซ€
เชฐเซเช• เช“เชชเชฐเซ‡เชŸเชฐเชฎเชพเช‚ เชธเซ‡เชซ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ‹ เชกเชพเชฏเชพเช—เซเชฐเชพเชฎ: เชกเชพเชฏเชพเช—เซเชฐเชพเชฎเชฎเชพเช‚ เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎ เชกเซเชฐเชพเชˆเชตเชฐ เชฐเซเช• เชเชœเชจเซเชŸเชจเซ€ เช…เช‚เชฆเชฐ เชธเซเชฅเชฟเชค เช›เซ‡

เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎ เชกเซเชฐเชพเช‡เชตเชฐเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช†เช—เชณเชจเซ€ เชธเชฎเชธเซเชฏเชพ เช เช›เซ‡ เช•เซ‡ เช•เซเชฒเชธเซเชŸเชฐ เชจเซ‹เชก เชชเชฐ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชฎเชพเชŸเซ‡ เช† เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, Ceph เชฎเชพเชŸเซ‡ ceph-เชธเชพเชฎเชพเชจเซเชฏ เชชเซ‡เช•เซ‡เชœ). เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎ เชชเซเชฒเช—เช‡เชจ เช†เชตเซ€ เชœเชŸเชฟเชฒ เชธเชฟเชธเซเชŸเชฎเซ‹เชจเซ‡ เชฒเชพเช—เซ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชกเชฟเชเชพเช‡เชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชจ เชนเชคเซเช‚.

เช† เชธเชฎเชธเซเชฏเชพเชจเซ‹ เชฎเซ‚เชณ เช‰เช•เซ‡เชฒ เชฐเซ‚เช• เช“เชชเชฐเซ‡เชŸเชฐเชจเชพ เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎ เชกเซเชฐเชพเชˆเชตเชฐ เช…เชฎเชฒเซ€เช•เชฐเชฃเชฎเชพเช‚ เชœเซ‹เชˆ เชถเช•เชพเชฏ เช›เซ‡:

เชกเซเชฐเชพเชˆเชตเชฐ เชชเซ‹เชคเซ‡ RPC เช•เซเชฒเชพเชฏเชจเซเชŸ เชคเชฐเซ€เช•เซ‡ เชฐเชšเชพเชฏเซ‡เชฒ เช›เซ‡. เชธเช‚เชฆเซ‡เชถเชพเชตเซเชฏเชตเชนเชพเชฐ เชฎเชพเชŸเซ‡ IPC เชธเซ‹เช•เซ‡เชŸ เช เชœ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชธเซเชฅเชฟเชค เช›เซ‡ เชœเซ‡ เชกเซเชฐเชพเช‡เชตเชฐ เชชเซ‹เชคเซ‡ เช›เซ‡. เช…เชฎเซ‡ เชฏเชพเชฆ เชฐเชพเช–เซ€เช เช›เซ€เช เช•เซ‡ เชกเซเชฐเชพเช‡เชตเชฐ เชซเชพเช‡เชฒเซ‹เชจเซ€ เชจเช•เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชกเซ‡เชฎเชจเชธเซ‡เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชธเชพเชฐเซเช‚ เชฐเชนเซ‡เชถเซ‡, เชœเซ‡ เชกเชพเชฏเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซ‡ เชตเซ‹เชฒเซเชฏเซเชฎ เชคเชฐเซ€เช•เซ‡ เชกเซเชฐเชพเช‡เชตเชฐ เชธเชพเชฅเซ‡ เชœเซ‹เชกเซ‡ เช›เซ‡. เชœเชฐเซ‚เชฐเซ€ เชฐเซ‚เช• เชกเซเชฐเชพเชˆเชตเชฐ เชซเชพเชˆเชฒเซ‹เชจเซ€ เชจเช•เชฒ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช† เชชเซ‹เชก เชฎเซƒเชคเซเชฏเซ เชชเชพเชฎเชคเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชธเช‚เชชเซ‚เชฐเซเชฃ RPC เชธเชฐเซเชตเชฐ เชคเชฐเซ€เช•เซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เชตเซ‹เชฒเซเชฏเซเชฎ เชฆเซเชตเชพเชฐเชพ IPC เชธเซ‹เช•เซ‡เชŸ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏ เช›เซ‡. ceph-เชธเชพเชฎเชพเชจเซเชฏ เชชเซ‡เช•เซ‡เชœ เชชเซ‹เชก เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เช…เช‚เชฆเชฐ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡. IPC เชธเซ‹เช•เซ‡เชŸ เช เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เช•เซเชฌเซ‡เชฒเซ‡เชŸ เช เชœ เชจเซ‹เชก เชชเชฐ เชธเซเชฅเชฟเชค เชชเซ‹เชก เชธเชพเชฅเซ‡ เชฌเชฐเชพเชฌเชฐ เชตเชพเชคเชšเซ€เชค เช•เชฐเชถเซ‡. เชฌเซเชฆเซเชงเชฟเชถเชพเชณเซ€ เชฌเชงเซเช‚ เชธเชฐเชณ เช›เซ‡! ..

เช—เซเชกเชฌเชพเชฏ, เช…เชฎเชพเชฐเชพ เชธเซเชจเซ‡เชนเซ€... เช‡เชจ-เชŸเซเชฐเซ€ เชชเซเชฒเช—เช‡เชจเซเชธ!

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชตเชฒเชชเชฐเซเชธเซ‡ เชถเซ‹เชงเซเชฏเซเช‚ เช•เซ‡ เช•เซ‹เชฐ เช…เช‚เชฆเชฐ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชฎเชพเชŸเซ‡ เชชเซเชฒเช—เชฟเชจเซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพ เชตเซ€เชธ เช›เซ‡. เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚เชจเชพ เชฆเชฐเซ‡เช•เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ, เชเช• เชฏเชพ เชฌเซ€เชœเซ€ เชฐเซ€เชคเซ‡, เชธเช‚เชชเซ‚เชฐเซเชฃ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชชเซเชฐเช•เชพเชถเชจ เชšเช•เซเชฐเชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡.

เชคเซ‡ เชคเชพเชฐเชฃ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชชเซเชฒเช—เช‡เชจเชจเชพ เชจเชตเชพ เชธเช‚เชธเซเช•เชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชธเชฎเช—เซเชฐ เช•เซเชฒเชธเซเชŸเชฐเชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช† เช‰เชชเชฐเชพเช‚เชค, เชคเชฎเชจเซ‡ เช†เชถเซเชšเชฐเซเชฏ เชฅเชถเซ‡ เช•เซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเซเช‚ เชจเชตเซเช‚ เชธเช‚เชธเซเช•เชฐเชฃ เชคเชฎเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเชˆ เชฐเชนเซเชฏเชพเช‚ เช›เซ‹ เชคเซ‡ Linux เช•เชฐเซเชจเชฒ เชธเชพเชฅเซ‡ เช…เชšเชพเชจเช• เช…เชธเช‚เช—เชค เชฌเชจเซ€ เชœเชถเซ‡... เชคเซ‡เชฅเซ€ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เช†เช‚เชธเซ เชฒเซ‚เช›เซ€ เชฒเซ‹ เช…เชจเซ‡, เชฆเชพเช‚เชค เชชเซ€เชธเซ€เชจเซ‡, เชคเชฎเชพเชฐเชพ เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸ เช…เชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชธเชพเชฅเซ‡ เชธเชฎเชฏเชธเชฐ เชธเช‚เช•เชฒเชจ เช•เชฐเซ‹. Linux เช•เชฐเซเชจเชฒ เช…เชจเซ‡ Kubernetes เช•เซเชฒเชธเซเชŸเชฐเชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‹. เชธเซ‡เชตเชพเช“เชจเซ€ เชœเซ‹เช—เชตเชพเชˆเชฎเชพเช‚ เชธเช‚เชญเชตเชฟเชค เชกเชพเช‰เชจเชŸเชพเช‡เชฎ เชธเชพเชฅเซ‡.

เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เชนเชพเชธเซเชฏเชœเชจเช• เช•เชฐเชคเชพเช‚ เชตเชงเซ เช›เซ‡, เชคเชฎเชจเซ‡ เชจเชฅเซ€ เชฒเชพเช—เชคเซเช‚? เชคเซ‡ เชธเชฎเช—เซเชฐ เชธเชฎเซเชฆเชพเชฏเชจเซ‡ เชธเซเชชเชทเซเชŸ เชฅเชˆ เช—เชฏเซเช‚ เช•เซ‡ เช…เชญเชฟเช—เชฎ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เช‡เชฐเชพเชฆเชพเชชเซ‚เชฐเซเชตเช•เชจเชพ เชจเชฟเชฐเซเชฃเชฏ เชฆเซเชตเชพเชฐเชพ, เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชตเชฒเชชเชฐเซเชธ เชœเชพเชนเซ‡เชฐเชพเชค เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชจเชตเชพ เชชเซเชฒเช—เชฟเชจเซเชธ เชนเชตเซ‡ เช•เชฐเซเชจเชฒเชฎเชพเช‚ เชธเซเชตเซ€เช•เชพเชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชจเชนเซ€เช‚. เชตเชงเซเชฎเชพเช‚, เชœเซ‡เชฎ เช†เชชเชฃเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชœเชพเชฃเซ€เช เช›เซ€เช, เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎ เชชเซเชฒเช—เช‡เชจเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชฎเชพเช‚ เชธเช‚เช–เซเชฏเชพเชฌเช‚เชง เช–เชพเชฎเซ€เช“ เช“เชณเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€...

Kubernetes, CSI เชฎเชพเช‚ เชตเซ‹เชฒเซเชฏเซเชฎเซ‹ เชฎเชพเชŸเซ‡ เชจเชตเซ€เชจเชคเชฎ เช‰เชฎเซ‡เชฐเชพเชฏเซ‡เชฒ เชชเซเชฒเช—เช‡เชจ, เชธเชคเชค เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเชพเชฅเซ‡ เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชเช•เชตเชพเชฐ เช…เชจเซ‡ เชฌเชงเชพ เชฎเชพเชŸเซ‡ เชฌเช‚เชง เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เชคเซ‡เชจเซเช‚ เช†เชฒเซเชซเชพ เชตเชฐเซเชเชจ, เชตเชงเซ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เช†เช‰เชŸ-เช“เชซ-เชŸเซเชฐเซ€ CSI เชตเซ‹เชฒเซเชฏเซเชฎ เชชเซเชฒเช—เช‡เชจเซเชธ เชคเชฐเซ€เช•เซ‡ เช“เชณเช–เชพเชฏ เช›เซ‡, เชคเซ‡เชจเซ€ เชœเชพเชนเซ‡เชฐเชพเชค เชชเซเชฐเช•เชพเชถเชจเชฎเชพเช‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€. เช•เซเชฌเชฐเซเชจเซ€เชŸเซเชธ 1.9.

เช•เชจเซเชŸเซ‡เชจเชฐ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ, เช…เชฅเชตเชพ CSI 3000 เชธเซเชชเชฟเชจเชฟเช‚เช— เชฐเซ‹เชก!

เชธเซŒ เชชเซเชฐเชฅเชฎ, เชนเซเช‚ เช เชจเซ‹เช‚เชงเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เช•เซ‡ CSI เชฎเชพเชคเซเชฐ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเซเชฒเช—เช‡เชจ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชตเชพเชธเซเชคเชตเชฟเช• เช›เซ‡ เชฎเชพเชจเช• เชกเซ‡เชŸเชพ เชตเซ‡เชฐเชนเชพเช‰เชธ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชธเซเชŸเชฎ เช˜เชŸเช•เซ‹ เชฌเชจเชพเชตเชตเชพ เชชเชฐ. เช•เชจเซเชŸเซ‡เชจเชฐ เช“เชฐเซเช•เซ‡เชธเซเชŸเซเชฐเซ‡เชถเชจ เชธเชฟเชธเซเชŸเชฎเซเชธ เชœเซ‡เชฎ เช•เซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช…เชจเซ‡ เชฎเซ‡เชธเซ‹เชธเชจเซ‡ เช† เชงเซ‹เชฐเชฃ เช…เชจเซเชธเชพเชฐ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชพเชฏเซ‡เชฒเชพ เช˜เชŸเช•เซ‹ เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเชตเซเช‚ เชคเซ‡ "เชถเซ€เช–เชตเซเช‚" เชนเชคเซเช‚. เช…เชจเซ‡ เชนเชตเซ‡ เชนเซเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชถเซ€เช–เซ€ เช—เชฏเซ‹ เช›เซเช‚.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ CSI เชชเซเชฒเช—เช‡เชจเชจเซเช‚ เชฎเชพเชณเช–เซเช‚ เชถเซเช‚ เช›เซ‡? CSI เชชเซเชฒเช—เชˆเชจ เช–เชพเชธ เชกเซเชฐเชพเชˆเชตเชฐเซ‹ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ (CSI เชกเซเชฐเชพเช‡เชตเชฐเซ‹) เชคเซƒเชคเซ€เชฏ เชชเช•เซเชท เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฆเซเชตเชพเชฐเชพ เชฒเช–เชพเชฏเซ‡เชฒ. เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ CSI เชกเซเชฐเชพเช‡เชตเชฐเชฎเชพเช‚ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เชฌเซ‡ เช˜เชŸเช•เซ‹ (เชชเซ‹เชกเซเชธ) เชนเซ‹เชตเชพ เชœเซ‹เชˆเช:

  • เชจเชฟเชฏเช‚เชคเซเชฐเช• - เชฌเชพเชนเซเชฏ เชธเชคเชค เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡ gRPC เชธเชฐเซเชตเชฐ เชคเชฐเซ€เช•เซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เช†เชฆเชฟเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡ StatefulSet.
  • เชจเซ‹เชก โ€” เช•เซเชฒเชธเซเชŸเชฐ เชจเซ‹เชกเซเชธเชฎเชพเช‚ เชธเชคเชค เชธเช‚เช—เซเชฐเชนเชจเซ‡ เชฎเชพเช‰เชจเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เช›เซ‡. เชคเซ‡ gRPC เชธเชฐเซเชตเชฐ เชคเชฐเซ€เช•เซ‡ เชชเชฃ เช…เชฎเชฒเชฎเชพเช‚ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เช†เชฆเชฟเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ DaemonSet.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชฎเชพเชŸเซ‡ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเซเชฒเช—เชˆเชจเซเชธ: เชซเซเชฒเซ‡เช•เซเชธเชตเซ‹เชฒเซเชฏเซเชฎเชฅเซ€ CSI เชธเซเชงเซ€
เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ CSI เชชเซเชฒเช—เช‡เชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡

เชคเชฎเซ‡ CSI เชจเชพ เช•เชพเชฐเซเชฏเชจเซ€ เช•เซ‡เชŸเชฒเซ€เช• เช…เชจเซเชฏ เชตเชฟเช—เชคเซ‹ เชตเชฟเชถเซ‡ เชถเซ€เช–เซ€ เชถเช•เซ‹ เช›เซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฒเซ‡เช–เชฎเชพเช‚เชฅเซ€C.S.I เชจเซ‡ เชธเชฎเชœเชตเซเช‚.ยป, เชœเซ‡เชจเซ‹ เช…เชจเซเชตเชพเชฆ เช…เชฎเซ‡ เชเช• เชตเชฐเซเชท เชชเชนเซ‡เชฒเชพ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซเชฏเซเช‚.

เช†เชตเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเชพ เชซเชพเชฏเชฆเชพ

  • เชจเซ‹เชก เชฎเชพเชŸเซ‡ เชกเซเชฐเชพเช‡เชตเชฐเชจเซ€ เชจเซ‹เช‚เชงเชฃเซ€ เช•เชฐเชตเชพ เชœเซ‡เชตเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹ เชฎเชพเชŸเซ‡, เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชตเชฒเชชเชฐเซเชธเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‹ เชธเชฎเซ‚เชน เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เซเชฏเซ‹ เชนเชคเซ‹. เชคเชฎเชพเชฐเซ‡ เชนเชตเซ‡ เช•เซเชทเชฎเชคเชพเช“ เชธเชพเชฅเซ‡ JSON เชชเซเชฐเชคเชฟเชธเชพเชฆ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€, เชœเซ‡เชฎ เช•เซ‡ Flexvolume เชชเซเชฒเช—เช‡เชจ เชฎเชพเชŸเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚.
  • เชจเซ‹เชกเซเชธ เชชเชฐ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชซเชพเช‡เชฒเซ‹เชจเซ‡ "เชธเซเชฒเชฟเชช" เช•เชฐเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡, เช…เชฎเซ‡ เชนเชตเซ‡ เช•เซเชฒเชธเซเชŸเชฐ เชชเชฐ เชชเซ‹เชกเซเชธ เช…เชชเชฒเซ‹เชก เช•เชฐเซ€เช เช›เซ€เช. เช•เซเชฌเชฐเชจเซ‡เชŸเชธ เชชเชพเชธเซ‡เชฅเซ€ เช†เชชเชฃเซ‡ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เช†เชจเซ€ เช…เชชเซ‡เช•เซเชทเชพ เชฐเชพเช–เซ€เช เช›เซ€เช: เชฌเชงเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชชเซเชฐเชฟเชฎเชฟเชŸเชฟเชตเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชœเชฎเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเชพ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เช…เช‚เชฆเชฐ เชฅเชพเชฏ เช›เซ‡.
  • เชœเชŸเชฟเชฒ เชกเซเชฐเชพเช‡เชตเชฐเซ‹เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เชนเชตเซ‡ RPC เชธเชฐเซเชตเชฐ เช…เชจเซ‡ RPC เช•เซเชฒเชพเชฏเช‚เชŸ เชตเชฟเช•เชธเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เช•เซเชฒเชพเชฏเช‚เชŸ เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชกเซ‡เชตเชฒเชชเชฐเซเชธ เชฆเซเชตเชพเชฐเชพ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚.
  • gRPC เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชชเชฐ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฆเชฒเซ€เชฒเซ‹ เชชเชธเชพเชฐ เช•เชฐเชตเซ€ เช เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจ เชฆเชฒเซ€เชฒเซ‹เชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชตเชพ เช•เชฐเชคเชพเช‚ เชตเชงเซ เช…เชจเซเช•เซ‚เชณ, เชฒเชตเชšเซ€เช• เช…เชจเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เช›เซ‡. เชชเซเชฐเชฎเชพเชฃเชฟเชค gRPC เชชเชฆเซเชงเชคเชฟ เช‰เชฎเซ‡เชฐเซ€เชจเซ‡ CSI เชฎเชพเช‚ เชตเซ‹เชฒเซเชฏเซเชฎ เชตเชชเชฐเชพเชถ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅเชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‰เชฎเซ‡เชฐเชตเซเช‚ เชคเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹: เช…เชฎเชพเชฐเซ€ เช–เซ‡เช‚เชšเชตเชพเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ vsphere-csi เชกเซเชฐเชพเช‡เชตเชฐ เชฎเชพเชŸเซ‡.
  • เชธเช‚เชšเชพเชฐ IPC เชธเซ‹เช•เซ‡เชŸเซเชธ เชฆเซเชตเชพเชฐเชพ เชฅเชพเชฏ เช›เซ‡, เชœเซ‡เชฅเซ€ เช•เซเชฌเซ‡เชฒเซ‡เชŸเซ‡ เชฏเซ‹เช—เซเชฏ เชชเซ‹เชกเชจเซ‡ เชตเชฟเชจเช‚เชคเซ€ เชฎเซ‹เช•เชฒเซ€ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชฎเซ‚เช‚เชเชตเชฃเชฎเชพเช‚ เชจ เช†เชตเซ‡.

เชถเซเช‚ เช† เชธเซ‚เชšเชฟ เชคเชฎเชจเซ‡ เช•เช‚เชˆเชชเชฃ เชฏเชพเชฆ เช…เชชเชพเชตเซ‡ เช›เซ‡? CSI เชจเชพ เชซเชพเชฏเชฆเชพ เช›เซ‡ เชธเชฎเชพเชจ เชธเชฎเชธเซเชฏเชพเช“เชจเซเช‚ เชจเชฟเชฐเชพเช•เชฐเชฃ, เชœเซ‡ Flexvolume เชชเซเชฒเช—เช‡เชจ เชตเชฟเช•เชธเชพเชตเชคเซ€ เชตเช–เชคเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชจ เชนเชคเชพ.

เชคเชพเชฐเชฃเซ‹

เชกเซ‡เชŸเชพ เชตเซ‡เชฐเชนเชพเช‰เชธเซ€เชธ เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชธเซเชŸเชฎ เชชเซเชฒเช—เชฟเชจเซเชธ เชฒเชพเช—เซ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชงเซ‹เชฐเชฃ เชคเชฐเซ€เช•เซ‡ CSI เชจเซ‡ เชธเชฎเซเชฆเชพเชฏ เชฆเซเชตเชพเชฐเชพ เช–เซ‚เชฌ เชœ เช‰เชทเซเชฎเชพเชญเชฐเซเชฏเซเช‚ เช†เชตเช•เชพเชฐ เชฎเชณเซเชฏเซ‹ เชนเชคเซ‹. เชคเชฆเซเชชเชฐเชพเช‚เชค, เชคเซ‡เชฎเชจเชพ เชซเชพเชฏเชฆเชพ เช…เชจเซ‡ เชตเชฐเซเชธเซ‡เชŸเชฟเชฒเชฟเชŸเซ€เชจเซ‡ เชฒเซ€เชงเซ‡, CSI เชกเซเชฐเชพเช‡เชตเชฐเซ‹ เชธเซ‡เชซ เช…เชฅเชตเชพ AWS EBS เชœเซ‡เชตเซ€ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเชฟเชธเซเชŸเชฎเซเชธ เชฎเชพเชŸเซ‡ เชชเชฃ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชชเซเชฒเช—เช‡เชจเซเชธ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชชเซเชฐเชฅเชฎ เชธเช‚เชธเซเช•เชฐเชฃเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ.

2019 เชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, เช‡เชจ-เชŸเซเชฐเซ€ เชชเซเชฒเช—เช‡เชจเซเชธ เช…เชชเซเชฐเชšเชฒเชฟเชค เชœเชพเชนเซ‡เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡. เช…เชฎเซ‡ Flexvolume เชชเซเชฒเช—เช‡เชจเชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เชตเชพเชจเซ€ เชฏเซ‹เชœเชจเชพ เชฌเชจเชพเชตเซ€เช เช›เซ€เช, เชชเชฐเช‚เชคเซ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชจเชตเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชตเชฟเช•เชธเชพเชตเซ€เชถเซเช‚ เชจเชนเซ€เช‚.

เช…เชฎเชจเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ ceph-csi, vsphere-csi เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เช…เชจเซเชญเชต เช›เซ‡ เช…เชจเซ‡ เช…เชฎเซ‡ เช† เชธเซ‚เชšเชฟเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช›เซ€เช! เช…เชคเซเชฏเชพเชฐ เชธเซเชงเซ€, CSI เชคเซ‡เชจเซ‡ เชธเซ‹เช‚เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเชพ เช•เชพเชฐเซเชฏเซ‹เชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเซ€ เชฐเชนเซ€ เช›เซ‡, เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ เชฐเชพเชน เชœเซ‹เชˆเชถเซเช‚ เช…เชจเซ‡ เชœเซ‹เชˆเชถเซเช‚.

เชญเซ‚เชฒเชถเซ‹ เชจเชนเซ€เช‚ เช•เซ‡ เชฌเชงเซเช‚ เชจเชตเซเช‚ เช เชœเซ‚เชจเชพ เชชเชฐ เชซเชฐเซ€เชฅเซ€ เชตเชฟเชšเชพเชฐเชตเซเช‚ เช›เซ‡!

PS

เช…เชฎเชพเชฐเชพ เชฌเซเชฒเซ‹เช— เชชเชฐ เชชเชฃ เชตเชพเช‚เชšเซ‹:

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹