Kubernetes рднрдгреНрдбрд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рднреЛрд▓реНрдпреБрдо рдкреНрд▓рдЧрдЗрдирд╣рд░реВ: Flexvolume рджреЗрдЦрд┐ CSI рд╕рдореНрдо

Kubernetes рднрдгреНрдбрд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рднреЛрд▓реНрдпреБрдо рдкреНрд▓рдЧрдЗрдирд╣рд░реВ: Flexvolume рджреЗрдЦрд┐ CSI рд╕рдореНрдо

рдЬрдм Kubernetes рдЕрдЭреИ v1.0.0 рдерд┐рдпреЛ, рддреНрдпрд╣рд╛рдБ рднреЛрд▓реНрдпреБрдо рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рдерд┐рдПред рддрд┐рдиреАрд╣рд░реВ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрд▓рд╛рдИ рдирд┐рд░рдиреНрддрд░ (рд╕реНрдерд╛рдпреА) рдХрдиреНрдЯреЗрдирд░ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ Kubernetes рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдерд┐рдпреЛред рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд╕рд╛рдиреЛ рдерд┐рдпреЛ, рд░ рдкрд╣рд┐рд▓реЛ рдордзреНрдпреЗ GCE PD, Ceph, AWS EBS рд░ рдЕрдиреНрдп рдЬрд╕реНрддрд╛ рднрдгреНрдбрд╛рд░рдг рдкреНрд░рджрд╛рдпрдХрд╣рд░реВ рдерд┐рдПред

рдкреНрд▓рдЧрдЗрдирд╣рд░реВ Kubernetes рд╕рдБрдЧ рдбреЗрд▓рд┐рднрд░ рдЧрд░рд┐рдПрдХрд╛ рдерд┐рдП, рддреНрдпрд╕реИрд▓реЗ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдирд╛рдо - рдЗрди-рдЯреНрд░реА рднрдпреЛред рдпрджреНрдпрдкрд┐, рдзреЗрд░реИрдХрд╛ рд▓рд╛рдЧрд┐, рддреНрдпрд╕реНрддрд╛ рдкреНрд▓рдЧрдЗрдирд╣рд░реВрдХреЛ рдЕрд╡рд╕реНрдерд┐рдд рд╕реЗрдЯ рдЕрдкрд░реНрдпрд╛рдкреНрдд рднрдпреЛред рд╢рд┐рд▓реНрдкрдХрд╛рд░рд╣рд░реВрд▓реЗ рдкреНрдпрд╛рдЪрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Kubernetes рдХреЛрд░рдорд╛ рд╕рд╛рдзрд╛рд░рдг рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рдердкреЗ, рддреНрдпрд╕рдкрдЫрд┐ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдЖрдлреНрдиреИ Kubernetes рдЬрдореНрдорд╛ рдЧрд░реЗ рд░ рдпрд╕рд▓рд╛рдИ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рд░реНрднрд░рдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗред рддрд░ рд╕рдордпрдХреЛ рд╕рд╛рде, Kubernetes рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рддреНрдпреЛ рдорд╣рд╕реБрд╕ рдЧрд░реЗ рдорд╛рдЫрд╛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рд╣реБрди рд╕рдХреНрджреИрдиред рдорд╛рдирд┐рд╕рд╣рд░реВрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреНрдЫ рдорд╛рдЫрд╛ рдорд╛рд░реНрдиреЗ рд▓реМрд░реЛред рд░ Kubernetes v1.2.0 рдХреЛ рд░рд┐рд▓реАрдЬ рдорд╛ рдпреЛ рджреЗрдЦрд╛ рдкрд░реНрдпреЛ ...

рдлреНрд▓реЗрдХреНрд╕рднреЛрд▓реНрдпреБрдо рдкреНрд▓рдЧрдЗрди: рдиреНрдпреВрдирддрдо рдорд╛рдЫрд╛ рдорд╛рд░реНрдиреЗ рд░рдб

Kubernetes рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ FlexVolume рдкреНрд▓рдЧрдЗрди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗ, рдЬреБрди рддреЗрд╕реНрд░реЛ-рдкрдХреНрд╖ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ Flexvolume рдбреНрд░рд╛рдЗрднрд░рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдЪрд░ рд░ рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рддрд╛рд░реНрдХрд┐рдХ рдврд╛рдБрдЪрд╛ рдерд┐рдпреЛред

рд░реЛрдХреМрдВ рд░ FlexVolume рдбреНрд░рд╛рдЗрднрд░ рдХреЗ рд╣реЛ рднрдиреЗрд░ рдирдЬрд┐рдХрдмрд╛рдЯ рд╣реЗрд░реМрдВред рдпреЛ рдирд┐рд╢реНрдЪрд┐рдд рдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓ (рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓, рдкрд╛рдЗрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдмрд╛рд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЖрджрд┐), рдЬреБрди, рдЬрдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреНрдЫ, рдЗрдирдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рддрд░реНрдХрд╣рд░реВ рд▓рд┐рдиреНрдЫ рд░ JSON рдврд╛рдБрдЪрд╛рдорд╛ рдкреВрд░реНрд╡-рдЬреНрдЮрд╛рдд рдХреНрд╖реЗрддреНрд░рд╣рд░реВрд╕рдБрдЧ рд╕рдиреНрджреЗрд╢ рдлрд░реНрдХрд╛рдЙрдБрдЫред рдкрд░рдореНрдкрд░рд╛ рдЕрдиреБрд╕рд╛рд░, рдкрд╣рд┐рд▓реЛ рдЖрджреЗрд╢ рд░реЗрдЦрд╛ рддрд░реНрдХ рд╕рдзреИрдВ рдПрдХ рд╡рд┐рдзрд┐ рд╣реЛ, рд░ рдмрд╛рдБрдХреА рддрд░реНрдХрд╣рд░реВ рдпрд╕рдХреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд╣реБрдиреНред

Kubernetes рднрдгреНрдбрд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рднреЛрд▓реНрдпреБрдо рдкреНрд▓рдЧрдЗрдирд╣рд░реВ: Flexvolume рджреЗрдЦрд┐ CSI рд╕рдореНрдо
OpenShift рдорд╛ CIFS рд╢реЗрдпрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЬрдбрд╛рди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ред 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 рдбреНрд░рд╛рдЗрднрд░рд▓рд╛рдИ рдХрд▓ рдЧрд░реНрджрд╛ рдХреБрдмреЗрд▓реЗрдЯрд▓реЗ рднрд╡рд┐рд╖реНрдпрдорд╛ рдХрд╛рд░реНрдп рдЧрд░реНрдиреЗ рдкрд░рд┐рджреГрд╢реНрдпрд▓рд╛рдИ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреЗрдЫред рддреНрдпрд╣рд╛рдБ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐рд╣рд░реВ рдкрдирд┐ рдЫрдиреН 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

рддреНрдпрд╕реЛрднрдП, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдЫ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЪрд╛рд▓рдХ рдЕрдкрд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЪрд╛рд▓рдХ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рд░реНрдЧ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рд╣реБрдиреБрдкрд░реНрдЫред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдпреЛ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ:

/usr/libexec/kubernetes/kubelet-plugins/volume/exec/╨╕╨╝╤П_╨┐╨╛╤Б╤В╨░╨▓╤Й╨╕╨║╨░_╤Е╤А╨░╨╜╨╕╨╗╨╕╤Й╨░~╨╕╨╝╤П_╨┤╤А╨░╨╣╨▓╨╡╤А╨░/

рддрд░ рд╡рд┐рднрд┐рдиреНрди Kubernetes рд╡рд┐рддрд░рдг (OpenShift, Rancher...) рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдмрд╛рдЯреЛ рдлрд░рдХ рд╣реБрди рд╕рдХреНрдЫред

рдлреНрд▓реЗрдХреНрд╕рднреЛрд▓реНрдпреБрдо рд╕рдорд╕реНрдпрд╛рд╣рд░реВ: рдХрд╕рд░реА рдорд╛рдЫрд╛ рдорд╛рд░реНрдиреЗ рд░рдб рд╕рд╣реА рд░реВрдкрдорд╛ рдХрд╛рд╕реНрдЯ рдЧрд░реНрдиреЗ?

рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрд╣рд░реВрдорд╛ рдлреНрд▓реЗрдХреНрд╕рднреЛрд▓реНрдпреБрдо рдбреНрд░рд╛рдЗрднрд░ рдЕрдкрд▓реЛрдб рдЧрд░реНрдиреБ рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рднрдпреЛред рдПрдХ рдкрдЯрдХ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдЕрдкрд░реЗрд╕рди рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдирдпрд╛рдБ рдиреЛрдбрд╣рд░реВ рджреЗрдЦрд╛ рдкрд░реНрдиреЗ рдЕрд╡рд╕реНрдерд╛рдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫ: рдирдпрд╛рдБ рдиреЛрдбрдХреЛ рдердкрдХреЛ рдХрд╛рд░рдг, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рддреЗрд░реНрд╕реЛ рд╕реНрдХреЗрд▓рд┐рдВрдЧ, рд╡рд╛ - рдХреЗ рдЦрд░рд╛рдм рдЫ - рдЦрд░рд╛рдмреАрдХреЛ рдХрд╛рд░рдг рдиреЛрдбрдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдиред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпреА рдиреЛрдбрд╣рд░реВрдорд╛ рднрдгреНрдбрд╛рд░рдгрдХреЛ рд╕рд╛рде рдХрд╛рдо рдЧрд░реНрдиреБрдкрд░реНрдЫ рдЕрд╕рдВрднрд╡ рдЫ, рдЬрдм рд╕рдореНрдо рддрдкрд╛рдЗрдБ рдЕрдЭреИ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ Flexvolume рдЪрд╛рд▓рдХ рдердкреНрдиреБрд╣реБрдиреНрдиред

рдпреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдорд╛рдзрд╛рди Kubernetes рдЖрджрд┐рдо рдордзреНрдпреЗ рдПрдХ рдерд┐рдпреЛ - 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>

... рд░ рдлреНрд▓реЗрдХреНрд╕рднреЛрд▓реНрдпреБрдо рдбреНрд░рд╛рдЗрднрд░ рдмрд┐рдЫреНрдпрд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдмрд╛рд╕ рд▓рд┐рдкрд┐рдХреЛ рдЙрджрд╛рд╣рд░рдг:

#!/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 рднрдгреНрдбрд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рднреЛрд▓реНрдпреБрдо рдкреНрд▓рдЧрдЗрдирд╣рд░реВ: Flexvolume рджреЗрдЦрд┐ CSI рд╕рдореНрдо
рд░реБрдХ рдЕрдкрд░реЗрдЯрд░рдорд╛ Ceph рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░: рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рдорд╛ рдлреНрд▓реЗрдХреНрд╕рднреЛрд▓реНрдпреБрдо рдЪрд╛рд▓рдХ рд░реБрдХ рдПрдЬреЗрдиреНрдЯ рднрд┐рддреНрд░ рдЕрд╡рд╕реНрдерд┐рдд рдЫ

Flexvolume рдбреНрд░рд╛рдЗрднрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдЕрд░реНрдХреЛ рд╕рдорд╕реНрдпрд╛ рднрдиреЗрдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрдорд╛ рдзреЗрд░реИ рднрдгреНрдбрд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрдкрд░реНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, Ceph рдХреЛ рд▓рд╛рдЧрд┐ ceph-рд╕рд╛рдорд╛рдиреНрдп рдкреНрдпрд╛рдХреЗрдЬ)ред рд╕реБрд░реБрдорд╛, Flexvolume рдкреНрд▓рдЧрдЗрди рдпрд╕реНрддреЛ рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдПрдиред

рдпрд╕ рд╕рдорд╕реНрдпрд╛рдХреЛ рдореВрд▓ рд╕рдорд╛рдзрд╛рди рд░реБрдХ рдЕрдкрд░реЗрдЯрд░рдХреЛ рдлреНрд▓реЗрдХреНрд╕рднреЛрд▓реНрдпреБрдо рдбреНрд░рд╛рдЗрднрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ:

рдЪрд╛рд▓рдХ рдЖрдлреИрдВ рдПрдХ RPC рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд░реВрдк рдорд╛ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдЫред рд╕рдЮреНрдЪрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ IPC рд╕рдХреЗрдЯ рдбреНрд░рд╛рдЗрднрд░рдХреЛ рд░реВрдкрдорд╛ рдиреИ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫред рд╣рд╛рдореА рд╕рдореНрдЭрдиреНрдЫреМрдВ рдХрд┐ рдбреНрд░рд╛рдЗрднрд░ рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рдпреЛ DaemonSet рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд░рд╛рдореНрд░реЛ рд╣реБрдиреЗрдЫ, рдЬрд╕рд▓реЗ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрд▓рд╛рдИ рднреЛрд▓реНрдпреБрдордХреЛ рд░реВрдкрдорд╛ рдбреНрд░рд╛рдЗрднрд░рд╕рдБрдЧ рдЬрдбрд╛рди рдЧрд░реНрджрдЫред рдЖрд╡рд╢реНрдпрдХ рд░реБрдХ рдбреНрд░рд╛рдЗрднрд░ рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реЗрдкрдЫрд┐, рдпреЛ рдкреЛрдб рдорд░реНрджреИрди, рддрд░ рдкреВрд░реНрдг RPC рд╕рд░реНрднрд░рдХреЛ рд░реВрдкрдорд╛ рд╕рдВрд▓рдЧреНрди рднреЛрд▓реНрдпреБрдо рдорд╛рд░реНрдлрдд IPC рд╕рдХреЗрдЯрдорд╛ рдЬрдбрд╛рди рд╣реБрдиреНрдЫред рд╕реЗрдл-рд╕рд╛рдорд╛рдиреНрдп рдкреНрдпрд╛рдХреЗрдЬ рдкреЛрдб рдХрдиреНрдЯреЗрдирд░ рднрд┐рддреНрд░ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕реНрдерд╛рдкрд┐рдд рдЫред IPC рд╕рдХреЗрдЯрд▓реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрджрдЫ рдХрд┐ рдХреБрдмреЗрд▓реЗрдЯрд▓реЗ рдПрдЙрдЯреИ рдиреЛрдбрдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдкреЛрдбрд╕рдБрдЧ рдареНрдпрд╛рдХреНрдХреИ рд╕рдЮреНрдЪрд╛рд░ рдЧрд░реНрдиреЗрдЫред рд╕рдмреИ рд╕рд░рд▓ рдЫ! ..

рдЕрд▓рд╡рд┐рджрд╛, рд╣рд╛рдореНрд░реЛ рдорд╛рдпрд╛рд▓реБ... рдЗрди-рдЯреНрд░реА рдкреНрд▓рдЧрдЗрдирд╣рд░реВ!

Kubernetes рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдП рдХрд┐ рдХреЛрд░ рднрд┐рддреНрд░ рднрдгреНрдбрд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд▓рдЧрдЗрдирд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдмреАрд╕ рд╣реЛред рд░ рддреА рдкреНрд░рддреНрдпреЗрдХрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди, рдПрдХ рд╡рд╛ рдЕрд░реНрдХреЛ, рдкреВрд░реНрдг рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд░рд┐рд▓реАрдЬ рдЪрдХреНрд░ рдорд╛рд░реНрдлрдд рдЬрд╛рдиреНрдЫред

рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ рдХрд┐ рднрдгреНрдбрд╛рд░рдг рдкреНрд▓рдЧрдЗрди рдХреЛ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рд╕рдореНрдкреВрд░реНрдг рдХреНрд▓рд╕реНрдЯрд░ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпрд╕рдХрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд, рдХреБрдмреЗрд░рдиреЗрдЯрдХреЛ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдг рдЕрдЪрд╛рдирдХ рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣рдиреБ рднрдПрдХреЛ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рд╕рдБрдЧ рдЕрд╕рдВрдЧрдд рд╣реБрдиреЗ рдХреБрд░рд╛рдорд╛ рддрдкрд╛рдИрдВ рдЫрдХреНрдХ рдкрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ... рддреНрдпрд╕реИрд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдЖрдБрд╕реБ рдкреБрдЫрд┐рджрд┐рдиреБрд╣реЛрд╕реН рд░ рджрд╛рдБрдд рдХрд┐рдЯреНрджреИ, рддрдкрд╛рдИрдВрдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд╕рдБрдЧ рд╕рдордиреНрд╡рдп рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд░ Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рдЕрдкрдбреЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рдкреНрд░рд╛рд╡рдзрд╛рдирдорд╛ рд╕рдореНрднрд╛рд╡рд┐рдд рдбрд╛рдЙрдирдЯрд╛рдЗрдордХреЛ рд╕рд╛рдеред

рдЕрд╡рд╕реНрдерд╛ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рднрдиреНрджрд╛ рдмрдврд┐ рдЫ, рддрдкрд╛рдИрд▓рд╛рдИ рд▓рд╛рдЧреНрджреИрди? рдпреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрд▓реЗ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫреИрди рднрдиреЗрд░ рд╕рдореНрдкреВрд░реНрдг рд╕рдореБрджрд╛рдпрд▓рд╛рдИ рд╕реНрдкрд╖реНрдЯ рднрдпреЛред рдЬрд╛рдирд╛рдЬрд╛рдиреА рдирд┐рд░реНрдгрдпрджреНрд╡рд╛рд░рд╛, Kubernetes рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдШреЛрд╖рдгрд╛ рдЧрд░реЗ рдХрд┐ рднрдгреНрдбрд╛рд░рдгрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рдЕрдм рдХрд░реНрдиреЗрд▓рдорд╛ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░рд┐рдиреЗ рдЫреИрдиред рдердк рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдерд╛рд╣рд╛ рдЫ, рдлреНрд▓реЗрдХреНрд╕рднреЛрд▓реНрдпреБрдо рдкреНрд▓рдЧрдЗрдирдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛ рдзреЗрд░реИ рдХрдореАрд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ ...

Kubernetes, CSI рдорд╛ рднреЛрд▓реНрдпреБрдорд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рднрд░реНрдЦрд░рдХреЛ рдердкрд┐рдПрдХреЛ рдкреНрд▓рдЧрдЗрдирд▓рд╛рдИ рдПрдХ рдкрдЯрдХ рд░ рд╕рдмреИрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рд░рдиреНрддрд░ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдгрдХреЛ рд╕рд╛рде рдореБрджреНрджрд╛ рдмрдиреНрдж рдЧрд░реНрди рдЖрд╣реНрд╡рд╛рди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдпрд╕рдХреЛ рдЕрд▓реНрдлрд╛ рд╕рдВрд╕реНрдХрд░рдг, рдЕрдзрд┐рдХ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЖрдЙрдЯ-рдЕрдл-рдЯреНрд░реА CSI рднреЛрд▓реНрдпреБрдо рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рднрдиреЗрд░ рдЪрд┐рдирд┐рдиреНрдЫ, рд░рд┐рд▓реАрдЬрдорд╛ рдШреЛрд╖рдгрд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдХреБрдмрд░реНрдиреЗрдЯ рез.рез1.9.

рдХрдиреНрдЯреЗрдирд░ рднрдгреНрдбрд╛рд░рдг рдЗрдиреНрдЯрд░рдлреЗрд╕, рд╡рд╛ CSI 3000 рд╕реНрдкрд┐рдирд┐рдЩ рд░рдб!

рд╕рдмреИрднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рдо рдиреЛрдЯ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ CSI рднреЛрд▓реНрдпреБрдо рдкреНрд▓рдЧрдЗрди рдорд╛рддреНрд░ рд╣реЛрдЗрди, рддрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реЛ рдорд╛рдирдХ рдбрд╛рдЯрд╛ рдЧреЛрджрд╛рдорд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдХреВрд▓рди рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиред Kubernetes рд░ Mesos рдЬрд╕реНрддрд╛ рдХрдиреНрдЯреЗрдирд░ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╕рди рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрд▓реЗ рдпреЛ рдорд╛рдирдХ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдПрдХрд╛ рдШрдЯрдХрд╣рд░реВрд╕рдБрдЧ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдиреЗ рднрдиреЗрд░ "рд╕рд┐рдХреНрдиреБ" рднрдирд┐рдПрдХреЛ рдерд┐рдпреЛред рд░ рдЕрд╣рд┐рд▓реЗ рдореИрд▓реЗ Kubernetes рд╕рд┐рдХреЗрдХреЛ рдЫреБред

Kubernetes рдорд╛ CSI рдкреНрд▓рдЧрдЗрди рдХреЛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╣реЛ? CSI рдкреНрд▓рдЧрдЗрдирд▓реЗ рд╡рд┐рд╢реЗрд╖ рдЪрд╛рд▓рдХрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрдЫ (CSI рдЪрд╛рд▓рдХрд╣рд░реВ) рддреЗрд╕реНрд░реЛ рдкрдХреНрд╖ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рддред Kubernetes рдорд╛ рдПрдХ CSI рдбреНрд░рд╛рдЗрднрд░ рдХрдореНрддрд┐рдорд╛ рджреБрдИ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ (рдкреЛрдбрд╣рд░реВ) рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреБрдкрд░реНрдЫ:

  • рдирд┐рдпрдиреНрддреНрд░рдХ - рдмрд╛рд╣реНрдп рдирд┐рд░рдиреНрддрд░ рднрдгреНрдбрд╛рд░рдг рдкреНрд░рдмрдиреНрдз рдЧрд░реНрджрдЫред рдпреЛ gRPC рд╕рд░реНрднрд░рдХреЛ рд░реВрдкрдорд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЖрджрд┐рдо рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ StatefulSet.
  • рдиреЛрдб - рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрд╣рд░реВрдорд╛ рд▓рдЧрд╛рддрд╛рд░ рднрдгреНрдбрд╛рд░рдг рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫред рдпреЛ рдкрдирд┐ gRPC рд╕рд░реНрднрд░рдХреЛ рд░реВрдкрдорд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ, рддрд░ рдпрд╕рд▓реЗ рдЖрджрд┐рдо рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ DaemonSet.

Kubernetes рднрдгреНрдбрд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рднреЛрд▓реНрдпреБрдо рдкреНрд▓рдЧрдЗрдирд╣рд░реВ: Flexvolume рджреЗрдЦрд┐ CSI рд╕рдореНрдо
CSI рдкреНрд▓рдЧрдЗрдирд▓реЗ Kubernetes рдорд╛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ

рддрдкрд╛рдИрдВрд▓реЗ CSI рдХреЛ рдХрд╛рдордХрд╛ рдХреЗрд╣реА рдЕрдиреНрдп рд╡рд┐рд╡рд░рдгрд╣рд░реВ рдмрд╛рд░реЗ рдЬрд╛рдиреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд▓реЗрдЦрдмрд╛рдЯ "C.S.I. рдмреБрдЭреНрджреИ┬╗, рдЬрд╕рдХреЛ рдЕрдиреБрд╡рд╛рдж рд╣рд╛рдореАрд▓реЗ рдПрдХ рд╡рд░реНрд╖ рдЕрдШрд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдпреМрдВред

рдпрд╕реНрддреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд╛рдн

  • рдиреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рдбреНрд░рд╛рдЗрднрд░ рджрд░реНрддрд╛ рдЧрд░реНрдиреЗ рдЬрд╕реНрддрд╛ рдЖрдзрд╛рд░рднреВрдд рдХреБрд░рд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, Kubernetes рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд╕реЗрдЯ рд▓рд╛рдЧреВ рдЧрд░реЗред Flexvolume рдкреНрд▓рдЧрдЗрдирдХреЛ рд▓рд╛рдЧрд┐ рдЧрд░рд┐рдПрдЭреИрдБ рддрдкрд╛рдИрдВрд▓реЗ рдЕрдм рдХреНрд╖рдорддрд╛рд╣рд░реВрд╕рдБрдЧ JSON рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред
  • рдиреЛрдбрд╣рд░реВрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓рд╣рд░реВ "рд╕реНрд▓рд┐рдк" рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛, рд╣рд╛рдореА рдЕрдм рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдкреЛрдбрд╣рд░реВ рдЕрдкрд▓реЛрдб рдЧрд░реНрдЫреМрдВред рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдмрд╛рдЯ рд╣рд╛рдореАрд▓реЗ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд░реВрдкрдорд╛ рдпреЛ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░реНрдЫреМрдВ: рд╕рдмреИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ Kubernetes primitives рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддреИрдирд╛рде рдЧрд░рд┐рдПрдХрд╛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рд╣реБрдиреНрдЫрдиреНред
  • рдЬрдЯрд┐рд▓ рдбреНрд░рд╛рдЗрднрд░рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рддрдкрд╛рдИрдВрд▓реЗ рдЕрдм RPC рд╕рд░реНрднрд░ рд░ RPC рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред рдЧреНрд░рд╛рд╣рдХ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ Kubernetes рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред
  • gRPC рдкреНрд░реЛрдЯреЛрдХрд▓рдорд╛ рдХрд╛рдо рдЧрд░реНрди рдЖрд░реНрдЧреБрдореЗрдиреНрдЯрд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрдиреБ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдЖрд░реНрдЧреБрдореЗрдиреНрдЯрд╣рд░реВ рдорд╛рд░реНрдлрдд рдкрд╛рд░рд┐рдд рдЧрд░реНрдиреБ рднрдиреНрджрд╛ рдзреЗрд░реИ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рд▓рдЪрд┐рд▓реЛ рд░ рднрд░рдкрд░реНрджреЛ рдЫред рдорд╛рдирдХреАрдХреГрдд gRPC рд╡рд┐рдзрд┐ рдердкреЗрд░ CSI рдорд╛ рднреЛрд▓реНрдпреБрдо рдЙрдкрдпреЛрдЧ рдореЗрдЯреНрд░рд┐рдХреНрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдХрд╕рд░реА рдердкреНрдиреЗ рднрдиреЗрд░ рдмреБрдЭреНрди, рддрдкрд╛рдИрдВрд▓реЗ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: рд╣рд╛рдореНрд░реЛ рддрд╛рди рдЕрдиреБрд░реЛрдз vsphere-csi рдЪрд╛рд▓рдХрдХреЛ рд▓рд╛рдЧрд┐ред
  • рд╕рдЮреНрдЪрд╛рд░ IPC рд╕рдХреЗрдЯрд╣рд░реВ рдорд╛рд░реНрдлрдд рд╣реБрдиреНрдЫ, рддрд╛рдХрд┐ рдХреБрдмреЗрд▓реЗрдЯрд▓реЗ рд╕рд╣реА рдкреЛрдбрдорд╛ рдЕрдиреБрд░реЛрдз рдкрдард╛рдПрдХреЛ рд╣реЛ рдХрд┐ рднрдиреА рднреНрд░рдордорд╛ рдирдкрд░реЛрд╕реНред

рдХреЗ рдпреЛ рд╕реВрдЪреАрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреЗрд╣рд┐ рд╕рдореНрдЭрд╛рдЙрдБрдЫ? CSI рдХреЛ рдлрд╛рдЗрджрд╛рд╣рд░реВ рдЫрдиреН рдЙрд╕реНрддреИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ, рдЬрд╕рд▓рд╛рдИ Flexvolume рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджрд╛ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦрд┐рдПрдХреЛ рдерд┐рдПрдиред

рдирд┐рд╖реНрдХрд░реНрд╖

CSI рд▓рд╛рдИ рдбреЗрдЯрд╛ рдЧреЛрджрд╛рдорд╣рд░реВрд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рдЕрдиреБрдХреВрд▓рди рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рдирдХрдХреЛ рд░реВрдкрдорд╛ рд╕рдореБрджрд╛рдпрд▓реЗ рдзреЗрд░реИ рдиреНрдпрд╛рдиреЛ рд╕реНрд╡рд╛рдЧрдд рдЧрд░реЗрдХреЛ рдерд┐рдпреЛред рдпрд╕рдмрд╛рд╣реЗрдХ, рддрд┐рдиреАрд╣рд░реВрдХрд╛ рдлрд╛рдЗрджрд╛рд╣рд░реВ рд░ рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛рдХреЛ рдХрд╛рд░рдгрд▓реЗ, CSI рдбреНрд░рд╛рдЗрднрд░рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рдЬрд╕реНрддреИ Ceph рд╡рд╛ AWS EBS, рдХрд╛рдо рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд▓рдЧрдЗрдирд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдкрдирд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН рдЬрд╕рдХреЛ рд╕рд╛рде Kubernetes рдХреЛ рдкрд╣рд┐рд▓реЛ рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рдердкрд┐рдПрдХреЛ рдерд┐рдпреЛред

2019 рдХреЛ рд╕реБрд░реБрдорд╛, рдЗрди-рдЯреНрд░реА рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдШреЛрд╖рд┐рдд рднрдПрдХрд╛ рдЫрдиреНред рд╣рд╛рдореА Flexvolume рдкреНрд▓рдЧрдЗрдирд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреЗ рдпреЛрдЬрдирд╛ рдЧрд░реНрдЫреМрдВ, рддрд░ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджреИрдиреМрдВред

рд╣рд╛рдореАрд╕рдБрдЧ рдкрд╣рд┐рд▓реЗ рдиреИ ceph-csi, vsphere-csi рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЕрдиреБрднрд╡ рдЫ рд░ рдпреЛ рд╕реВрдЪреАрдорд╛ рдердкреНрди рддрдпрд╛рд░ рдЫреМрдВ! рдЕрд╣рд┐рд▓реЗ рд╕рдореНрдо, CSI рд▓реЗ рдпрд╕рд▓рд╛рдИ рддреЛрдХрд┐рдПрдХреЛ рдХрд╛рд░реНрдпрд╣рд░реВ рдзрдорд╛рдХрд╛ рд╕рд╛рде рд╕рд╛рдордирд╛ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ, рддрд░ рд╣рд╛рдореА рдкрд░реНрдЦрдиреЗ рд░ рд╣реЗрд░реНрдиреЗрдЫреМрдВред

рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реН рдХрд┐ рд╕рдмреИ рдирдпрд╛рдБ рдкреБрд░рд╛рдиреЛ рдПрдХ рд░рд╛рдореНрд░реЛ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рд╣реЛ!

PS

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди