เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเดจเตเดณเตเดณ เดตเต‹เดณเดฟเดฏเด‚ เดชเตเดฒเด—เดฟเดจเตเด•เตพ: เดซเตเดฒเต†เด•เตโ€Œเดธเต เดตเต‹เดณเตเดฏเด‚ เดฎเตเดคเตฝ เดธเดฟเดŽเดธเตโ€Œเด เดตเดฐเต†

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเดจเตเดณเตเดณ เดตเต‹เดณเดฟเดฏเด‚ เดชเตเดฒเด—เดฟเดจเตเด•เตพ: เดซเตเดฒเต†เด•เตโ€Œเดธเต เดตเต‹เดณเตเดฏเด‚ เดฎเตเดคเตฝ เดธเดฟเดŽเดธเตโ€Œเด เดตเดฐเต†

เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต v1.0.0 เด†เดฏเดฟเดฐเตเดจเตเดจเดชเตเดชเต‹เตพ, เดตเต‹เดณเดฟเดฏเด‚ เดชเตเดฒเด—เดฟเดจเตเด•เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดธเตเดฅเดฟเดฐเดฎเดพเดฏ (เดธเตเดฅเดฟเดฐเดฎเดพเดฏ) เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเต† เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด…เดต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต. เด…เดตเดฐเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดšเต†เดฑเตเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต, เด†เดฆเตเดฏเดคเตเดคเต‡เดคเดฟเตฝ GCE PD, Ceph, AWS EBS เดคเตเดŸเด™เตเด™เดฟเดฏ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดฆเดพเดคเดพเด•เตเด•เดณเตเด‚ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต.

เดชเตเดฒเด—เดฟเดจเตเด•เตพ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเดจเตŠเดชเตเดชเด‚ เดกเต†เดฒเดฟเดตเตผ เดšเต†เดฏเตเดคเต, เด…เดคเดฟเดจเดพเดฒเดพเดฃเต เด…เดตเตผเด•เตเด•เต เด…เดตเดฐเตเดŸเต† เดชเต‡เดฐเต เดฒเดญเดฟเดšเตเดšเดคเต - เด‡เตป-เดŸเตเดฐเต€. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดชเดฒเตผเด•เตเด•เตเด‚, เด…เดคเตเดคเดฐเด‚ เดชเตเดฒเด—เดฟเดจเตเด•เดณเตเดŸเต† เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เดธเต†เดฑเตเดฑเต เด…เดชเดฐเตเดฏเดพเดชเตเดคเดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟ. เด•เดฐเด•เต—เดถเดฒ เดตเดฟเดฆเด—เตเดงเตผ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เต‹เดฑเดฟเดฒเต‡เด•เตเด•เต เดชเดพเดšเตเดšเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเตเดฒเด—เดฟเดจเตเด•เตพ เดšเต‡เตผเดคเตเดคเต, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เด…เดตเตผ เดธเตเดตเดจเตเดคเด‚ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเตเด•เตพ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเด•เดฏเตเด‚ เด…เดตเดฐเตเดŸเต† เดธเต†เตผเดตเดฑเตเด•เดณเดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต. เดŽเดจเตเดจเดพเตฝ เด•เดพเดฒเด•เตเดฐเดฎเต‡เดฃ, เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เด…เดคเต เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดฟ เดฎเดคเตเดธเตเดฏเด‚ เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ. เด†เดณเตเด•เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฃเต เดซเดฟเดทเดฟเด‚เด—เต เดตเดŸเดฟ. เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต v1.2.0 เดจเตเดฑเต† เดฑเดฟเดฒเต€เดธเดฟเตฝ เด…เดคเต เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸเต...

Flexvolume เดชเตเดฒเด—เดฟเตป: เดฎเดฟเดจเดฟเดฎเตฝ เดซเดฟเดทเดฟเด‚เด—เต เดตเดŸเดฟ

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ FlexVolume เดชเตเดฒเด—เดฟเตป เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต, เด‡เดคเต เดฎเต‚เดจเตเดจเดพเด‚ เด•เด•เตเดทเดฟ เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฟเดฏ Flexvolume เดกเตเดฐเตˆเดตเดฑเตเด•เดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดฐเต€เดคเดฟเด•เดณเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดฒเต‹เดœเดฟเด•เตเด•เตฝ เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต.

เดซเตเดฒเต†เด•เตเดธเต เดตเต‹เดณเดฟเดฏเด‚ เดกเตเดฐเตˆเดตเตผ เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดจเดฟเตผเดคเตเดคเดพเด‚, เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เดจเต‹เด•เตเด•เดพเด‚. เด‡เดคเต เด‰เดฑเดชเตเดชเดพเดฃเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดซเดฏเตฝ (เดฌเตˆเดจเดฑเดฟ เดซเดฏเตฝ, เดชเตˆเดคเตเดคเตบ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต, เดฌเดพเดทเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดฎเตเดคเดฒเดพเดฏเดต), เด…เดคเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เตพ เด‡เตปเดชเตเดŸเตเดŸเดพเดฏเดฟ เดŽเดŸเตเด•เตเด•เตเด•เดฏเตเด‚ JSON เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เด…เดฑเดฟเดฏเดพเดตเตเดจเตเดจ เดซเต€เตฝเดกเตเด•เดณเตเดณเตเดณ เด’เดฐเต เดธเดจเตเดฆเต‡เดถเด‚ เดจเตฝเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด•เตบเดตเต†เตปเดทเตป เดชเตเดฐเด•เดพเดฐเด‚, เด†เดฆเตเดฏเดคเตเดคเต† เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเต เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เด’เดฐเต เดฐเต€เดคเดฟเดฏเดพเดฃเต, เดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจ เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เตพ เด…เดคเดฟเดจเตเดฑเต† เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเดพเดฃเต.

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเดจเตเดณเตเดณ เดตเต‹เดณเดฟเดฏเด‚ เดชเตเดฒเด—เดฟเดจเตเด•เตพ: เดซเตเดฒเต†เด•เตโ€Œเดธเต เดตเต‹เดณเตเดฏเด‚ เดฎเตเดคเตฝ เดธเดฟเดŽเดธเตโ€Œเด เดตเดฐเต†
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-เดจเตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ Flexvolume เดกเตเดฐเตˆเดตเตผ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‡เดคเดพ:

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

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

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

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

domount() {
    MNTPATH=$1

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

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

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

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

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

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

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

op=$1

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

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

shift

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

exit 1

เด…เดคเดฟเดจเดพเตฝ, เดฏเดฅเดพเตผเดคเตเดฅ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดซเดฏเตฝ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดฟเดฏ เดถเต‡เดทเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เดกเตเดฐเตˆเดตเตผ เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•. เด“เดฐเต‹ เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดจเต‹เดกเดฟเดฒเตเด‚ เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เดจเดฟเดถเตเดšเดฏเดฟเดšเตเดš เดชเดพเดค เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดกเตเดฐเตˆเดตเตผ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเดฃเด‚. เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เด‡เดคเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต:

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

... เดŽเดจเตเดจเดพเตฝ เดตเตเดฏเดคเตเดฏเดธเตเดค เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดตเดฟเดคเดฐเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ (เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต, เดฑเดพเดžเตเดšเตผ...) เดชเดพเดค เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚.

เดซเตเดฒเต†เด•เตเดธเต เดตเต‹เดณเดฟเดฏเด‚ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ: เด’เดฐเต เดฎเดคเตเดธเตเดฏเดฌเดจเตเดงเดจ เดตเดŸเดฟ เดŽเด™เตเด™เดจเต† เดถเดฐเดฟเดฏเดพเดฏเดฟ เด‡เดŸเดพเด‚?

เดซเตเดฒเต†เด•เตเดธเต เดตเต‹เดณเดฟเดฏเด‚ เดกเตเดฐเตˆเดตเตผ เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดจเต‹เดกเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดจเดฟเดธเตเดธเดพเดฐเดฎเดฒเตเดฒเดพเดคเตเดค เด’เดฐเต เดœเต‹เดฒเดฟเดฏเดพเดฏเดฟ เดฎเดพเดฑเดฟ. เด“เดชเตเดชเดฑเต‡เดทเตป เด’เดฐเดฟเด•เตเด•เตฝ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดšเต†เดฏเตเดคเตเด•เดดเดฟเดžเตเดžเดพเตฝ, เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดชเตเดคเดฟเดฏ เดจเต‹เดกเตเด•เตพ เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต เดธเดพเดนเดšเดฐเตเดฏเด‚ เดจเต‡เดฐเดฟเดŸเดพเตป เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต: เด’เดฐเต เดชเตเดคเดฟเดฏ เดจเต‹เดกเต, เด“เดŸเตเดŸเต‹เดฎเดพเดฑเตเดฑเดฟเด•เต เดนเต‹เดฑเดฟเดธเต‹เดฃเตเดŸเตฝ เดธเตเด•เต†เดฏเดฟเดฒเดฟเด‚เด—เต, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ - เด’เดฐเต เดคเด•เดฐเดพเตผ เด•เดพเดฐเดฃเด‚ เด’เดฐเต เดจเต‹เดกเต เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตฝ เดŽเดจเตเดจเดฟเดต เด•เดพเดฐเดฃเด‚. เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดˆ เดจเต‹เดกเตเด•เดณเดฟเดฒเต† เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดฃเด‚ เด…เดธเดพเดงเตเดฏเดฎเดพเดฃเต, เดจเดฟเด™เตเด™เตพ เด…เดตเดฏเดฟเดฒเต‡เด•เตเด•เต Flexvolume เดกเตเดฐเตˆเดตเตผ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเต เดตเดฐเต†.

เดˆ เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เดชเดฐเดฟเดนเดพเดฐเด‚ เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดชเตเดฐเดฟเดฎเดฟเดฑเตเดฑเต€เดตเตเด•เดณเดฟเตฝ เด’เดจเตเดจเดพเดฏเดฟเดฐเตเดจเตเดจเต - DaemonSet. เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เด’เดฐเต เดชเตเดคเดฟเดฏ เดจเต‹เดกเต เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเดฎเตเดชเต‹เตพ, เด…เดคเดฟเตฝ เดธเตเดตเดฏเดฎเต‡เดต เดžเด™เตเด™เดณเตเดŸเต† เดกเต†เดฎเต‹เตบเดธเต†เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดชเต‹เดกเต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดฒเต‡เด•เตเด•เต เดซเตเดฒเต†เด•เตโ€Œเดธเต เดตเต‹เดณเดฟเดฏเด‚ เดกเตเดฐเตˆเดตเดฑเตเด•เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เดชเดพเดคเดฏเดฟเตฝ เด’เดฐเต เดฒเต‹เด•เตเด•เตฝ เดตเต‹เดณเดฟเดฏเด‚ เด˜เดŸเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดกเตเดฐเตˆเดตเตผ เดกเดฟเดธเตเด•เดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดซเดฏเดฒเตเด•เตพ เดชเต‹เดกเต เดชเด•เตผเดคเตเดคเตเดจเตเดจเต.

เด’เดฐเต เดซเตเดฒเต†เด•เตเดธเต เดตเต‹เดณเดฟเดฏเด‚ เดชเตเดฒเด—เดฟเตป เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดกเต†เดฎเตบเดธเต†เดฑเตเดฑเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‡เดคเดพ:

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

... เด•เต‚เดŸเดพเดคเต† 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

เด•เต‹เดชเตเดชเดฟ เด“เดชเตเดชเดฑเต‡เดทเตป เด†เดฃเต†เดจเตเดจ เด•เดพเดฐเตเดฏเด‚ เดฎเดฑเด•เตเด•เดฐเตเดคเต เด†เดฑเตเดฑเต‹เดฎเดฟเด•เต เด…เดฒเตเดฒ. เด•เตเดฏเต‚เดฌเดฒเต†เดฑเตเดฑเต เด…เดคเดฟเดจเตเดฑเต† เดชเตเดฐเตŠเดตเดฟเดทเดจเดฟเด‚เด—เต เดชเตเดฐเด•เตเดฐเดฟเดฏ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดกเตเดฐเตˆเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดพเดจเตเดณเตเดณ เด‰เดฏเตผเดจเตเดจ เดธเดพเดงเตเดฏเดคเดฏเตเดฃเตเดŸเต, เด‡เดคเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดคเด•เดฐเดพเดฑเดฟเดฒเดพเด•เตเดจเตเดจเต. เด†เดฆเตเดฏเด‚ เดกเตเดฐเตˆเดตเตผ เดซเดฏเดฒเตเด•เตพ เดฎเดฑเตเดฑเตŠเดฐเต เดชเต‡เดฐเดฟเตฝ เดชเด•เตผเดคเตเดคเตเด•, เดคเตเดŸเตผเดจเตเดจเต เด’เดฐเต เด†เดฑเตเดฑเต‹เดฎเดฟเด•เต เดฑเต€เดจเต†เดฏเดฟเด‚ เด“เดชเตเดชเดฑเต‡เดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดถเดฐเดฟเดฏเดพเดฏ เดธเดฎเต€เดชเดจเด‚.

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเดจเตเดณเตเดณ เดตเต‹เดณเดฟเดฏเด‚ เดชเตเดฒเด—เดฟเดจเตเด•เตพ: เดซเตเดฒเต†เด•เตโ€Œเดธเต เดตเต‹เดณเตเดฏเด‚ เดฎเตเดคเตฝ เดธเดฟเดŽเดธเตโ€Œเด เดตเดฐเต†
เดฑเต‚เด•เตเด•เต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฑเดฟเตฝ เดธเต†เดซเดฟเดจเตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เดกเดฏเด—เตเดฐเด‚: เดกเดฏเด—เตเดฐเดพเดฎเดฟเดฒเต† เดซเตเดฒเต†เด•เตเดธเต เดตเต‹เดณเดฟเดฏเด‚ เดกเตเดฐเตˆเดตเตผ เดฑเต‚เด•เตเด•เต เดเดœเดจเตเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเต

Flexvolume เดกเตเดฐเตˆเดตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เดดเตเดณเตเดณ เด…เดŸเตเดคเตเดค เดชเตเดฐเดถเตเดจเด‚ เด’เดฐเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดจเต‹เดกเดฟเดฒเต† เดฎเดฟเด•เตเด• เดธเด‚เดญเดฐเดฃเดคเตเดคเดฟเดจเตเด‚ เด†เดฃเต เด‡เดคเดฟเดจเดพเดตเดถเตเดฏเดฎเดพเดฏ เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดฃเด‚ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, Ceph-เดจเตเดณเตเดณ ceph-common เดชเดพเด•เตเด•เต‡เดœเต). เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ, Flexvolume เดชเตเดฒเด—เดฟเตป เด…เดคเตเดคเดฐเด‚ เดธเด™เตเด•เต€เตผเดฃเตเดฃ เดธเด‚เดตเดฟเดงเดพเดจเด™เตเด™เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเดฟเดฒเตเดฒ.

เดˆ เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฏเดฅเดพเตผเดคเตเดฅ เดชเดฐเดฟเดนเดพเดฐเด‚ เดฑเต‚เด•เตเด•เต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฑเดฟเดจเตเดฑเต† เดซเตเดฒเต†เด•เตเดธเต เดตเต‹เดณเดฟเดฏเด‚ เดกเตเดฐเตˆเดตเตผ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฒเดฟเตฝ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚:

เดกเตเดฐเตˆเดตเตผ เดคเดจเตเดจเต† เด’เดฐเต RPC เด•เตเดฒเดฏเดจเตเดฑเต เด†เดฏเดฟ เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเดคเตเดคเดฟเดจเดพเดฏเตเดณเตเดณ เดเดชเดฟเดธเดฟ เดธเต‹เด•เตเด•เดฑเตเดฑเต เดกเตเดฐเตˆเดตเดฑเดฟเดจเตเดฑเต† เด…เดคเต‡ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเดฟเดฒเดพเดฃเต เดธเตเดฅเดฟเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต. เดกเตเดฐเตˆเดตเตผ เดซเดฏเดฒเตเด•เตพ เดชเด•เตผเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต, เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเต† เด’เดฐเต เดตเต‹เดณเตเดฏเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เดกเต†เดฎเต‹เตบเดธเต†เดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเดฒเตเดฒเดคเดพเดฃเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด“เตผเด•เตเด•เตเดจเตเดจเต. เด†เดตเดถเตเดฏเดฎเดพเดฏ เดฑเต‚เด•เตเด•เต เดกเตเดฐเตˆเดตเตผ เดซเดฏเดฒเตเด•เตพ เดชเด•เตผเดคเตเดคเดฟเดฏ เดถเต‡เดทเด‚, เดˆ เดชเต‹เดกเต เดฎเดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ RPC เดธเต†เตผเดตเดฑเดพเดฏเดฟ เด…เดฑเตเดฑเดพเดšเตเดšเต เดšเต†เดฏเตเดค เดตเต‹เดณเดฟเดฏเด‚ เดตเดดเดฟ IPC เดธเต‹เด•เตเด•เดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เดชเต‹เดกเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เดธเต†เดซเต-เด•เต‹เดฎเตบ เดชเดพเด•เตเด•เต‡เดœเต เด‡เดคเดฟเดจเด•เด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เด…เดคเต‡ เดจเต‹เดกเดฟเตฝ เดธเตเดฅเดฟเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดชเต‹เดกเตเดฎเดพเดฏเดฟ เด•เตเดฌเต†เดฒเต†เดฑเตเดฑเต เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดจเดŸเดคเตเดคเตเดฎเต†เดจเตเดจเต IPC เดธเต‹เด•เตเด•เดฑเตเดฑเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเดจเตเดจเต. เดธเดฎเตผเดคเตเดฅเดฎเดพเดฏ เดŽเดฒเตเดฒเดพเด‚ เดฒเดณเดฟเดคเดฎเดพเดฃเต! ..

เดตเดฟเดŸ, เดžเด™เตเด™เดณเตเดŸเต† เดตเดพเดคเตเดธเดฒเตเดฏเดฎเตเดณเตเดณ... เด‡เตป-เดŸเตเดฐเต€ เดชเตเดฒเด—เดฟเดจเตเด•เตพ!

เด•เต‡เตผเดฃเดฒเดฟเดจเตเดณเตเดณเดฟเตฝ เดธเด‚เดญเดฐเดฃเดคเตเดคเดฟเดจเตเดณเตเดณ เดชเตเดฒเด—เดฟเดจเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด‡เดฐเตเดชเดคเดพเดฃเต†เดจเตเดจเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เด•เดฃเตเดŸเต†เดคเตเดคเดฟ. เด…เดตเดฏเดฟเตฝ เด“เดฐเต‹เดจเตเดจเดฟเดฒเตเด‚ เด’เดฐเต เดฎเดพเดฑเตเดฑเด‚, เด’เดฐเต เดคเดฐเดคเตเดคเดฟเตฝ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเดฑเตเดฑเตŠเดจเตเดจเต, เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดฑเดฟเดฒเต€เดธเต เดธเตˆเด•เตเด•เดฟเดณเดฟเดฒเต‚เดŸเต† เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเดจเตเดจเต.

เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดชเตเดฒเด—เดฟเดจเตเดฑเต† เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‡เดคเต เดฎเดพเดฑเตเดจเตเดจเต, เดจเดฟเด™เตเด™เตพ เดฎเตเดดเตเดตเตป เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด‚ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‡เดคเตเด•เต‚เดŸเดพเดคเต†, Kubernetes-เดจเตเดฑเต† เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดจเดฟเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ Linux เด•เต‡เตผเดฃเดฒเตเดฎเดพเดฏเดฟ เดชเต†เดŸเตเดŸเต†เดจเตเดจเต เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเดพเดคเตเดคเดคเดฟเตฝ เดจเดฟเด™เตเด™เตพ เด†เดถเตเดšเดฐเตเดฏเดชเตเดชเต†เดŸเตเดŸเต‡เด•เตเด•เดพเด‚... เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เด•เดฃเตเดฃเตเดจเต€เตผ เดคเตเดŸเดšเตเดšเต, เดชเดฒเตเดฒเต เด•เดŸเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเตเดฎเดพเดฏเตเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเตเดฎเดพเดฏเตเด‚ เดธเดฎเดฏเด‚ เดเด•เต‹เดชเดฟเดชเตเดชเดฟเด•เตเด•เตเด•. Linux เด•เต‡เตผเดฃเดฒเตเด‚ Kubernetes เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด‚ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•. เดธเต‡เดตเดจเด™เตเด™เตพ เดจเตฝเด•เตเดจเตเดจเดคเดฟเตฝ เดคเดŸเดธเตเดธเด‚ เดธเดพเดงเตเดฏเดฎเดพเดฏเดคเต‹เดŸเต†.

เดธเดพเดนเดšเดฐเตเดฏเด‚ เดคเดฎเดพเดถเดฏเต‡เด•เตเด•เดพเตพ เด•เต‚เดŸเตเดคเดฒเดพเดฃเต, เดจเดฟเด™เตเด™เตพ เด•เดฐเตเดคเตเดจเตเดจเดฟเดฒเตเดฒเต‡? เดธเดฎเต€เดชเดจเด‚ เดซเดฒเดชเตเดฐเดฆเดฎเดฒเตเดฒเต†เดจเตเดจเต เดธเดฎเต‚เดนเดคเตเดคเดฟเดจเต เดฎเตเดดเตเดตเตป เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ. เดฎเดจเดƒเดชเต‚เตผเดตเดฎเดพเดฏ เดคเต€เดฐเตเดฎเดพเดจเดคเตเดคเดฟเดฒเต‚เดŸเต†, เดธเด‚เดญเดฐเดฃเดตเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดคเดฟเดฏ เดชเตเดฒเด—เดฟเดจเตเด•เตพ เด‡เดจเดฟ เด•เต‡เตผเดฃเดฒเดฟเดฒเต‡เด•เตเด•เต เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เดฟเดฒเตเดฒเต†เดจเตเดจเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดชเตเดฐเด–เตเดฏเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด•เต‚เดŸเดพเดคเต†, เดจเดฎเตเด•เตเด•เต เด‡เดคเดฟเดจเด•เด‚ เด…เดฑเดฟเดฏเดพเดตเตเดจเตเดจเดคเตเดชเต‹เดฒเต†, Flexvolume เดชเตเดฒเด—เดฟเตป เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดฐเดตเดงเดฟ เดชเต‹เดฐเดพเดฏเตเดฎเด•เตพ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดžเตเดžเต.

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต† เดตเต‹เดณเตเดฏเด™เตเด™เตพเด•เตเด•เดพเดฏเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดšเต‡เตผเดคเตเดค เดชเตเดฒเด—เดฟเตป, CSI, เดธเตเดฅเดฟเดฐเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดถเตโ€Œเดจเด‚ เด…เดตเดธเดพเดจเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเดŸเต. เด…เดคเดฟเดจเตเดฑเต† เด†เตฝเดซ เดชเดคเดฟเดชเตเดชเต, เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เด”เดŸเตเดŸเต-เด“เดซเต-เดŸเตเดฐเต€ CSI เดตเต‹เดณเดฟเดฏเด‚ เดชเตเดฒเด—เดฟเดจเตเด•เตพ เดŽเดจเตเดจเดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต, เดฑเดฟเดฒเต€เดธเดฟเตฝ เดชเตเดฐเด–เตเดฏเดพเดชเดฟเดšเตเดšเต. เด•เตเดฌเต‡เตผเดจเต†เดฑเตเดฑเตเดธเต 1.9.

เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เด‡เดจเตเดฑเตผเดซเต‡เดธเต, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ CSI 3000 เดธเตเดชเดฟเดจเตเดจเดฟเด‚เด—เต เดตเดŸเดฟ!

เด’เดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, เดธเดฟโ€ŒเดŽเดธเตโ€Œเด เด’เดฐเต เดตเต‹เดณเดฟเดฏเด‚ เดชเตเดฒเด—เดฟเตป เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดฏเดฅเดพเตผเดคเตเดฅเดฎเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดกเดพเดฑเตเดฑ เดตเต†เดฏเตผเดนเต—เดธเตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‡เดทเตเดŸเดพเดจเตเดธเตƒเดค เด˜เดŸเด•เด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ. เดˆ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฟเดฏ เด˜เดŸเด•เด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต, เดฎเต†เดธเต‹เดธเต เดคเตเดŸเด™เตเด™เดฟเดฏ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเตป เดธเด‚เดตเดฟเดงเดพเดจเด™เตเด™เตพ "เดชเด เดฟเด•เตเด•เดฃเด‚". เด‡เดชเตเดชเต‹เตพ เดžเดพเตป เด‡เดคเดฟเดจเด•เด‚ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดชเด เดฟเดšเตเดšเต.

Kubernetes-เดฒเต† CSI เดชเตเดฒเด—เดฟเดจเตเดฑเต† เด˜เดŸเดจ เดŽเดจเตเดคเดพเดฃเต? CSI เดชเตเดฒเด—เดฟเตป เดชเตเดฐเดคเตเดฏเต‡เด• เดกเตเดฐเตˆเดตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต (CSI เดกเตเดฐเตˆเดตเตผเดฎเดพเตผ) เดฎเต‚เดจเตเดจเดพเด‚ เด•เด•เตเดทเดฟ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดŽเดดเตเดคเดฟเดฏเดคเต. เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเดฟเดฒเต† เด’เดฐเต เดธเดฟเดŽเดธเตเด เดกเตเดฐเตˆเดตเดฑเดฟเตฝ เดšเตเดฐเตเด™เตเด™เดฟเดฏเดคเต เดฐเดฃเตเดŸเต เด˜เดŸเด•เด™เตเด™เตพ (เดชเต‹เดกเตเด•เตพ) เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚:

  • เด•เตบเดŸเตเดฐเต‡เดพเดณเตผ - เดฌเดพเดนเตเดฏ เดชเต†เตผเดธเดฟเดธเตเดฑเตเดฑเดจเตเดฑเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเตเด•เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดคเต เด’เดฐเต gRPC เดธเต†เตผเดตเดฑเดพเดฏเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเดฏเดฟ เดชเตเดฐเดพเด•เตƒเดคเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต StatefulSet.
  • เดจเต‡เดพเดกเต โ€” เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดจเต‹เดกเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดชเต†เตผเดธเดฟเดธเตเดฑเตเดฑเดจเตเดฑเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดฎเตŒเดฃเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเด‚. เด‡เดคเต เด’เดฐเต gRPC เดธเต†เตผเดตเดฑเดพเดฏเตเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต, เดชเด•เตเดทเต‡ เด‡เดคเต เดชเตเดฐเดพเด•เตƒเดคเดฎเดพเดฃเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต DaemonSet.

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเดฟเดจเตเดณเตเดณ เดตเต‹เดณเดฟเดฏเด‚ เดชเตเดฒเด—เดฟเดจเตเด•เตพ: เดซเตเดฒเต†เด•เตโ€Œเดธเต เดตเต‹เดณเตเดฏเด‚ เดฎเตเดคเตฝ เดธเดฟเดŽเดธเตโ€Œเด เดตเดฐเต†
เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเตฝ CSI เดชเตเดฒเด—เดฟเตป เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต

เดธเดฟเดŽเดธเตโ€ŒเดเดฏเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต† เดฎเดฑเตเดฑเต เดšเดฟเดฒ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเด เดฟเด•เตเด•เดพเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, "" เดŽเดจเตเดจ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดธเดฟ.เดŽเดธเต.เดเดฏเต† เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต.", เด…เดคเดฟเดจเตเดฑเต† เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เดžเด™เตเด™เตพ เด’เดฐเต เดตเตผเดทเด‚ เดฎเตเดฎเตเดชเต เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเดšเตเดšเต.

เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดจเดŸเดชเตเดชเดพเด•เตเด•เดฒเดฟเดจเตเดฑเต† เด—เตเดฃเด™เตเด™เตพ

  • เด’เดฐเต เดจเต‹เดกเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดกเตเดฐเตˆเดตเตผ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดชเต‹เดฒเตเดณเตเดณ เด…เดŸเดฟเดธเตเดฅเดพเดจ เด•เดพเดฐเตเดฏเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ, เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฟ. Flexvolume เดชเตเดฒเด—เดฟเตป เดšเต†เดฏเตโ€Œเดคเดคเตเดชเต‹เดฒเต†, เด•เดดเดฟเดตเตเด•เดณเตเดณเตเดณ เด’เดฐเต JSON เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เดจเดฟเด™เตเด™เตพ เด‡เดจเดฟ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ.
  • เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดซเดฏเดฒเตเด•เตพ เดจเต‹เดกเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต "เดธเตเดฒเดฟเดชเตเดชเต" เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดชเด•เดฐเด‚, เดžเด™เตเด™เตพ เด‡เดชเตเดชเต‹เตพ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดกเตเด•เตพ เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. Kubernetes เตฝ เดจเดฟเดจเตเดจเต เดžเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเต เด‡เดคเดพเดฃเต: เดŽเดฒเตเดฒเดพ เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เดณเตเด‚ Kubernetes เดชเตเดฐเดฟเดฎเดฟเดฑเตเดฑเต€เดตเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเดฟเตฝ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเต.
  • เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดกเตเดฐเตˆเดตเดฑเตเด•เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพ เด‡เดจเดฟ เด’เดฐเต RPC เดธเต†เตผเดตเดฑเตเด‚ RPC เด•เตเดฒเดฏเดจเตเดฑเตเด‚ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ. เด•เตเดฏเตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดžเด™เตเด™เตพเด•เตเด•เต เดตเต‡เดฃเตเดŸเดฟ เด•เตเดฒเดฏเดจเตเดฑเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฟ.
  • เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เดณเดฟเดฒเต‚เดŸเต† เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเดจเตเดจเดคเดฟเดจเต‡เด•เตเด•เดพเตพ gRPC เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เตพ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเดคเต เด•เต‚เดŸเตเดคเตฝ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเด‚ เดตเดดเด•เตเด•เดฎเตเดณเตเดณเดคเตเด‚ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดตเตเดฎเดพเดฃเต. เด’เดฐเต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต gRPC เดฐเต€เดคเดฟ เดšเต‡เตผเดคเตเดคเต CSI-เดฒเต‡เด•เตเด•เต เดตเต‹เดณเดฟเดฏเด‚ เด‰เดชเดฏเต‹เด— เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเดฟเดจเตเดณเตเดณ เดชเดฟเดจเตเดคเตเดฃ เดŽเด™เตเด™เดจเต† เดšเต‡เตผเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเดพเดฏเดฟเด•เตเด•เดพเด‚: เดžเด™เตเด™เดณเตเดŸเต† เดชเดฟเตปเดตเดฒเดฟเด•เตเด•เตฝ เด…เดญเตเดฏเตผเดคเตเดฅเดจ vsphere-csi เดกเตเดฐเตˆเดตเดฑเดฟเดจเดพเดฏเดฟ.
  • เดเดชเดฟเดธเดฟ เดธเต‹เด•เตเด•เดฑเตเดฑเตเด•เตพ เดตเดดเดฟเดฏเดพเดฃเต เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดจเดŸเด•เตเด•เตเดจเตเดจเดคเต, เด…เดคเดฟเดจเดพเตฝ เด•เตเดฌเต†เดฒเต†เดฑเตเดฑเต เดถเดฐเดฟเดฏเดพเดฏ เดชเต‹เดกเดฟเดฒเต‡เด•เตเด•เต เด…เดญเตเดฏเตผเดคเตเดฅเดจ เด…เดฏเดšเตเดšเต‹ เดŽเดจเตเดจเต เด†เดถเดฏเด•เตเด•เตเดดเดชเตเดชเดคเตเดคเดฟเดฒเดพเด•เดฐเตเดคเต.

เดˆ เดฒเดฟเดธเตเดฑเตเดฑเต เดจเดฟเด™เตเด™เดณเต† เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด“เตผเดฎเตเดฎเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเตเดฃเตเดŸเต‹? CSI เดฏเตเดŸเต† เด—เตเดฃเด™เตเด™เตพ เด‡เดตเดฏเดพเดฃเต เด…เดคเต‡ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเต, Flexvolume เดชเตเดฒเด—เดฟเตป เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด•เดฃเด•เตเด•เดฟเดฒเต†เดŸเตเด•เตเด•เดพเดคเตเดคเดต.

เด•เดฃเตเดŸเต†เดคเตเดคเดฒเตเด•เตพ

เดกเดพเดฑเตเดฑเดพ เดตเต†เดฏเตผเดนเต—เดธเตเด•เดณเตเดฎเดพเดฏเดฟ เดธเด‚เดตเดฆเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดชเตเดฒเด—เดฟเดจเตเด•เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฎเดพเดจเดฆเดฃเตเดกเดฎเต†เดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ CSI เดธเดฎเต‚เดนเด‚ เดตเดณเดฐเต† เดŠเดทเตเดฎเดณเดฎเดพเดฏเดฟ เดธเตเดตเต€เด•เดฐเดฟเดšเตเดšเต. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด…เดตเดฏเตเดŸเต† เด—เตเดฃเด™เตเด™เดณเตเด‚ เดตเตˆเดฆเด—เตเดงเตเดฏเดตเตเด‚ เด•เดพเดฐเดฃเด‚, Ceph เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ AWS EBS เดชเต‹เดฒเตเดณเตเดณ เดธเตเดฑเตเดฑเต‹เดฑเต‡เดœเต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดชเต‹เดฒเตเด‚ CSI เดกเตเดฐเตˆเดตเดฑเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต, เด…เดตเดฏเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดชเตเดฒเด—เดฟเดจเตเด•เตพ Kubernetes-เดจเตเดฑเต† เด†เดฆเตเดฏ เดชเดคเดฟเดชเตเดชเดฟเตฝ เดšเต‡เตผเดคเตเดคเต.

2019-เดจเตเดฑเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ, เด‡เตป-เดŸเตเดฐเต€ เดชเตเดฒเด—เดฟเดจเตเด•เตพ เด•เดพเดฒเดนเดฐเดฃเดชเตเดชเต†เดŸเตเดŸเดคเดพเดฏเดฟ เดชเตเดฐเด–เตเดฏเดพเดชเดฟเดšเตเดšเต. Flexvolume เดชเตเดฒเด—เดฟเตป เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเดคเต เดคเตเดŸเดฐเดพเตป เดžเด™เตเด™เตพ เดชเดฆเตเดงเดคเดฟเดฏเดฟเดŸเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เด…เดคเดฟเดจเดพเดฏเดฟ เดชเตเดคเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เดฟเดฒเตเดฒ.

เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† ceph-csi, vsphere-csi เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš เด…เดจเตเดญเดตเดฎเตเดฃเตเดŸเต, เดˆ เดฒเดฟเดธเตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดคเดฏเตเดฏเดพเดฑเดพเดฃเต! เด‡เดคเตเดตเดฐเต†, CSI เด…เดคเดฟเดจเต เดจเตฝเด•เดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดžเด™เตเด™เตพ เด•เดพเดคเตเดคเดฟเดฐเตเดจเตเดจเต เด•เดพเดฃเดพเด‚.

เดชเตเดคเดฟเดฏเดคเต†เดฒเตเดฒเดพเด‚ เดชเดดเดฏเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดจเดฒเตเดฒ เดชเตเดจเตผเดตเดฟเดšเดฟเดจเตเดคเดจเดฎเดพเดฃเต†เดจเตเดจเต เดฎเดฑเด•เตเด•เดฐเตเดคเต!

เดชเดฟ.เดŽเดธเต

เดžเด™เตเด™เดณเตเดŸเต† เดฌเตเดฒเต‹เด—เดฟเดฒเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเด•:

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•