αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αž»αž€ KubernetesαŸ– αž–αžΈ Flexvolume αž‘αŸ… CSI

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αž»αž€ KubernetesαŸ– αž–αžΈ Flexvolume αž‘αŸ… CSI

αžαŸ’αžšαž›αž”αŸ‹αž˜αž€αžœαž·αž‰αž“αŸ…αž–αŸαž›αžŠαŸ‚αž› Kubernetes αž“αŸ…αžαŸ‚ v1.0.0 αž˜αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αŸ” αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž—αŸ’αž‡αžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‘αŸ… Kubernetes αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αž»αž„αžαžΊαž“αŸαžšαž‡αžΆαž”αŸ‹αž›αžΆαž”αŸ‹ (αž’αž…αž·αž“αŸ’αžαŸ’αžšαŸƒαž™αŸ)αŸ” αž…αŸ†αž“αž½αž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž˜αžΆαž“αžαž·αž…αžαž½αž… αž αžΎαž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ†αž”αžΌαž„αž‚αŸαžŠαžΌαž…αž‡αžΆ GCE PD, Ceph, AWS EBS αž“αž·αž„αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™αž‡αžΆαž˜αž½αž™ Kubernetes αžŠαŸ‚αž›αž“αŸαŸ‡αž‡αžΆαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž‘αž‘αž½αž›αž”αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡ - in-tree αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž“αž»αžŸαŸ’αžŸαž‡αžΆαž…αŸ’αžšαžΎαž“ αžŸαŸ†αžŽαž»αŸ†αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αž”αžΆαž“αž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαž˜αž·αž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αŸ” αžŸαž·αž”αŸ’αž”αž€αžšαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αžŸαžΆαž˜αž‰αŸ’αž‰αž‘αŸ…αžŸαŸ’αž“αžΌαž› Kubernetes αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ†αžŽαŸ‡ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αž–αž½αž€αž‚αŸαž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ† Kubernetes αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž αžΎαž™αžŠαŸ†αž‘αžΎαž„αžœαžΆαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΌαžš αŸ— αž‘αŸ…αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ Kubernetes αž”αžΆαž“αžŠαžΉαž„αžšαžΏαž„αž“αŸ„αŸ‡αŸ” αžαŸ’αžšαžΈ αž”αž‰αŸ’αž αžΆαž˜αž·αž“αž’αžΆαž…αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αžΆαž“αž‘αŸαŸ” αž˜αž“αž»αžŸαŸ’αžŸαžαŸ’αžšαžΌαžœαž€αžΆαžš αžŠαŸ†αž”αž„αž“αŸαžŸαžΆαž‘. αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ Kubernetes v1.2.0 αžœαžΆαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαŸ’αž›αž½αž“ ...

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ FlexvolumeαŸ– αžŠαŸ†αž”αž„αž“αŸαžŸαžΆαž‘αžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αžαŸ”

αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ Kubernetes αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ FlexVolume αžŠαŸ‚αž›αž‡αžΆαž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž‘αžΌαž‡αžΈαžαž›αž“αŸƒαž’αžαŸαžš αž“αž·αž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ Flexvolume αžŠαŸ‚αž›αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž—αžΆαž‚αžΈαž‘αžΈαž”αžΈαŸ”

αžαŸ„αŸ‡αžˆαž”αŸ‹ αž αžΎαž™αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž²αŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αžαžΆ αžαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ FlexVolume αž‡αžΆαž’αŸ’αžœαžΈαŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αŸ” αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αŸ” (αž―αž€αžŸαžΆαžšαž‚αŸ„αž›αž–αžΈαžš, αžŸαŸ’αž‚αŸ’αžšαžΈαž” Python, αžŸαŸ’αž‚αŸ’αžšαžΈαž” Bash αŸ” αžαžΆαž˜αž’αž“αž»αžŸαž‰αŸ’αž‰αžΆ αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž‘αžΈαž˜αž½αž™αžαŸ‚αž„αžαŸ‚αž‡αžΆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš αž αžΎαž™αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αž‚αžΊαž‡αžΆαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αž»αž€ KubernetesαŸ– αž–αžΈ Flexvolume αž‘αŸ… CSI
αžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜αžαž—αŸ’αž‡αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€ CIFS αž“αŸ…αž€αŸ’αž“αž»αž„ OpenShift αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ Flexvolume - αžαžΆαž„αžŸαŸ’αžαžΆαŸ†αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αž‡αŸ’αžˆαž˜αžŽαŸ’αžŒαž›

αžŸαŸ†αžŽαž»αŸ†αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž’αž”αŸ’αž”αž”αžšαž˜αžΆ αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡:

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 αž“αžΉαž„αž€αŸ†αžŽαžαŸ‹αžŸαŸαžŽαžΆαžšαžΈαž™αŸ‰αžΌαžŠαŸ‚αž› kubelet αž“αžΉαž„αž’αŸ’αžœαžΎαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž“αŸ…αž–αŸαž›αž’αž“αžΆαž‚αž αž“αŸ…αž–αŸαž›αž αŸ…αž’αŸ’αž“αž€αž”αžΎαž€αž”αžšαŸ” αž€αŸαž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž–αž·αžŸαŸαžŸαž•αž„αžŠαŸ‚αžšαŸ” expandvolume ΠΈ expandfsαžŠαŸ‚αž›αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ†αž αŸ†αžαžΆαž˜αžœαž“αŸ’αžαŸ”

αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ‚αž›αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž”αž“αŸ’αžαŸ‚αž˜ expandvolumeαž αžΎαž™αž‡αžΆαž˜αž½αž™αžœαžΆαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ†αž αŸ†αž”αžšαž·αž˜αžΆαžŽαž€αŸ’αž“αž»αž„αž–αŸαž›αžœαŸαž›αžΆαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„ αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αž‚αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αž’αŸ’αž“αž€αž‡αžΆαž˜αž½αž™ αžŸαŸ†αžŽαžΎαž‘αžΆαž‰αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„ Rook Ceph OperatorαŸ”

αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ Flexvolume αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ 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...) αž•αŸ’αž›αžΌαžœαž’αžΆαž…αžαž»αžŸαž‚αŸ’αž“αžΆαŸ”

αž”αž‰αŸ’αž αžΆ Flexvolume: αžšαž”αŸ€αž”αž”αŸ„αŸ‡αžŠαŸ†αž”αž„αž“αŸαžŸαžΆαž‘αž±αŸ’αž™αž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ?

αž€αžΆαžšαž’αžΆαž”αŸ‹αž‘αžΌαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ Flexvolume αž‘αŸ…αž€αžΆαž“αŸ‹αžαŸ’αž“αžΆαŸ†αž„αž…αž„αŸ’αž€αŸ„αž˜αž”αžΆαž“αž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαž€αž·αž…αŸ’αž…αž€αžΆαžšαžŠαŸ‚αž›αž˜αž·αž“αžŸαŸ†αžαžΆαž“αŸ‹αŸ” αžŠαŸ„αž™αž”αžΆαž“αž’αŸ’αžœαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαŸ„αž™αžŠαŸƒαž˜αŸ’αžαž„ αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž“αžΌαžœαžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŠαŸ‚αž›αžαŸ’αž“αžΆαŸ†αž„αžαŸ’αž˜αžΈαž›αŸαž…αž‘αžΎαž„αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αŸ– αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αž“αžΆαŸ†αž„αžαŸ’αž˜αžΈ αž€αžΆαžšαž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž•αŸ’αžŠαŸαž€αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· ឬ - αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αžΆαž“αŸ‹αžαŸ‚αž’αžΆαž€αŸ’αžšαž€αŸ‹ - αž€αžΆαžšαž‡αŸ†αž“αž½αžŸαžαŸ’αž“αžΆαŸ†αž„αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαž»αžŸαž”αŸ’αžšαž€αŸ’αžšαžαžΈαŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎ αž‚αžΊαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαžšαž αžΌαžαžŠαž›αŸ‹αž’αŸ’αž“αž€αž“αŸ…αžαŸ‚αž”αž“αŸ’αžαŸ‚αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ Flexvolume αžŠαŸ„αž™αžŠαŸƒαž‘αŸ…αž–αž½αž€αž‚αŸαŸ”

αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž…αŸ†αž–αŸ„αŸ‡αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž‚αžΊαž˜αž½αž™αž“αŸƒ Kubernetes primitives - DaemonSet. αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžαŸ’αž“αžΆαŸ†αž„αžαŸ’αž˜αžΈαž›αŸαž…αž‘αžΎαž„αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜ αžœαžΆαž˜αžΆαž“αž•αžαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž–αžΈ DaemonSet αžšαž”αžŸαŸ‹αž™αžΎαž„ αžŠαŸ‚αž›αž”αžšαž·αž˜αžΆαžŽαž€αŸ’αž“αž»αž„αžαŸ†αž”αž“αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αžαžΆαž˜αž•αŸ’αž›αžΌαžœαžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ Flexvolume αŸ” αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™ αž•αžαž…αž˜αŸ’αž›αž„αž―αž€αžŸαžΆαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ…αžαžΆαžŸαŸ”

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒ DaemonSet αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαžΆαž€αŸ‹αž…αŸαž‰αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ FlexvolumeαŸ–

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 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαžΆαž€αŸ‹αž…αŸαž‰αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ FlexvolumeαŸ–

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

αžœαžΆαž‡αžΆαž€αžΆαžšαžŸαŸ†αžαžΆαž“αŸ‹αžŽαžΆαžŸαŸ‹αžŠαŸ‚αž›αž˜αž·αž“αžαŸ’αžšαžΌαžœαž—αŸ’αž›αŸαž…αžαžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž…αž˜αŸ’αž›αž„ αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž’αžΆαžαžΌαž˜αž·αž…αž‘αŸαŸ”. αž˜αžΆαž“αž±αž€αžΆαžŸαžαŸ’αž–αžŸαŸ‹αžŠαŸ‚αž› kubelet αž“αžΉαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ αž˜αž»αž“αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž•αŸ’αžαž›αŸ‹αžšαž”αžŸαŸ‹αžœαžΆαž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹ αžŠαŸ‚αž›αž“αžΉαž„αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž˜αžΆαž“αž€αŸ†αž αž»αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‚αžΊαžŠαŸ†αž”αžΌαž„αžαŸ’αžšαžΌαžœαž…αž˜αŸ’αž›αž„αž―αž€αžŸαžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆαž€αŸ’αžšαŸ„αž˜αžˆαŸ’αž˜αŸ„αŸ‡αž•αŸ’αžŸαŸαž„ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αŸ’αžαžΌαžšαžˆαŸ’αž˜αŸ„αŸ‡αž’αžΆαžαžΌαž˜αž·αž…αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αž»αž€ KubernetesαŸ– αž–αžΈ Flexvolume αž‘αŸ… CSI
αžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ Ceph αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš Rook: αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ Flexvolume αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž—αŸ’αž“αžΆαž€αŸ‹αž„αžΆαžš Rook

αž”αž‰αŸ’αž αžΆαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ Flexvolume αž‚αžΊαžαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αž…αž„αŸ’αž€αŸ„αž˜ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„ (αž§αž‘αžΆαž αžšαžŽαŸ αž€αž‰αŸ’αž…αž”αŸ‹ ceph-αž‘αžΌαž‘αŸ…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Ceph) αŸ” αžŠαŸ†αž”αžΌαž„ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ Flexvolume αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž”αŸ‚αž”αž“αŸαŸ‡αž‘αŸαŸ”

αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαžΎαž˜αž…αŸ†αž–αŸ„αŸ‡αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ Flexvolume αžšαž”αžŸαŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš RookαŸ–

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆαžαŸ’αž›αž½αž“αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ RPC αŸ” αžšαž“αŸ’αž’ IPC αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αžΉαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆαž•αŸ’αž‘αžΆαž›αŸ‹αŸ” αž™αžΎαž„αž…αž„αž…αžΆαŸ†αžαžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž…αž˜αŸ’αž›αž„αž―αž€αžŸαžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ αžœαžΆαž‡αžΆαž€αžΆαžšαž›αŸ’αž’αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎ DaemonSet αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αžαžαž―αž€αžŸαžΆαžšαž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆαž‡αžΆαž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž…αž˜αŸ’αž›αž„αž―αž€αžŸαžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ rook αž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž•αžαž“αŸαŸ‡αž˜αž·αž“αžŸαŸ’αž›αžΆαž”αŸ‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αžšαž“αŸ’αž’ IPC αžαžΆαž˜αžšαž™αŸˆαž—αžΆαž‚αžŠαŸ‚αž›αž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ RPC αž–αŸαž‰αž›αŸαž‰αŸ” αž€αž‰αŸ’αž…αž”αŸ‹ ceph-common αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αžšαž½αž…αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž’αž»αž„ pod αŸ” αžšαž“αŸ’αž’ IPC αž’αžΆαž“αžΆαžαžΆ kubelet αž“αžΉαž„αž‘αžΆαž€αŸ‹αž‘αž„αž‡αžΆαž˜αž½αž™ pod αžŠαŸ‚αž›αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰!..

αž›αžΆαž αžΎαž™ αž’αŸ’αž“αž€αž‡αžΆαž‘αžΈαžŸαŸ’αžšαž‘αžΆαž‰αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„... αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž€αŸ’αž“αž»αž„αžŠαžΎαž˜αžˆαžΎ!

αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ Kubernetes αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαžΆαž…αŸ†αž“αž½αž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ’αž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž“αžΌαž›αž‚αžΊαž˜αŸ’αž—αŸƒαŸ” αž αžΎαž™αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž–αž½αž€αžœαžΆαž“αžΈαž˜αž½αž™αŸ— αžαžΆαž˜αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž˜αž½αž™ αž¬αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžœαžŠαŸ’αžαž“αŸƒαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ Kubernetes αž–αŸαž‰αž›αŸαž‰αŸ”

αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž€αžΆαžšαž•αŸ’αž‘αž»αž€, αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž€αŸ’αžšαž»αž˜αž‘αžΆαŸ†αž„αž˜αžΌαž›. αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž“αŸαŸ‡ αž’αŸ’αž“αž€αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž—αŸ’αž‰αžΆαž€αŸ‹αž•αŸ’αž’αžΎαž›αžŠαŸ‚αž›αž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈαžšαž”αžŸαŸ‹ Kubernetes αž“αžΉαž„αž€αŸ’αž›αžΆαž™αž‘αŸ…αž‡αžΆαž˜αž·αž“αž†αž”αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αžαžΊαžŽαŸ‚αž›αž›αžΈαž“αž»αž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎ... αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αž‡αžΌαžαž‘αžΉαž€αž—αŸ’αž“αŸ‚αž€αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž αžΎαž™αž‚αŸ’αžšαžœαžΈαž’αŸ’αž˜αŸαž‰αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αžŸαž˜αŸ’αžšαž”αžŸαž˜αŸ’αžšαž½αž›αž‡αžΆαž˜αž½αž™αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ αž“αž·αž„αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αžŠαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœ αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αžαžΊαžŽαŸ‚αž›αž›αžΈαž“αž»αž… αž“αž·αž„αž…αž„αŸ’αž€αŸ„αž˜ Kubernetes αŸ” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž–αŸαž›αžœαŸαž›αžΆαžšαž„αž…αžΆαŸ†αžŠαŸ‚αž›αž’αžΆαž…αž€αžΎαžαž˜αžΆαž“αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αŸ”

αžŸαŸ’αžαžΆαž“αž€αžΆαžšαžŽαŸβ€‹αž‚αžΊβ€‹αž αž½αžŸβ€‹αž–αžΈβ€‹αžšαžΏαž„β€‹αž€αŸ†αž”αŸ’αž›αŸ‚αž„β€‹αž‘αŸ…β€‹αž‘αŸ€αžβ€‹αžαžΎβ€‹αž’αŸ’αž“αž€β€‹αž‚αž·αžβ€‹αž‘αŸβ€‹? αžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αžŽαžΆαžŸαŸ‹αž…αŸ†αž–αŸ„αŸ‡αžŸαž αž‚αž˜αž“αŸαž‘αžΆαŸ†αž„αž˜αžΌαž›αžαžΆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸαŸ” αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžŠαŸ„αž™αž…αŸαžαž“αžΆ αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ Kubernetes αž”αŸ’αžšαž€αžΆαžŸαžαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αžαŸ’αž˜αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž“αžΉαž„αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž™αž€αž‘αŸ…αž€αŸ’αž“αž»αž„αžαžΊαžŽαŸ‚αž›αž‘αŸ€αžαž‘αŸαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αžŠαžΌαž…αžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αžŠαžΉαž„αžšαž½αž…αž˜αž€αž αžΎαž™ αž…αŸ†αžŽαž»αž…αžαŸ’αžœαŸ‡αžαžΆαžαž˜αž½αž™αž…αŸ†αž“αž½αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžšαž€αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ Flexvolume...

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αžŠαŸ‚αž›αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αžšαž·αž˜αžΆαžŽαž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes, CSI, αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ†αž–αžΆαžœαž“αžΆαžœαž±αŸ’αž™αž”αž·αž‘αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž”αŸ‹αž›αžΆαž”αŸ‹αž˜αŸ’αžαž„ αž“αž·αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž€αŸ†αžŽαŸ‚αž’αžΆαž›αŸ‹αž αŸ’αžœαžΆαžšαž”αžŸαŸ‹αžœαžΆ αžŠαŸ‚αž›αžŸαŸ†αžŠαŸ…αž™αŸ‰αžΆαž„αž–αŸαž‰αž›αŸαž‰αžαžΆαž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„ CSI αž€αŸ’αžšαŸ…αžŠαžΎαž˜αžˆαžΎ αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ Kubernetes ៑.៑ៀ.

Container Storage Interface ឬ CSI 3000 spinning rod!

αž‡αžΆαžŠαŸ†αž”αžΌαž„αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆ CSI αž˜αž·αž“αž˜αŸ‚αž“αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž€αžΆαžšαž–αž·αž αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαŸ” αž›αžΎαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžŸαž˜αžΆαžŸαž’αžΆαžαž»αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžƒαŸ’αž›αžΆαŸ†αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™. αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžœαž„αŸ‹αž—αŸ’αž›αŸαž„αž€αž»αž„αžαžΊαž“αŸαžšαžŠαžΌαž…αž‡αžΆ Kubernetes αž“αž·αž„ Mesos αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαž“αŸ’αž˜αžαŸ‹αžαžΆ "αžšαŸ€αž“" αžšαž”αŸ€αž”αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžŸαž˜αžΆαžŸαž’αžΆαžαž»αžŠαŸ‚αž›αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŸαŸ’αžšαž”αžαžΆαž˜αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž“αŸαŸ‡αŸ” αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“ Kubernetes αžšαž½αž…αž αžΎαž™αŸ”

αžαžΎαž’αŸ’αžœαžΈαž‡αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ CSI αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes? αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ CSI αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆαž–αž·αžŸαŸαžŸ (αž’αŸ’αž“αž€αž”αžΎαž€αž”αžš CSI) αžŸαžšαžŸαŸαžšαžŠαŸ„αž™αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž—αžΆαž‚αžΈαž‘αžΈαž”αžΈαŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ CSI αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αž‚αž½αžšαžαŸ‚αž˜αžΆαž“αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αžŸαž˜αžΆαžŸαž—αžΆαž‚αž–αžΈαžš (pods)αŸ–

  • αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ - αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‡αžΆαž”αŸ‹αž›αžΆαž”αŸ‹αžαžΆαž„αž€αŸ’αžšαŸ…αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ gRPC αžŠαŸ‚αž›αž”αž»αž–αŸ’αžœαž”αž‘αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ StatefulSet.
  • αžαŸ’αž“αžΆαŸ†αž„ β€” αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž˜αŸ‰αŸ„αž“αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‡αžΆαž”αŸ‹αž›αžΆαž”αŸ‹αž‘αŸ…αž€αžΆαž“αŸ‹αžαŸ’αž“αžΆαŸ†αž„αž…αž„αŸ’αž€αŸ„αž˜αŸ” αžœαžΆαž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ gRPC αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž”αŸ’αžšαžΎαž”αž»αž–αŸ’αžœαž€αžΆαž› DaemonSet.

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αž»αž€ KubernetesαŸ– αž–αžΈ Flexvolume αž‘αŸ… CSI
αžšαž”αŸ€αž”αžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ CSI αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes

αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž’αŸ†αž–αžΈαž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸƒαž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹ CSI αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž–αžΈαž’αžαŸ’αžαž”αž‘ β€œαž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž’αŸ†αž–αžΈ C.S.I.Β» αž€αžΆαžšαž”αž€αž”αŸ’αžšαŸ‚αžŠαŸ‚αž› αž™αžΎαž„αž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž€αžΆαž›αž–αžΈαž˜αž½αž™αž†αŸ’αž“αžΆαŸ†αž˜αž»αž“αŸ”

αž‚αž»αžŽαžŸαž˜αŸ’αž”αžαŸ’αžαž·αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž”αŸ‚αž”αž“αŸαŸ‡

  • αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΏαž„αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αž“αžΆαŸ†αž„ αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ Kubernetes αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž€αž»αž„αžαžΊαž“αŸαžšαŸ” αž’αŸ’αž“αž€αž›αŸ‚αž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž” JSON αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαž˜αžαŸ’αžαž—αžΆαž–αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαžšαž½αž…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ Flexvolume αŸ”
  • αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™ "αž€αžΆαžšαžšαž’αž·αž›" αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„ αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž”αž„αŸ’αž αŸ„αŸ‡ pods αž‘αŸ…αž€αžΆαž“αŸ‹ cluster αŸ” αž“αŸαŸ‡αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αžšαŸ†αž–αžΉαž„αž‘αž»αž€αžŠαŸ†αž”αžΌαž„αž–αžΈ KubernetesαŸ– αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžšαžŠαŸ‚αž›αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎ Kubernetes primitivesαŸ”
  • αž’αŸ’αž“αž€αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αž„αŸ’αž€αžΎαžαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ RPC αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ RPC αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž‘αŸ€αžαž‘αŸαŸ” αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αžŠαŸ„αž™αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ Kubernetes αŸ”
  • αž€αžΆαžšαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž›αžΎαž–αž·αž’αžΈαž€αžΆαžš gRPC αž‚αžΊαž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž› αž”αžαŸ‹αž”αŸ‚αž“ αž“αž·αž„αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“αž‡αžΆαž„αž€αžΆαžšαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžœαžΆαžαžΆαž˜αžšαž™αŸˆαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž™αž›αŸ‹αž–αžΈαžšαž”αŸ€αž”αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž„αŸ’αžœαžΆαžŸαŸ‹αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αžšαž·αž˜αžΆαžŽαž‘αŸ… CSI αžŠαŸ„αž™αž”αž“αŸ’αžαŸ‚αž˜αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš gRPC αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš αž’αŸ’αž“αž€αž’αžΆαž…αž’αžΆαž“αŸ– αžŸαŸ†αžŽαžΎαž‘αžΆαž‰αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ vsphere-csi αŸ”
  • αž€αžΆαžšαž”αŸ’αžšαžΆαžŸαŸ’αžšαŸαž™αž‘αžΆαž€αŸ‹αž‘αž„αž‚αŸ’αž“αžΆαž€αžΎαžαž‘αžΎαž„αžαžΆαž˜αžšαž™αŸˆαžšαž“αŸ’αž’ IPC αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž—αžΆαž“αŸ‹αž…αŸ’αžšαž‘αŸ†αžαžΆαžαžΎ kubelet αž”αžΆαž“αž•αŸ’αž‰αžΎαžŸαŸ†αžŽαžΎαž‘αŸ…αž€αžΆαž“αŸ‹ pod αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ”

αžαžΎαž”αž‰αŸ’αž‡αžΈαž“αŸαŸ‡αžšαŸ†αž›αžΉαž€αž’αŸ’αž“αž€αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαž‘αŸ? αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžšαž”αžŸαŸ‹ CSI αž‚αžΊ αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”αžŠαŸ‚αž›αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αž˜αž€αž–αž·αž…αžΆαžšαžŽαžΆαž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ Flexvolume αŸ”

αž€αžΆαžšαžšαž€αžƒαžΎαž‰

CSI αž‡αžΆαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αžƒαŸ’αž›αžΆαŸ†αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž™αŸ‰αžΆαž„αž€αž€αŸ‹αž€αŸ’αžαŸ…αž–αžΈαžŸαž αž‚αž˜αž“αŸαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž‚αž»αžŽαžŸαž˜αŸ’αž”αžαŸ’αžαž· αž“αž·αž„αžŸαž˜αžαŸ’αžαž—αžΆαž–αžšαž”αžŸαŸ‹αžœαžΆ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ CSI αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαžΌαž…αž‡αžΆ Ceph ឬ AWS EBS αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαŸ‚αžŠαŸ†αž”αžΌαž„αž“αŸƒ Kubernetes αŸ”

αž“αŸ…αžŠαžΎαž˜αž†αŸ’αž“αžΆαŸ† 2019 αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž€αŸ’αž“αž»αž„αž˜αŸ‚αž€αž’αžΆαž„ αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸαžαžΆαž›αŸ‚αž„αž”αŸ’αžšαžΎαž αžΎαž™αŸ”. αž™αžΎαž„αž‚αŸ’αžšαŸ„αž„αž“αžΉαž„αž”αž“αŸ’αžαž‚αžΆαŸ†αž‘αŸ’αžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ Flexvolume αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αžΉαž„αž˜αž·αž“αž”αž„αŸ’αž€αžΎαžαž˜αž»αžαž„αžΆαžšαžαŸ’αž˜αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆαž‘αŸαŸ”

αžαŸ’αž›αž½αž“αž™αžΎαž„αž•αŸ’αž‘αžΆαž›αŸ‹αž˜αžΆαž“αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ ceph-csi, vsphere-csi αž αžΎαž™αžαŸ’αžšαŸ€αž˜αžαŸ’αž›αž½αž“αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαž“αŸαŸ‡! αžšαž αžΌαžαž˜αž€αžŠαž›αŸ‹αž–αŸαž›αž“αŸαŸ‡ CSI αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžˆαž˜αž˜αž»αžαž“αžΉαž„αž—αžΆαžšαž€αž·αž…αŸ’αž…αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαž‚αž›αŸ‹αž±αŸ’αž™αžœαžΆαžŠαŸ„αž™αžŸαŸ†αž‘αŸαž„αžαŸ’αž›αžΆαŸ†αž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž“αžΉαž„αžšαž„αŸ‹αž…αžΆαŸ†αž˜αžΎαž›αŸ”

αž€αž»αŸ†β€‹αž—αŸ’αž›αŸαž…β€‹αžαžΆβ€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αžαŸ’αž˜αžΈβ€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž‚αž·αžβ€‹αž‘αžΎαž„β€‹αžœαž·αž‰β€‹αžšαž”αžŸαŸ‹β€‹αž…αžΆαžŸαŸ‹!

PS

αžŸαžΌαž˜αž’αžΆαž“αž•αž„αžŠαŸ‚αžšαž“αŸ…αž›αžΎαž”αŸ’αž›αž€αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ–

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹