ื‘ืึทื ื“ ืคึผืœื•ื’ื™ื ืก ืคึฟืึทืจ Kubernetes ืกื˜ืึธืจื™ื“ื–ืฉ: ืคึฟื•ืŸ Flexvolum ืฆื• CSI

ื‘ืึทื ื“ ืคึผืœื•ื’ื™ื ืก ืคึฟืึทืจ Kubernetes ืกื˜ืึธืจื™ื“ื–ืฉ: ืคึฟื•ืŸ Flexvolum ืฆื• CSI

ืฆื•ืจื™ืง ื•ื•ืขืŸ Kubernetes ืื™ื– ื ืึธืš ื•ื•1.0.0, ืขืก ื–ืขื ืขืŸ ื’ืขื•ื•ืขืŸ ื‘ืึทื ื“ ืคึผืœื•ื’ื™ื ืก. ื–ื™ื™ ื–ืขื ืขืŸ ื“ืืจืฃ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืกื™ืกื˜ืขืžืขืŸ ืฆื• Kubernetes ืคึฟืึทืจ ืกื˜ืึธืจื™ื ื’ ืคึผืขืจืกื™ืกื˜ืขื ื˜ (ืฉื˜ืขื ื“ื™ืง) ืงืึทื ื˜ื™ื™ื ืขืจ ื“ืึทื˜ืŸ. ื–ื™ื™ืขืจ ื ื•ืžืขืจ ืื™ื– ื’ืขื•ื•ืขืŸ ืงืœื™ื™ืŸ, ืื•ืŸ ืฆื•ื•ื™ืฉืŸ ื“ื™ ืขืจืฉื˜ืข ื–ืขื ืขืŸ ื’ืขื•ื•ืขืŸ ืึทื–ืึท ืกื˜ืึธืจื™ื“ื–ืฉ ืคึผืจืึทื•ื•ื™ื™ื“ืขืจื– ื•ื•ื™ GCE PD, Ceph, AWS EBS ืื•ืŸ ืื ื“ืขืจืข.

ื“ื™ ืคึผืœื•ื’ื™ื ืก ื–ืขื ืขืŸ ืื™ื‘ืขืจื’ืขื’ืขื‘ืŸ ืฆื•ื–ืึทืžืขืŸ ืžื™ื˜ Kubernetes, ื•ื•ืึธืก ืื™ื– ื•ื•ืึธืก ื–ื™ื™ ื’ืึทื˜ ื–ื™ื™ืขืจ ื ืึธืžืขืŸ - ืื™ืŸ-ื‘ื•ื™ื. ืึธื‘ืขืจ, ืคึฟืึทืจ ืคื™ืœืข, ื“ื™ ื™ื’ื–ื™ืกื˜ื™ื ื’ ื’ืึทื ื’ ืคื•ืŸ ืึทื–ืึท ืคึผืœื•ื’ื™ื ืก ืื™ื– ื’ืขื•ื•ืขืŸ ื ื™ื˜ ื’ืขื ื•ื’ื™ืง. ืงืจืึทืคืฆืžืขืŸ ืฆื•ื’ืขื’ืขื‘ืŸ ืคึผืฉื•ื˜ ืคึผืœื•ื’ื™ื ืก ืฆื• ื“ื™ Kubernetes ื”ืึทืจืฅ ื ื™ืฆืŸ ืคึผืึทื˜ืฉืึทื–, ื ืึธืš ื•ื•ืึธืก ื–ื™ื™ ืึทืกืขืžื‘ืึทืœื“ ื–ื™ื™ืขืจ ืื™ื™ื’ืŸ Kubernetes ืื•ืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืขืก ืื•ื™ืฃ ื–ื™ื™ืขืจ ืกืขืจื•ื•ืขืจืก. ืึธื‘ืขืจ ืžื™ื˜ ื“ืขืจ ืฆื™ื™ื˜, ืงื•ื‘ืขืจื ืขื˜ืขืก ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืื™ื™ื ื’ืขื–ืขืŸ ืึทื– ืคื™ืฉ ื“ื™ ืคึผืจืึธื‘ืœืขื ืงืขื ืขืŸ ื ื™ื˜ ื–ื™ื™ืŸ ืกืึทืœื•ื•ื“. ืžืขื ื˜ืฉืŸ ื“ืึทืจืคึฟืŸ ืคื™ืฉืขืจื™ื™ึท ืจื•ื˜. ืื•ืŸ ืื™ืŸ ื“ื™ ืžืขืœื“ื•ื ื’ ืคื•ืŸ Kubernetes v1.2.0 ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ...

Flexvolum ืคึผืœื•ื’ื™ืŸ: ืžื™ื ื™ืžืึทืœ ืคื™ืฉืขืจื™ื™ึท ืจื•ื˜

Kubernetes ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื‘ืืฉืืคืŸ ื“ืขื FlexVolume ืคึผืœื•ื’ื™ืŸ, ื•ื•ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ืœืึทื“ื–ืฉื™ืงืึทืœ ืคืจื™ื™ืžื•ื•ืขืจืง ืคื•ืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื•ืŸ ืžืขื˜ื”ืึธื“ืก ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ Flexvolum ื“ืจื™ื•ื•ืขืจืก ื™ืžืคึผืœืึทืžืขื ืึทื“ ื“ื•ืจืš ื“ืจื™ื˜-ืคึผืึทืจื˜ื™ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก.

ื–ืืœ ืก ื”ืึทืœื˜ืŸ ืื•ืŸ ื ืขืžืขืŸ ืึท ื ืขืขื ื˜ืขืจ ืงื•ืง ืื™ืŸ ื•ื•ืึธืก ื“ื™ FlexVolume ืฉืึธืคืขืจ ืื™ื–. ื“ืึธืก ืื™ื– ืึท ื–ื™ื›ืขืจ ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ื˜ืขืงืข (ื‘ื™ื™ื ืขืจื™ ื˜ืขืงืข, Python ืฉืจื™ืคื˜, Bash ืฉืจื™ืคื˜, ืืื–"ื• ื•), ื•ื•ืึธืก, ื•ื•ืขืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“, ื ืขืžื˜ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืึทืจื’ื•ืžืขื ื˜ืŸ ื•ื•ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืื•ืŸ ืงืขืจื˜ ืึท ืึธื ื–ืึธื’ ืžื™ื˜ ืคืึทืจ-ื‘ืืงืื ื˜ ืคืขืœื“ืขืจ ืื™ืŸ JSON ืคึฟืึธืจืžืึทื˜. ืœื•ื™ื˜ ืงืึทื ื•ื•ืขื ืฉืึทืŸ, ื“ืขืจ ืขืจืฉื˜ืขืจ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืึทืจื’ื•ืžืขื ื˜ ืื™ื– ืฉื˜ืขื ื“ื™ืง ืึท ืื•ืคึฟืŸ, ืื•ืŸ ื“ื™ ืจื•ืขืŸ ืึทืจื’ื•ืžืขื ื˜ืŸ ื–ืขื ืขืŸ ื–ื™ื™ึทืŸ ืคึผืึทืจืึทืžืขื˜ืขืจืก.

ื‘ืึทื ื“ ืคึผืœื•ื’ื™ื ืก ืคึฟืึทืจ Kubernetes ืกื˜ืึธืจื™ื“ื–ืฉ: ืคึฟื•ืŸ Flexvolum ืฆื• CSI
ืงืึทื ืขืงืฉืึทืŸ ื“ื™ืึทื’ืจืึทืžืข ืคึฟืึทืจ CIFS ืฉืึทืจืขืก ืื™ืŸ OpenShift. Flexvolum ื“ืจื™ื™ื•ื•ืขืจ - ืจืขื›ื˜ ืื™ืŸ ื“ืขื ืฆืขื ื˜ืขืจ

ืžื™ื ื™ืžื•ื ืฉื˜ืขืœืŸ ืคื•ืŸ ืžืขื˜ื”ืึธื“ืก ืงื•ืงื˜ ื•ื•ื™ ื“ืึธืก:

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, ืื•ืŸ ืžื™ื˜ ืื™ื ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืจืขืกื™ื–ืข ื•ื•ืึทืœื™ื•ืžื– ืื™ืŸ ืคืึทืงื˜ื™ืฉ ืฆื™ื™ื˜, ืื™ืจ ืงืขื ืขืŸ ื‘ืืงืขื ืขืŸ ื–ื™ืš ืžื™ื˜ ืื•ื ื“ื–ืขืจ ืฆื•ืฆื™ืขืŸ ื‘ืงืฉื” ืื™ืŸ Rook Ceph Operator.

ืื•ืŸ ื“ืึธ ืื™ื– ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ Flexvolum ื“ืจื™ื™ื•ื•ืขืจ ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ NFS:

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

ืึทื–ื•ื™, ื ืึธืš ืคึผืจื™ืคึผืขืจื™ื ื’ ื“ื™ ืคืึทืงื˜ื™ืฉ ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ื˜ืขืงืข, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฆื•ืคึฟืขืœื™ืงืขืจ ื“ื™ ืฉืึธืคืขืจ ืฆื• ื“ื™ Kubernetes ืงื ื•ื™ืœ. ื“ืขืจ ืฉืึธืคืขืจ ืžื•ื–ืŸ ื–ื™ื™ืŸ ืœื™ื’ืŸ ืื•ื™ืฃ ื™ืขื“ืขืจ ืงื ื•ื™ืœ ื ืึธื“ืข ืœื•ื™ื˜ ืึท ืคึผืจื™ื“ื™ื˜ืขืจืžื™ื ื“ ื•ื•ืขื’. ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ ืขืก ืื™ื– ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ:

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

... ืึธื‘ืขืจ ื•ื•ืขืŸ ื ื™ืฆืŸ ืคืึทืจืฉื™ื“ืขื ืข Kubernetes ื“ื™ืกื˜ืจื™ื‘ื™ื•ืฉืึทื ื– (OpenShift, Rancher ...) ื“ืขืจ ื“ืจืš ืงืขืŸ ื–ื™ื™ืŸ ืึทื ื“ืขืจืฉ.

ืคืœืขืงืกื•ื•ืึธื•ื ืคึผืจืึธื‘ืœืขืžืก: ื•ื•ื™ ืฆื• ื•ื•ืึทืจืคืŸ ืึท ืคื™ืฉืขืจื™ื™ึท ืจื•ื˜ ืจื™ื›ื˜ื™ืง?

ื•ืคึผืœืึธืึทื“ื™ื ื’ ื“ื™ ืคืœืขืงืกื•ื•ืึธืœื•ื•ื ืฉืึธืคืขืจ ืฆื• ืงื ื•ื™ืœ ื ืึธื•ื“ื– ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื ื™ื˜-ื ื™ื˜-ื ื™ื˜ื•ื•ื™ืึทืœ ืึทืจื‘ืขื˜. ืึทืžืึธืœ ื“ื™ ืึธืคึผืขืจืึทืฆื™ืข ืžืึทื ื™ื•ืึทืœื™ ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜, ืขืก ืื™ื– ื’ืจื™ื ื’ ืฆื• ื˜ืจืขืคืŸ ืึท ืกื™ื˜ื•ืึทืฆื™ืข ื•ื•ืขืŸ ื ื™ื™ึท ื ืึธื•ื“ื– ื“ืขืจืฉื™ื™ึทื ืขืŸ ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ: ืจืขื›ื˜ ืฆื• ื“ืขืจ ืึทื“ื™ืฉืึทืŸ ืคื•ืŸ ืึท ื ื™ื™ึท ื ืึธื“ืข, ืึธื˜ืึทืžืึทื˜ื™ืง ื”ืึธืจื™ื–ืึธื ื˜ืึทืœ ืกืงื™ื™ืœื™ื ื’, ืึธื“ืขืจ - ื•ื•ืึธืก ืื™ื– ืขืจื’ืขืจ - ืคืึทืจื‘ื™ื™ึทื˜ ืคื•ืŸ ืึท ื ืึธื“ืข ืจืขื›ื˜ ืฆื• ืึท ืžืึทืœืคืึทื ื’ืงืฉืึทืŸ. ืื™ืŸ ื“ืขื ืคืึทืœ, ืึทืจื‘ืขื˜ ืžื™ื˜ ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ ืื•ื™ืฃ ื“ื™ ื ืึธื•ื“ื– ื–ืึธืœ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ืื™ื– ืื•ืžืžืขื’ืœืขืš, ื‘ื™ื– ืื™ืจ ื ืึธืš ืžืึทื ื™ื•ืึทืœื™ ืœื™ื™ื’ืŸ ื“ื™ Flexvolum ืฉืึธืคืขืจ ืฆื• ื–ื™ื™.

ื“ื™ ืœื™ื™ื–ื•ื ื’ ืฆื• ื“ืขื ืคึผืจืึธื‘ืœืขื ืื™ื– ื’ืขื•ื•ืขืŸ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืงื•ื‘ืขืจื ืขื˜ืขืก ืคึผืจื™ืžื™ื˜ื™ื•ื•ื– - DaemonSet. ื•ื•ืขืŸ ืึท ื ื™ื™ึทืข ื ืึธื“ืข ืื™ื– ืืจื•ื™ืก ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ, ืขืก ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ื›ึผื•ืœืœ ืึท ืคึผืึธื“ ืคื•ืŸ ืื•ื ื“ื–ืขืจ DaemonSet, ืฆื• ื•ื•ืึธืก ืึท ื”ื™ื’ืข ื‘ืึทื ื“ ืื™ื– ืึทื˜ืึทื˜ืฉื˜ ืฆื•ื–ืืžืขืŸ ื“ืขื ื“ืจืš ืฆื• ื’ืขืคึฟื™ื ืขืŸ Flexvolum ื“ืจื™ื•ื•ืขืจืก. ื ืึธืš ืึท ื’ืขืจืึธื˜ืŸ ืฉืึทืคื•ื ื’, ื“ื™ ืคึผืึธื“ ืงืึทืคึผื™ื– ื“ื™ ื ื™ื™ื˜ื™ืง ื˜ืขืงืขืก ืคึฟืึทืจ ื“ื™ ืฉืึธืคืขืจ ืฆื• ืึทืจื‘ืขื˜ืŸ ืฆื• ื“ื™ืกืง.

ื“ืึธ ืื™ื– ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ืึทื–ืึท ืึท DaemonSet ืคึฟืึทืจ ืืจื•ื™ืคืœื™ื™ื’ืŸ ืึท Flexvolum ืคึผืœื•ื’ื™ืŸ:

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>

... ืื•ืŸ ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ืึท Bash ืฉืจื™ืคื˜ ืคึฟืึทืจ ืืจื•ื™ืคืœื™ื™ื’ืŸ ื“ื™ Flexvolum ืฉืึธืคืขืจ:

#!/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

ืขืก ืื™ื– ื•ื•ื™ื›ื˜ื™ืง ื ื™ืฉื˜ ืฆื• ืคืึทืจื’ืขืกืŸ ืึทื– ื“ื™ ืงืึธืคึผื™ืข ืึธืคึผืขืจืึทืฆื™ืข ืื™ื– ื ื™ืฉื˜ ืึทื˜ืึธืžื™ืฉืข. ืขืก ืื™ื– ืึท ื”ื•ื™ืš ื’ืขืœืขื’ื ื”ื™ื™ึทื˜ ืึทื– ื“ื™ ืงื•ื‘ืขืœืขื˜ ื•ื•ืขื˜ ืึธื ื”ื™ื™ื‘ืŸ ื ื™ืฆืŸ ื“ืขื ืฉืึธืคืขืจ ืื™ื™ื“ืขืจ ื–ื™ื™ืŸ ืคึผืจืึทื•ื•ื™ื–ืฉืึทื ื– ืคึผืจืึธืฆืขืก ืื™ื– ื’ืึทื ืฅ, ื•ื•ืึธืก ื•ื•ืขื˜ ืคืึทืจืฉืึทืคืŸ ื“ื™ ืกื™ืกื˜ืขื ืฆื• ืงืจืึทืš. ื“ืขืจ ืจื™ื›ื˜ื™ืง ืฆื•ื’ืึทื ื’ ืื™ื– ืฆื• ืขืจืฉื˜ืขืจ ื ืึธื›ืžืึทื›ืŸ ื“ื™ ืฉืึธืคืขืจ ื˜ืขืงืขืก ืื•ื ื˜ืขืจ ืึท ืึทื ื“ืขืจืฉ ื ืึธืžืขืŸ, ืื•ืŸ ื“ืขืžืึธืœื˜ ื ื•ืฆืŸ ืึทืŸ ืึทื˜ืึธืžื™ืฉืข ืจืขื ืึทืžืข ืึธืคึผืขืจืึทืฆื™ืข.

ื‘ืึทื ื“ ืคึผืœื•ื’ื™ื ืก ืคึฟืึทืจ Kubernetes ืกื˜ืึธืจื™ื“ื–ืฉ: ืคึฟื•ืŸ Flexvolum ืฆื• CSI
ื“ื™ืึทื’ืจืึทืžืข ืคื•ืŸ โ€‹โ€‹ืืจื‘ืขื˜ืŸ ืžื™ื˜ Ceph ืื™ืŸ ื“ื™ ืจื•ืง ืึธืคึผืขืจืึทื˜ืึธืจ: ื“ื™ ืคืœืขืงืกื•ื•ืึธื•ืžืขื ื˜ ืฉืึธืคืขืจ ืื™ืŸ ื“ื™ ื“ื™ืึทื’ืจืึทืžืข ืื™ื– ืœื™ื’ืŸ ืื™ืŸ ื“ื™ ืจื•ืง ืึทื’ืขื ื˜

ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืคึผืจืึธื‘ืœืขื ื•ื•ืขืŸ ื ื™ืฆืŸ Flexvolum ื“ืจื™ื•ื•ืขืจืก ืื™ื– ืึทื– ืคึฟืึทืจ ืจื•ื‘ึฟ ืกื˜ืึธืจื™ื“ื–ืฉ ืื•ื™ืฃ ืึท ืงื ื•ื™ืœ ื ืึธื“ืข ื“ื™ ื ื•ื™ื˜ื™ืง ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืคึฟืึทืจ ื“ืขื ืžื•ื–ืŸ ื–ื™ื™ืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ (ืœืžืฉืœ, ื“ื™ ืกืขืฃ-ืคึผืจืึธืกื˜ ืคึผืขืงืœ ืคึฟืึทืจ Ceph). ื˜ื›ื™ืœืขืก, ื“ื™ Flexvolum ืคึผืœื•ื’ื™ืŸ ืื™ื– ื ื™ืฉื˜ ื“ื™ื–ื™ื™ื ื“ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ืึทื–ืึท ืงืึธืžืคึผืœืขืงืก ืกื™ืกื˜ืขืžืขืŸ.

ืึทืŸ ืึธืจื™ื’ื™ื ืขืœ ืœื™ื™ื–ื•ื ื’ ืฆื• ื“ืขื ืคึผืจืึธื‘ืœืขื ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื–ืขืŸ ืื™ืŸ ื“ื™ Flexvolum ื“ืจื™ื™ื•ื•ืขืจ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ Rook ืึธืคึผืขืจืึทื˜ืึธืจ:

ื“ืขืจ ืฉืึธืคืขืจ ื–ื™ืš ืื™ื– ื“ื™ื–ื™ื™ื ื“ ื•ื•ื™ ืึท RPC ืงืœื™ืขื ื˜. ื“ื™ IPC ื›ืึธืœืขืœ ืคึฟืึทืจ ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืื™ื– ืœื™ื’ืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ื•ื•ื™ ื“ืขืจ ืฉืึธืคืขืจ ื–ื™ืš. ืžื™ืจ ื’ืขื“ืขื ืงืขืŸ ืึทื– ืฆื• ืฆื™ื™ื›ืขื ืขืŸ ืฉืึธืคืขืจ ื˜ืขืงืขืก ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื’ื•ื˜ ืฆื• ื ื•ืฆืŸ DaemonSet, ื•ื•ืึธืก ืงืึทื ืขืงืฅ ื“ื™ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืžื™ื˜ ื“ื™ ืฉืึธืคืขืจ ื•ื•ื™ ืึท ื‘ืึทื ื“. ื ืึธืš ืงืึทืคึผื™ื™ื ื’ ื“ื™ ื ื™ื™ื˜ื™ืง ืจื•ืง ื“ืจื™ื™ื•ื•ืขืจ ื˜ืขืงืขืก, ื“ืขื ืคึผืึธื“ ื˜ื•ื˜ ื ื™ืฉื˜ ืฉื˜ืึทืจื‘ืŸ, ืึธื‘ืขืจ ืงืึทื ืขืงืฅ ืฆื• ื“ื™ IPC ื›ืึธืœืขืœ ื“ื•ืจืš ื“ื™ ืึทื˜ืึทื˜ืฉื˜ ื‘ืึทื ื“ ื•ื•ื™ ืึท ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ืจืคึผืง ืกืขืจื•ื•ืขืจ. ื“ื™ ืกืขืฃ-ืคึผืจืึธืกื˜ ืคึผืขืงืœ ืื™ื– ืฉื•ื™ืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืื™ืŸ ื“ื™ ืคึผืึธื“ ืงืึทื ื˜ื™ื™ื ืขืจ. ื“ื™ IPC ื›ืึธืœืขืœ ื™ื ืฉื•ืจื– ืึทื– ื“ื™ ืงื•ื‘ืขืœืขื˜ ื•ื•ืขื˜ ื™ื‘ืขืจื’ืขื‘ืŸ ืžื™ื˜ ืคึผื•ื ืงื˜ ื“ื™ ืคึผืึธื“ ื•ื•ืึธืก ืื™ื– ืœื™ื’ืŸ ืื•ื™ืฃ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื ืึธื“ืข. ืึทืœืฅ ื™ื ื“ื–ืฉื™ื ื™ืึทืก ืื™ื– ืคึผืฉื•ื˜! ..

ื–ื™ื™ึท ื’ืขื–ื•ื ื˜, ืื•ื ื“ื–ืขืจ ืœื™ื‘ื”ืึธื‘ืขืจ ... ืื™ืŸ-ื‘ื•ื™ื ืคึผืœื•ื’ื™ื ืก!

ืงื•ื‘ืขืจื ืขื˜ืขืก ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื“ื™ืกืงืึทื•ื•ืขืจื“ ืึทื– ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืคึผืœื•ื’ื™ื ืก ืคึฟืึทืจ ืกื˜ืึธืจื™ื“ื–ืฉ ืื™ืŸ ื“ื™ ื”ืึทืจืฅ ืื™ื– ืฆื•ื•ืึทื ืฆื™ืง. ืื•ืŸ ืึท ืขื ื“ืขืจื•ื ื’ ืื™ืŸ ื™ืขื“ืขืจ ืคื•ืŸ ื–ื™ื™, ืื™ื™ืŸ ื•ื•ืขื’ ืึธื“ืขืจ ืื ื“ืขืจืŸ, ื’ื™ื™ื˜ ื“ื•ืจืš ื“ื™ ืคื•ืœ ืงื•ื‘ืขืจื ืขื˜ืขืก ืžืขืœื“ื•ื ื’ ืฆื™ืงืœ.

ืขืก ื˜ื•ืจื ืก ืื•ื™ืก ืึทื– ืฆื• ื ื•ืฆืŸ ื“ื™ ื ื™ื™ึทืข ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ ืคึผืœื•ื’ื™ืŸ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ื“ื™ ื’ืื ืฆืข ืงื ื•ื™ืœ. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื“ืขื, ืื™ืจ ืงืขืŸ ื–ื™ื™ืŸ ืกืึทืคึผืจื™ื™ื–ื“ ืึทื– ื“ื™ ื ื™ื™ึทืข ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืงื•ื‘ืขืจื ืขื˜ืขืก ื•ื•ืขื˜ ืคึผืœื•ืฆืœื™ื ื’ ื•ื•ืขืจืŸ ื™ื ืงืึทืžืคึผืึทื˜ืึทื‘ืึทืœ ืžื™ื˜ ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ ื•ื•ืึธืก ืื™ืจ ื ื•ืฆืŸ ... ืึทื–ื•ื™ ืื™ืจ ื•ื•ื™ืฉืŸ ื“ื™ื™ืŸ ื˜ืจืขืจืŸ ืื•ืŸ, ืžื™ื˜ ื“ื™ื™ืŸ ืฆื™ื™ืŸ, ืงืึธื•ืึธืจื“ืึทื ืึทื˜ ืžื™ื˜ ื“ื™ื™ืŸ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืื•ืŸ ื ื™ืฆืขืจืก ื“ื™ ืฆื™ื™ื˜ ืฆื• ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ ืื•ืŸ Kubernetes ืงื ื•ื™ืœ. ืžื™ื˜ ืžืขื’ืœืขืš ื“ืึทื•ื ื˜ื™ื™ื ืื™ืŸ ื“ื™ ื˜ื ื™ื™ึท ืคื•ืŸ ื‘ืึทื“ื™ื ื•ื ื’ืขืŸ.

ื“ื™ ืกื™ื˜ื•ืึทืฆื™ืข ืื™ื– ืžืขืจ ื•ื•ื™ ืงืึธืžื™ืฉ, ื˜ืึธืŸ ื ื™ื˜ ืื™ืจ ื˜ืจืึทื›ื˜ืŸ? ืคืืจ ื“ืขืจ ื’ืื ืฆืขืจ ืงื”ื™ืœื” ืื™ื– ื’ืขื•ื•ืืจืŸ ืงืœืืจ ืื– ื“ืขืจ ืฆื•ื’ืื ื’ ืืจื‘ืขื˜ ื ื™ืฉื˜. ื“ื•ืจืš ืึท ื•ื•ื™ืœื“ ื‘ืึทืฉืœื•ืก, ืงื•ื‘ืขืจื ืขื˜ืขืก ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืžืขืœื“ืŸ ืึทื– ื ื™ื™ึท ืคึผืœื•ื’ื™ื ืก ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืกื˜ืึธืจื™ื“ื–ืฉ ื•ื•ืขื˜ ื ื™ื˜ ืžืขืจ ื–ื™ื™ืŸ ืื ื’ืขื ื•ืžืขืŸ ืื™ืŸ ื“ื™ ืงืขืจืŸ. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ื•ื•ื™ ืžื™ืจ ืฉื•ื™ืŸ ื•ื•ื™ืกืŸ, ืึท ื ื•ืžืขืจ ืคื•ืŸ ื›ื™ืกืึธืจืŸ ื–ืขื ืขืŸ ื™ื™ื“ืขื ืึทืคื™ื™ื“ ืื™ืŸ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ Flexvolum ืคึผืœื•ื’ื™ืŸ ...

ื“ื™ ืœืขืฆื˜ืข ืฆื•ื’ืขืœื™ื™ื’ื˜ ืคึผืœื•ื’ื™ืŸ ืคึฟืึทืจ ื•ื•ืึทืœื™ื•ืžื– ืื™ืŸ Kubernetes, CSI, ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขืจื•ืคึฟืŸ ืฆื• ืคืึทืจืžืึทื›ืŸ ื“ืขื ืึทืจื•ื™ืกื’ืขื‘ืŸ ืžื™ื˜ ืคึผืขืจืกื™ืกื˜ืขื ื˜ ื“ืึทื˜ืŸ ืกื˜ืึธืจื™ื“ื–ืฉ ืึทืžืึธืœ ืื•ืŸ ืคึฟืึทืจ ืึทืœืข. ื–ื™ื™ืŸ ืึทืœืฃ ื•ื•ืขืจืกื™ืข, ืžืขืจ ื’ืึธืจ ืจื™ืคืขืจื“ ืฆื• ื•ื•ื™ Out-of-Tree CSI Volume Plugins, ืื™ื– ืึทื ืึทื•ื ืกื˜ ืื™ืŸ ื“ื™ ืžืขืœื“ื•ื ื’ ืงื•ื‘ืขืจื ืขื˜ืขืก 1.9.

ืงืึทื ื˜ื™ื™ื ืขืจ ืกื˜ืึธืจื™ื“ื–ืฉ ืฆื•ื‘ื™ื ื“ ืึธื“ืขืจ CSI 3000 ืกืคึผื™ื ื ื™ื ื’ ืจื•ื˜!

ืขืจืฉื˜ืขืจ ืคื•ืŸ ืึทืœืข, ืื™ืš ื•ื•ืึธืœื˜ ื•ื•ื™ ืฆื• ื˜ืึธืŸ ืึทื– CSI ืื™ื– ื ื™ืฉื˜ ื‘ืœื•ื™ื– ืึท ื‘ืึทื ื“ ืคึผืœื•ื’ื™ืŸ, ืึธื‘ืขืจ ืึท ืคืึทืงื˜ื™ืฉ ื ืึธืจืžืึทืœ ืฆื• ืฉืึทืคึฟืŸ ืžื ื”ื’ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ืึทื˜ืŸ ื•ื•ืขืจื›ืึทื•ื–ื™ื–. ืงืึทื ื˜ื™ื™ื ืขืจ ืึธืจืงืขืกื˜ืจืึทื˜ื™ืึธืŸ ืกื™ืกื˜ืขืžืขืŸ ืึทื–ืึท ื•ื•ื™ Kubernetes ืื•ืŸ Mesos ื–ืขื ืขืŸ ื’ืขืžื™ื™ื ื˜ ืฆื• "ืœืขืจื ืขืŸ" ื•ื•ื™ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ื™ืžืคึผืœืึทืžืขื ืึทื“ ืœื•ื™ื˜ ื“ืขื ื ืึธืจืžืึทืœ. ืื•ืŸ ืื™ืฆื˜ ื”ืึธื‘ ืื™ืš ืฉื•ื™ืŸ ื’ืขืœืขืจื ื˜ ืงื•ื‘ืขืจื ืขื˜ืขืก.

ื•ื•ืึธืก ืื™ื– ื“ื™ ืกื˜ืจื•ืงื˜ื•ืจ ืคื•ืŸ ื“ื™ CSI ืคึผืœื•ื’ื™ืŸ ืื™ืŸ Kubernetes? ื“ื™ CSI ืคึผืœื•ื’ื™ืŸ ืึทืจื‘ืขื˜ ืžื™ื˜ ืกืคึผืขืฆื™ืขืœ ื“ืจื™ื•ื•ืขืจืก (CSI ื“ืจื™ื•ื•ืขืจืก) ื’ืขืฉืจื™ื‘ืŸ ื“ื•ืจืš ื“ืจื™ื˜ ืคึผืึทืจื˜ื™ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก. ื CSI ื“ืจื™ื™ื•ื•ืขืจ ืื™ืŸ Kubernetes ื–ืึธืœ ืžื™ื ื™ืžืึทืœ ืฆื•ื ื•ื™ืคืฉื˜ืขืœื  ื–ื™ืš ืคื•ืŸ ืฆื•ื•ื™ื™ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ (ืคึผืึธื“ืก):

  • ืงืึธื ื˜ืจืึธืœืœืขืจ - ืžืึทื ื™ื“ื–ืฉื™ื– ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืคึผืขืจืกื™ืกื˜ืขื ื˜ ืกื˜ืึธืจื™ื“ื–ืฉ. ืขืก ืื™ื– ื™ืžืคึผืœืึทืžืขื ืึทื“ ื•ื•ื™ ืึท ื’ืจืคึผืง ืกืขืจื•ื•ืขืจ, ืคึฟืึทืจ ื•ื•ืึธืก ื“ื™ ืคึผืจื™ืžื™ื˜ื™ื•ื• ืื™ื– ื’ืขื ื™ืฆื˜ StatefulSet.
  • ื ืึธื“ืข - ืื™ื– ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ืžืึทื•ื ื˜ื™ื ื’ ืคึผืขืจืกื™ืกื˜ืขื ื˜ ืกื˜ืึธืจื™ื“ื–ืฉ ืฆื• ืงื ื•ื™ืœ ื ืึธื•ื“ื–. ืขืก ืื™ื– ืื•ื™ืš ื™ืžืคึผืœืึทืžืขื ืึทื“ ื•ื•ื™ ืึท ื’ืจืคึผืง ืกืขืจื•ื•ืขืจ, ืึธื‘ืขืจ ืึท ืคึผืจื™ืžื™ื˜ื™ื•ื• ืื™ื– ื’ืขื ื™ืฆื˜ ืคึฟืึทืจ ืขืก DaemonSet.

ื‘ืึทื ื“ ืคึผืœื•ื’ื™ื ืก ืคึฟืึทืจ Kubernetes ืกื˜ืึธืจื™ื“ื–ืฉ: ืคึฟื•ืŸ Flexvolum ืฆื• CSI
ื•ื•ื™ ื“ื™ CSI ืคึผืœื•ื’ื™ืŸ ืึทืจื‘ืขื˜ ืื™ืŸ Kubernetes

ืื™ืจ ืงืขื ื˜ ืœืขืจื ืขืŸ ื•ื•ืขื’ืŸ ืขื˜ืœืขื›ืข ืื ื“ืขืจืข ื“ืขื˜ืึทื™ืœืก ืคื•ืŸ CSI ืก ืึทืจื‘ืขื˜, ืœืžืฉืœ, ืคึฟื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ "ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ื™ C.S.I.' ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ืคื•ืŸ ื•ื•ืึธืก ืžื™ืจ ืืจื•ื™ืก ืึท ื™ืึธืจ ืฆื•ืจื™ืง.

ื“ื™ ืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ืคื•ืŸ ืึทื–ืึท ืึท ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ

  • ืคึฟืึทืจ ื™ืงืขืจื“ื™ืง ื˜ื™ื ื’ื– ื•ื•ื™ ืจืขื“ื–ืฉื™ืกื˜ืขืจื™ื ื’ ืึท ืฉืึธืคืขืจ ืคึฟืึทืจ ืึท ื ืึธื“ืข, ื“ื™ ืงื•ื‘ืขืจื ืขื˜ืขืก ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื™ืžืคึผืœืึทืžืขื ืึทื“ ืึท ืกื›ื•ื ืคื•ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื–. ืื™ืจ ื ื™ื˜ ืžืขืจ ื“ืึทืจืคึฟืŸ ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืึท JSON ืขื ื˜ืคืขืจ ืžื™ื˜ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– ื–ื™ืš, ื•ื•ื™ ืื™ื– ื’ืขืฉืขืŸ ืคึฟืึทืจ ื“ื™ Flexvolum ืคึผืœื•ื’ื™ืŸ.
  • ืึทื ืฉื˜ืึธื˜ "ืกืœื™ืคึผื™ื ื’" ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ื˜ืขืงืขืก ืึทื ื˜ื• ื ืึธื•ื“ื–, ืžื™ืจ ืื™ืฆื˜ ื•ืคึผืœืึธืึทื“ ืคึผืึธื“ืก ืฆื• ื“ื™ ืงื ื•ื™ืœ. ื“ืึธืก ืื™ื– ื•ื•ืึธืก ืžื™ืจ ื˜ื›ื™ืœืขืก ื“ืขืจื•ื•ืึทืจื˜ืŸ ืคื•ืŸ Kubernetes: ืึทืœืข ืคึผืจืึทืกืขืกืึทื– ืคืึทืœืŸ ื™ืŸ ืงืึทื ื˜ื™ื™ื ืขืจื– ื“ื™ืคึผืœื•ื™ื“ ืžื™ื˜ Kubernetes ืคึผืจื™ืžื™ื˜ื™ื•ื•ื–.
  • ืื™ืจ ื ื™ื˜ ืžืขืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึทื ื˜ื•ื•ื™ืงืœืขืŸ ืึท RPC ืกืขืจื•ื•ืขืจ ืื•ืŸ RPC ืงืœื™ืขื ื˜ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ืงืึธืžืคึผืœืขืงืก ื“ืจื™ื•ื•ืขืจืก. ื“ืขืจ ืงืœื™ืขื ื˜ ืื™ื– ื™ืžืคึผืœืึทืžืขื ืึทื“ ืคึฟืึทืจ ืื•ื ื“ื– ื“ื•ืจืš Kubernetes ื“ืขื•ื•ืขืœืึธืคึผืขืจืก.
  • ืคืึธืจืŸ ืึทืจื’ื•ืžืขื ื˜ืŸ ืฆื• ืึทืจื‘ืขื˜ืŸ ืื™ื‘ืขืจ ื“ื™ gRPC ืคึผืจืึธื˜ืึธืงืึธืœ ืื™ื– ืคื™ืœ ืžืขืจ ื‘ืึทืงื•ื•ืขื, ืคืœืขืงืกืึทื‘ืึทืœ ืื•ืŸ ืคืึทืจืœืึธื–ืœืขืš ื•ื•ื™ ืฆื• ืคืึธืจืŸ ื–ื™ื™ ื“ื•ืจืš ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืึทืจื’ื•ืžืขื ื˜ืŸ. ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ื™ ืฆื• ืœื™ื™ื’ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื‘ืึทื ื“ ื‘ืึทื ื™ืฅ ืžืขื˜ืจื™ืงืก ืฆื• CSI ื“ื•ืจืš ืึทื“ื™ื ื’ ืึท ืกื˜ืึทื ื“ืขืจื“ื™ื™ื–ื“ gRPC ืื•ืคึฟืŸ, ืื™ืจ ืงืขื ืขืŸ ืœื™ื™ืขื ืขืŸ: ืื•ื ื“ื–ืขืจ ืฆื•ืฆื™ืขืŸ ื‘ืงืฉื” ืคึฟืึทืจ vsphere-csi ืฉืึธืคืขืจ.
  • ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืึทืงืขืจื– ื“ื•ืจืš IPC ืกืึทืงืึทืฅ, ืึทื–ื•ื™ ื ื™ืฉื˜ ืฆื• ื–ื™ื™ืŸ ืฆืขืžื™ืฉื˜ ืฆื™ ื“ื™ ืงื•ื‘ืขืœืขื˜ ื’ืขืฉื™ืงื˜ ื“ื™ ื‘ืงืฉื” ืฆื• ื“ื™ ืจื™ื›ื˜ื™ืง ืคึผืึธื“.

ืฆื™ ื“ืขืจ ืจืฉื™ืžื” ื“ืขืจืžืื ื˜ ืื™ืจ ืคื•ืŸ ืขืคึผืขืก? ื“ื™ ืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ืคื•ืŸ CSI ื–ืขื ืขืŸ ืกืึทืœื•ื•ื™ื ื’ ื“ื™ ื–ืขืœื‘ืข ืคึผืจืึธื‘ืœืขืžืก, ื•ื•ืึธืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ื’ืขื ื•ืžืขืŸ ืื™ืŸ ื—ืฉื‘ื•ืŸ ื•ื•ืขืŸ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ื“ื™ Flexvolum ืคึผืœื•ื’ื™ืŸ.

ืคื™ื™ื ื“ื™ื ื’ื–

CSI ื•ื•ื™ ืึท ื ืึธืจืžืึทืœ ืคึฟืึทืจ ื™ืžืคึผืœืึทืžืขื ื™ื ื’ ืžื ื”ื’ ืคึผืœื•ื’ื™ื ืก ืคึฟืึทืจ ื™ื ื˜ืขืจืึทืงื˜ื™ื ื’ ืžื™ื˜ ื“ืึทื˜ืŸ ื•ื•ืขืจื›ืึทื•ื–ื™ื– ืื™ื– ื’ืขื•ื•ืขืŸ ื–ื™ื™ืขืจ ื•ื•ืึทืจืขื ื‘ืืงื•ืžืขืŸ ื“ื•ืจืš ื“ื™ ืงื”ืœ. ื“ืขืจืฆื•, ืจืขื›ื˜ ืฆื• ื–ื™ื™ืขืจ ืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ืื•ืŸ ื•ื•ืขืจืกืึทื˜ื™ืœืึทื˜ื™, CSI ื“ืจื™ื•ื•ืขืจืก ื–ืขื ืขืŸ ื‘ืืฉืืคืŸ ืืคื™ืœื• ืคึฟืึทืจ ืกื˜ืึธืจื™ื“ื–ืฉ ืกื™ืกื˜ืขืžืขืŸ ืึทื–ืึท ื•ื•ื™ Ceph ืึธื“ืขืจ AWS EBS, ืคึผืœื•ื’ื™ื ืก ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื•ื•ืึธืก ื–ืขื ืขืŸ ืฆื•ื’ืขื’ืขื‘ืŸ ืื™ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹Kubernetes.

ืื™ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ 2019, ืื™ืŸ-ื‘ื•ื™ื ืคึผืœื•ื’ื™ื ืก ื–ืขื ืขืŸ ื“ืขืจืงืœืขืจื˜ ื’ืขื•ื•ืืจืŸ ืคืึทืจืขืœื˜ืขืจื˜. ืžื™ืจ ืคึผืœืึทื ื™ืจืŸ ืฆื• ืคืึธืจื–ืขืฆืŸ ืฆื• ืฉื˜ื™ืฆืŸ ื“ื™ Flexvolum ืคึผืœื•ื’ื™ืŸ, ืึธื‘ืขืจ ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ืึทื ื˜ื•ื•ื™ืงืœืขืŸ ื ื™ื™ึทืข ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคึฟืึทืจ ืขืก.

ืžื™ืจ ื–ื™ืš ืฉื•ื™ืŸ ื”ืึธื‘ืŸ ื“ืขืจืคืึทืจื•ื ื’ ืžื™ื˜ ceph-csi, vsphere-csi ืื•ืŸ ื–ืขื ืขืŸ ื’ืจื™ื™ื˜ ืฆื• ืœื™ื™ื’ืŸ ืฆื• ื“ืขืจ ืจืฉื™ืžื”! ื‘ื™ื– ืื™ืฆื˜, CSI ืื™ื– ืงืึธื•ืคึผื™ื ื’ ืžื™ื˜ ื“ื™ ื˜ืึทืกืงืก ืึทืกื™ื™ื ื“ ืฆื• ืขืก ืžื™ื˜ ืึท ืงืœืึทืคึผ, ืึธื‘ืขืจ ืžื™ืจ ื•ื•ืขืœืŸ ื•ื•ืึทืจื˜ืŸ ืื•ืŸ ื–ืขืŸ.

ื“ื• ื–ืืœืกื˜ ื ื™ืฉื˜ ืคืึทืจื’ืขืกืŸ ืึทื– ืึทืœืฅ ื ื™ื™ึท ืื™ื– ืึท ื’ื•ื˜ ืจื™ื˜ื™ื ื’ืงื™ื ื’ ืคื•ืŸ ื“ื™ ืึทืœื˜!

ืคึผืก

ืœื™ื™ืขื ืขืŸ ืื•ื™ืš ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ื‘ืœืึธื’:

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’