Kubernetes рд╕реНрдЯреЛрд░реЗрдЬрд╕рд╛рдареА рд╡реНрд╣реЙрд▓реНрдпреВрдо рдкреНрд▓рдЧрдЗрди: Flexvolume рддреЗ CSI рдкрд░реНрдпрдВрдд

Kubernetes рд╕реНрдЯреЛрд░реЗрдЬрд╕рд╛рдареА рд╡реНрд╣реЙрд▓реНрдпреВрдо рдкреНрд▓рдЧрдЗрди: Flexvolume рддреЗ CSI рдкрд░реНрдпрдВрдд

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

рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╕рд╣ рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛, рдореНрд╣рдгреВрдирдЪ рддреНрдпрд╛рдВрдирд╛ рддреНрдпрд╛рдВрдЪреЗ рдирд╛рд╡ рдорд┐рд│рд╛рд▓реЗ - рдЗрди-рдЯреНрд░реА. рддрдерд╛рдкрд┐, рдЕрдиреЗрдХрд╛рдВрд╕рд╛рдареА, рдЕрд╢рд╛ рдкреНрд▓рдЧрдЗрдирдЪрд╛ рд╡рд┐рджреНрдпрдорд╛рди рд╕рдВрдЪ рдЕрдкреБрд░рд╛ рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рджрд┐рд╕реВрди рдЖрд▓реЗ. рдХрд╛рд░рд╛рдЧреАрд░рд╛рдВрдиреА рдкреЕрдЪреЗрд╕ рд╡рд╛рдкрд░реВрди рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреЛрд░рдордзреНрдпреЗ рд╕рд╛рдзреЗ рдкреНрд▓рдЧрдЗрди рдЬреЛрдбрд▓реЗ, рддреНрдпрд╛рдирдВрддрд░ рддреНрдпрд╛рдВрдиреА рддреНрдпрд╛рдВрдЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдПрдХрддреНрд░ рдХреЗрд▓реЗ рдЖрдгрд┐ рддреЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ. рдкрд░рдВрддреБ рдХрд╛рд▓рд╛рдВрддрд░рд╛рдиреЗ, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рд╡рд┐рдХрд╕рдХрд╛рдВрдирд╛ рд╣реЗ рд╕рдордЬрд▓реЗ рдорд╛рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддрд╛ рдпреЗрдд рдирд╛рд╣реА. рд▓реЛрдХрд╛рдВрдирд╛ рдЧрд░рдЬ рдЖрд╣реЗ рдорд╛рд╕реЗрдорд╛рд░реА рд░реЙрдб. рдЖрдгрд┐ Kubernetes v1.2.0 рдЪреНрдпрд╛ рд░рд┐рд▓реАрдЭрдордзреНрдпреЗ рддреЗ рджрд┐рд╕рд▓реЗ...

рдлреНрд▓реЗрдХреНрд╕рд╡реНрд╣реЙрд▓реНрдпреВрдо рдкреНрд▓рдЧрдЗрди: рдХрд┐рдорд╛рди рдлрд┐рд╢рд┐рдВрдЧ рд░реЙрдб

Kubernetes рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдиреА FlexVolume рдкреНрд▓рдЧрдЗрди рддрдпрд╛рд░ рдХреЗрд▓реЗ, рдЬреЗ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдбреЗрд╡реНрд╣рд▓рдкрд░реНрд╕рджреНрд╡рд╛рд░реЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлреНрд▓реЗрдХреНрд╕рд╡реНрд╣реЙрд▓реНрдпреВрдо рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЖрдгрд┐ рдкрджреНрдзрддреАрдВрдЪреЗ рддрд╛рд░реНрдХрд┐рдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реЛрддреЗ.

рдЪрд▓рд╛ рдерд╛рдВрдмреВ рдЖрдгрд┐ FlexVolume рдбреНрд░рд╛рдЗрд╡реНрд╣рд░ рдХрд╛рдп рдЖрд╣реЗ рддреЗ рдЬрд╡рд│реВрди рдкрд╛рд╣реВ. рд╣реЗ рдирд┐рд╢реНрдЪрд┐рдд рдЖрд╣реЗ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдлрд╛рдЗрд▓ (рдмрд╛рдпрдирд░реА рдлрд╛рдЗрд▓, рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдмреЕрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЗ.), рдЬреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реНрдпрд╛рд╡рд░, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдЗрдирдкреБрдЯ рдореНрд╣рдгреВрди рдШреЗрддреЗ рдЖрдгрд┐ JSON рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдкреВрд░реНрд╡-рдЬреНрдЮрд╛рдд рдлреАрд▓реНрдбрд╕рд╣ рд╕рдВрджреЗрд╢ рдкрд░рдд рдХрд░рддреЗ. рдирд┐рдпрдорд╛рдиреБрд╕рд╛рд░, рдкреНрд░рдердо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рддрд░реНрдХ рдиреЗрд╣рдореАрдЪ рдПрдХ рдкрджреНрдзрдд рдЕрд╕рддреЗ рдЖрдгрд┐ рдЙрд░реНрд╡рд░рд┐рдд рдпреБрдХреНрддрд┐рд╡рд╛рдж рд╣реЗ рддреНрдпрд╛рдЪреЗ рдорд╛рдкрджрдВрдб рдЕрд╕рддрд╛рдд.

Kubernetes рд╕реНрдЯреЛрд░реЗрдЬрд╕рд╛рдареА рд╡реНрд╣реЙрд▓реНрдпреВрдо рдкреНрд▓рдЧрдЗрди: Flexvolume рддреЗ CSI рдкрд░реНрдпрдВрдд
OpenShift рдордзреНрдпреЗ 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 рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдлреНрд▓реЗрдХреНрд╕рд╡реНрд╣реЙрд▓реНрдпреВрдо рдбреНрд░рд╛рдпрд╡реНрд╣рд░рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреЗ рдЙрджрд╛рд╣рд░рдг рдЖрд╣реЗ:

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/╨╕╨╝╤П_╨┐╨╛╤Б╤В╨░╨▓╤Й╨╕╨║╨░_╤Е╤А╨░╨╜╨╕╨╗╨╕╤Й╨░~╨╕╨╝╤П_╨┤╤А╨░╨╣╨▓╨╡╤А╨░/

... рдкрд░рдВрддреБ рднрд┐рдиреНрди рдХреБрдмрд░рдиреЗрдЯ рд╡рд┐рддрд░рдгреЗ (рдУрдкрдирд╢рд┐рдлреНрдЯ, рд░реЕрдиреНрдЪрд░...) рд╡рд╛рдкрд░рддрд╛рдирд╛ рдорд╛рд░реНрдЧ рднрд┐рдиреНрди рдЕрд╕реВ рд╢рдХрддреЛ.

рдлреНрд▓реЗрдХреНрд╕ рд╡реНрд╣реЙрд▓реНрдпреВрдо рд╕рдорд╕реНрдпрд╛: рдлрд┐рд╢рд┐рдВрдЧ рд░реЙрдб рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдХрд╕рд╛ рдЯрд╛рдХрд╛рдпрдЪрд╛?

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

рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдЖрджрд┐рдорд╛рдВрдкреИрдХреА рдПрдХ рд╣реЛрддреЗ - 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

рд╣реЗ рдХреЙрдкреА рдСрдкрд░реЗрд╢рди рд╡рд┐рд╕рд░реВ рдирдХрд╛ рдорд╣рддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ рдЕрдгреВ рдирд╛рд╣реА. рдХреБрдмреЗрд▓реЗрдЯрдЪреА рдкреНрд░реЛрд╡реНрд╣рд┐рдЬрдирд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реНрдг рд╣реЛрдгреНрдпрд╛рдЖрдзреАрдЪ рдбреНрд░рд╛рдпрд╡реНрд╣рд░рдЪрд╛ рд╡рд╛рдкрд░ рд╕реБрд░реВ рд╣реЛрдгреНрдпрд╛рдЪреА рджрд╛рдЯ рд╢рдХреНрдпрддрд╛ рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рддреНрд░реБрдЯреА рдирд┐рд░реНрдорд╛рдг рд╣реЛрдИрд▓. рдкреНрд░рдердо рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рдлрд╛рдпрд▓реА рд╡реЗрдЧрд│реНрдпрд╛ рдирд╛рд╡рд╛рдЦрд╛рд▓реА рдХреЙрдкреА рдХрд░рдгреЗ рдЖрдгрд┐ рдирдВрддрд░ рдЕрдгреВ рдкреБрдирд░реНрдирд╛рдорд┐рдд рдСрдкрд░реЗрд╢рди рд╡рд╛рдкрд░рдгреЗ рд╣рд╛ рдпреЛрдЧреНрдп рджреГрд╖реНрдЯреАрдХреЛрди рдЖрд╣реЗ.

Kubernetes рд╕реНрдЯреЛрд░реЗрдЬрд╕рд╛рдареА рд╡реНрд╣реЙрд▓реНрдпреВрдо рдкреНрд▓рдЧрдЗрди: Flexvolume рддреЗ CSI рдкрд░реНрдпрдВрдд
рд░реБрдХ рдСрдкрд░реЗрдЯрд░рдордзреНрдпреЗ рд╕реЗрдлрд╕реЛрдмрдд рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪрд╛ рдЖрдХреГрддреА: рдЖрдХреГрддреАрдордзреАрд▓ рдлреНрд▓реЗрдХреНрд╕рд╡реНрд╣реЙрд▓реНрдпреВрдо рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рд░реБрдХ рдПрдЬрдВрдЯрдордзреНрдпреЗ рд╕реНрдерд┐рдд рдЖрд╣реЗ

рдлреНрд▓реЗрдХреНрд╕рд╡реНрд╣реЙрд▓реНрдпреВрдо рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕ рд╡рд╛рдкрд░рддрд╛рдирд╛ рдкреБрдвреАрд▓ рд╕рдорд╕реНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрд╡рд░реАрд▓ рдмрд╣реБрддреЗрдХ рд╕реНрдЯреЛрд░реЗрдЬрд╕рд╛рдареА рдЖрд╣реЗ рдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Ceph рд╕рд╛рдареА ceph-рд╕рд╛рдорд╛рдиреНрдп рдкреЕрдХреЗрдЬ). рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛, Flexvolume рдкреНрд▓рдЧрдЗрди рдЕрд╢рд╛ рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓реА рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ рдирд╡реНрд╣рддреЗ.

рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдореВрд│ рд╕рдорд╛рдзрд╛рди рд░реБрдХ рдСрдкрд░реЗрдЯрд░рдЪреНрдпрд╛ рдлреНрд▓реЗрдХреНрд╕рд╡реНрд╣реЙрд▓реНрдпреВрдо рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдордзреНрдпреЗ рдкрд╛рд╣рд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ:

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

рдЧреБрдбрдмрд╛рдп, рдЖрдордЪреЗ рд╕реНрдиреЗрд╣реА... рдЗрди-рдЯреНрд░реА рдкреНрд▓рдЧрдЗрдиреНрд╕!

Kubernetes рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдиреА рд╢реЛрдзреВрди рдХрд╛рдврд▓реЗ рдХреА рдХреЛрд░рдордзреНрдпреЗ рд╕реНрдЯреЛрд░реЗрдЬрд╕рд╛рдареА рдкреНрд▓рдЧрдЗрдирдЪреА рд╕рдВрдЦреНрдпрд╛ рд╡реАрд╕ рдЖрд╣реЗ. рдЖрдгрд┐ рддреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХрд╛рдордзреНрдпреЗ рдмрджрд▓, рдПрдХ рдирд╛ рдПрдХ рдорд╛рд░реНрдЧ, рдкреВрд░реНрдг рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд░рд┐рд▓реАрдЭ рд╕рд╛рдпрдХрд▓рдордзреВрди рдЬрд╛рддреЛ.

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

рдкрд░рд┐рд╕реНрдерд┐рддреА рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рдЖрд╣реЗ, рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд╛рдЯрдд рдирд╛рд╣реА рдХрд╛? рд╣рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рдХрд╛рдо рдХрд░рдд рдирд╕рд▓реНрдпрд╛рдЪреЗ рд╕рдВрдкреВрд░реНрдг рд╕рдорд╛рдЬрд╛рд▓рд╛ рд╕реНрдкрд╖реНрдЯ рдЭрд╛рд▓реЗ. рдЬрд╛рдгреВрдирдмреБрдЬреВрди рдирд┐рд░реНрдгрдп рдШреЗрдКрди, Kubernetes рд╡рд┐рдХрд╛рд╕рдХ рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛рдд рдХреА рд╕реНрдЯреЛрд░реЗрдЬрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд╡реАрди рдкреНрд▓рдЧрдЗрди рдпрд╛рдкреБрдвреЗ рдХрд░реНрдирд▓рдордзреНрдпреЗ рд╕реНрд╡реАрдХрд╛рд░рд▓реЗ рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реАрдд. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдзреАрдЪ рдорд╛рд╣рд┐рдд рдЖрд╣реЗ рдХреА, рдлреНрд▓реЗрдХреНрд╕рд╡реНрд╣реЙрд▓реНрдпреВрдо рдкреНрд▓рдЧрдЗрдирдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдордзреНрдпреЗ рдЕрдиреЗрдХ рдХрдорддрд░рддрд╛ рдУрд│рдЦрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд...

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

рдХрдВрдЯреЗрдирд░ рд╕реНрдЯреЛрд░реЗрдЬ рдЗрдВрдЯрд░рдлреЗрд╕, рдХрд┐рдВрд╡рд╛ CSI 3000 рд╕реНрдкрд┐рдирд┐рдВрдЧ рд░реЙрдб!

рд╕рд░реНрд╡ рдкреНрд░рдердо, рдореА рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдК рдЗрдЪреНрдЫрд┐рддреЛ рдХреА рд╕реАрдПрд╕рдЖрдп рдХреЗрд╡рд│ рд╡реНрд╣реЙрд▓реНрдпреВрдо рдкреНрд▓рдЧрдЗрди рдирд╛рд╣реА рддрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд╣реЗ рдорд╛рдирдХ рдбреЗрдЯрд╛ рд╡реЗрдЕрд░рд╣рд╛рдКрд╕рд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд╛рдиреБрдХреВрд▓ рдШрдЯрдХ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╡рд░. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдЖрдгрд┐ рдореЗрд╕реЛрд╕ рд╕рд╛рд░рдЦреНрдпрд╛ рдХрдВрдЯреЗрдирд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рд╕рд┐рд╕реНрдЯрдордиреЗ рдпрд╛ рдорд╛рдирдХрд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдШрдЯрдХрд╛рдВрд╕рд╣ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рд╛рд╡реЗ рд╣реЗ "рд╢рд┐рдХрдгреЗ" рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реЛрддреЗ. рдЖрдгрд┐ рдЖрддрд╛ рдореА рдЖрдзреАрдЪ Kubernetes рд╢рд┐рдХрд▓реЛ рдЖрд╣реЗ.

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдордзреАрд▓ CSI рдкреНрд▓рдЧрдЗрдирдЪреА рд░рдЪрдирд╛ рдХрд╛рдп рдЖрд╣реЗ? CSI рдкреНрд▓рдЧрдЗрди рд╡рд┐рд╢реЗрд╖ рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддреЗ (CSI рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕) рддреГрддреАрдп рдкрдХреНрд╖ рд╡рд┐рдХрд╕рдХрд╛рдВрдиреА рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреАрд▓ рд╕реАрдПрд╕рдЖрдп рдбреНрд░рд╛рдпрд╡реНрд╣рд░рдордзреНрдпреЗ рдХрдореАрддрдХрдореА рджреЛрди рдШрдЯрдХ (рдкреЙрдбреНрд╕) рдЕрд╕рд╛рд╡реЗрдд:

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

Kubernetes рд╕реНрдЯреЛрд░реЗрдЬрд╕рд╛рдареА рд╡реНрд╣реЙрд▓реНрдпреВрдо рдкреНрд▓рдЧрдЗрди: Flexvolume рддреЗ CSI рдкрд░реНрдпрдВрдд
CSI рдкреНрд▓рдЧрдЗрди Kubernetes рдордзреНрдпреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ

рдЖрдкрдг CSI рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдЪреНрдпрд╛ рдЗрддрд░ рдХрд╛рд╣реА рддрдкрд╢реАрд▓рд╛рдВрдмрджреНрджрд▓ рдЬрд╛рдгреВрди рдШреЗрдК рд╢рдХрддрд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд▓реЗрдЦрд╛рддреВрдиC.S.I рд╕рдордЬреВрди рдШреЗрдгреЗ.┬╗ рдЬреНрдпрд╛рдЪреЗ рднрд╛рд╖рд╛рдВрддрд░ рдЖрдореНрд╣реА рдПрдХ рд╡рд░реНрд╖рд╛рдкреВрд░реНрд╡реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ.

рдЕрд╢рд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреЗ рдлрд╛рдпрджреЗ

  • рдиреЛрдбрд╕рд╛рдареА рдбреНрд░рд╛рдпрд╡реНрд╣рд░рдЪреА рдиреЛрдВрджрдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреАрдВрд╕рд╛рдареА, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдбреЗрд╡реНрд╣рд▓рдкрд░реНрд╕рдиреА рдХрдВрдЯреЗрдирд░рдЪрд╛ рдПрдХ рд╕рдВрдЪ рд▓рд╛рдЧреВ рдХреЗрд▓рд╛. Flexvolume рдкреНрд▓рдЧрдЗрдирд╕рд╛рдареА рдХреЗрд▓реЗ рд╣реЛрддреЗ рддреНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛рдкреБрдвреЗ рдХреНрд╖рдорддрд╛рдВрд╕рд╣ JSON рдкреНрд░рддрд┐рд╕рд╛рдж рдирд┐рд░реНрдорд╛рдг рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА.
  • рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдлрд╛рдЗрд▓реНрд╕ рдиреЛрдбреНрд╕рд╡рд░ тАЬрд╕реНрд▓рд┐рдктАЭ рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА, рдЖрдореНрд╣реА рдЖрддрд╛ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рдкреЙрдбреНрд╕ рдЕрдкрд▓реЛрдб рдХрд░рддреЛ. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдХрдбреВрди рдЖрдореНрд╣реА рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рд╣реАрдЪ рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЛ: рд╕рд░реНрд╡ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡реНрд╕ рд╡рд╛рдкрд░реВрди рддреИрдирд╛рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рд╣реЛрддрд╛рдд.
  • рдЬрдЯрд┐рд▓ рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛рдкреБрдвреЗ RPC рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ RPC рдХреНрд▓рд╛рдпрдВрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА. рдХреНрд▓рд╛рдпрдВрдЯ рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА Kubernetes рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдиреА рд▓рд╛рдЧреВ рдХреЗрд▓рд╛ рд╣реЛрддрд╛.
  • рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рддрд░реНрдХрд╛рдВрдордзреВрди рдкрд╛рд╕ рдХрд░рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ gRPC рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд╡рд░ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдпреБрдХреНрддрд┐рд╡рд╛рдж рдкрд╛рд╕ рдХрд░рдгреЗ рдЕрдзрд┐рдХ рд╕реЛрдпреАрд╕реНрдХрд░, рд▓рд╡рдЪрд┐рдХ рдЖрдгрд┐ рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рд░реНрд╣ рдЖрд╣реЗ. рдкреНрд░рдорд╛рдгрд┐рдд gRPC рдкрджреНрдзрдд рдЬреЛрдбреВрди CSI рдордзреНрдпреЗ рд╡реНрд╣реЙрд▓реНрдпреВрдо рд╡рд╛рдкрд░ рдореЗрдЯреНрд░рд┐рдХреНрд╕рд╕рд╛рдареА рд╕рдорд░реНрдерди рдХрд╕реЗ рдЬреЛрдбрд╛рдпрдЪреЗ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рд╣реЗ рд╡рд╛рдЪреВ рд╢рдХрддрд╛: рдЖрдордЪреА рдкреБрд▓ рд╡рд┐рдирдВрддреА vsphere-csi рдбреНрд░рд╛рдЗрд╡реНрд╣рд░рд╕рд╛рдареА.
  • рд╕рдВрдкреНрд░реЗрд╖рдг рдЖрдпрдкреАрд╕реА рд╕реЙрдХреЗрдЯреНрд╕рджреНрд╡рд╛рд░реЗ рд╣реЛрддреЗ, рдЬреЗрдгреЗрдХрд░реВрди рдХреБрдмреЗрд▓реЗрдЯрдиреЗ рдпреЛрдЧреНрдп рдкреЙрдбрд▓рд╛ рд╡рд┐рдирдВрддреА рдкрд╛рдард╡рд▓реА рдХреА рдирд╛рд╣реА рдпрд╛рдЪрд╛ рдЧреЛрдВрдзрд│ рд╣реЛрдК рдирдпреЗ.

рд╣реА рдпрд╛рджреА рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╢рд╛рдЪреА рдЖрдард╡рдг рдХрд░реВрди рджреЗрддреЗ рдХрд╛? CSI рдЪреЗ рдлрд╛рдпрджреЗ рдЖрд╣реЗрдд рддреНрдпрд╛рдЪ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рдгреЗ, рдЬреЗ Flexvolume рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддрд╛рдирд╛ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддрд▓реЗ рдЧреЗрд▓реЗ рдирд╛рд╣реА.

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

рдбреЗрдЯрд╛ рд╡реЗрдЕрд░рд╣рд╛рдКрд╕рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рд╕рд╛рдареА рд╕рд╛рдиреБрдХреВрд▓ рдкреНрд▓рдЧрдЗрдиреНрд╕рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдорд╛рдирдХ рдореНрд╣рдгреВрди CSI рд▓рд╛ рд╕рдореБрджрд╛рдпрд╛рдХрдбреВрди рдЕрддрд┐рд╢рдп рдЙрддреНрд╕рд╛рд╣рд╛рдиреЗ рд╕реНрд╡рд╛рдЧрдд рдорд┐рд│рд╛рд▓реЗ. рд╢рд┐рд╡рд╛рдп, рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдлрд╛рдпрджреНрдпрд╛рдВрдореБрд│реЗ рдЖрдгрд┐ рдЕрд╖реНрдЯрдкреИрд▓реБрддреНрд╡рд╛рдореБрд│реЗ, CSI рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕ рдЕрдЧрджреА Ceph рдХрд┐рдВрд╡рд╛ AWS EBS рд╕рд╛рд░рдЦреНрдпрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯреАрдорд╕рд╛рдареА рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рдЖрд╡реГрддреНрддреАрдд рдЬреЛрдбрд▓реЗрд▓реЗ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд▓рдЧрдЗрди.

2019 рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛, рдЗрди-рдЯреНрд░реА рдкреНрд▓рдЧрдЗрди рдЕрдкреНрд░рдЪрд▓рд┐рдд рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗрдд. рдЖрдореНрд╣реА Flexvolume рдкреНрд▓рдЧрдЗрдирд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгреЗ рд╕реБрд░реВ рдареЗрд╡рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрдЦрдд рдЖрд╣реЛрдд, рдкрд░рдВрддреБ рддреНрдпрд╛рд╕рд╛рдареА рдирд╡реАрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгрд╛рд░ рдирд╛рд╣реА.

рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдзреАрдЪ ceph-csi, vsphere-csi рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдЕрдиреБрднрд╡ рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рдпрд╛ рд╕реВрдЪреАрдордзреНрдпреЗ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдЖрд╣реЛрдд! рдЖрддрд╛рдкрд░реНрдпрдВрдд, CSI рддреНрдпрд╛рд▓рд╛ рдиреЗрдореВрди рджрд┐рд▓реЗрд▓реНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдВрдЪрд╛ рд╕рд╛рдордирд╛ рдХрд░рдд рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЖрдореНрд╣реА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реВ рдЖрдгрд┐ рдкрд╛рд╣реВ.

рд╣реЗ рд╡рд┐рд╕рд░реВ рдирдХрд╛ рдХреА рдирд╡реАрди рд╕рд░реНрд╡рдХрд╛рд╣реА рдЬреБрдиреНрдпрд╛рдЪрд╛ рдЪрд╛рдВрдЧрд▓рд╛ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдЖрд╣реЗ!

PS

рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрд╡рд░ рджреЗрдЦреАрд▓ рд╡рд╛рдЪрд╛:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛