ืฆืืจืืง ืืืขื Kubernetes ืืื ื ืึธื ืื1.0.0, ืขืก ืืขื ืขื ืืขืืืขื ืืึทื ื ืคึผืืืืื ืก. ืืื ืืขื ืขื ืืืจืฃ ืฆื ืคืึทืจืืื ืื ืกืืกืืขืืขื ืฆื Kubernetes ืคึฟืึทืจ ืกืืึธืจืื ื ืคึผืขืจืกืืกืืขื ื (ืฉืืขื ืืืง) ืงืึทื ืืืื ืขืจ ืืึทืื. ืืืืขืจ ื ืืืขืจ ืืื ืืขืืืขื ืงืืืื, ืืื ืฆืืืืฉื ืื ืขืจืฉืืข ืืขื ืขื ืืขืืืขื ืึทืืึท ืกืืึธืจืืืืฉ ืคึผืจืึทืืืืืืขืจื ืืื GCE PD, Ceph, AWS EBS ืืื ืื ืืขืจืข.
ืื ืคึผืืืืื ืก ืืขื ืขื ืืืืขืจืืขืืขืื ืฆืืืึทืืขื ืืื Kubernetes, ืืืึธืก ืืื ืืืึธืก ืืื ืืึทื ืืืืขืจ ื ืึธืืขื - ืืื-ืืืื. ืึธืืขืจ, ืคึฟืึทืจ ืคืืืข, ืื ืืืืืกืืื ื ืืึทื ื ืคืื ืึทืืึท ืคึผืืืืื ืก ืืื ืืขืืืขื ื ืื ืืขื ืืืืง. ืงืจืึทืคืฆืืขื ืฆืืืขืืขืื ืคึผืฉืื ืคึผืืืืื ืก ืฆื ืื Kubernetes ืืึทืจืฅ ื ืืฆื ืคึผืึทืืฉืึทื, ื ืึธื ืืืึธืก ืืื ืึทืกืขืืืึทืื ืืืืขืจ ืืืืื Kubernetes ืืื ืืื ืกืืึทืืืจื ืขืก ืืืืฃ ืืืืขืจ ืกืขืจืืืขืจืก. ืึธืืขืจ ืืื ืืขืจ ืฆืืื, ืงืืืขืจื ืขืืขืก ืืขืืืขืืึธืคึผืขืจืก ืืืื ืืขืืขื ืึทื ืคืืฉ ืื ืคึผืจืึธืืืขื ืงืขื ืขื ื ืื ืืืื ืกืึทืืืื. ืืขื ืืฉื ืืึทืจืคึฟื ืคืืฉืขืจืืึท ืจืื. ืืื ืืื ืื ืืขืืืื ื ืคืื Kubernetes v1.2.0 ืขืก ืืื ืืขืืืขื ...
Flexvolum ืคึผืืืืื: ืืื ืืืึทื ืคืืฉืขืจืืึท ืจืื
Kubernetes ืืขืืืขืืึธืคึผืขืจืก ืืืฉืืคื ืืขื FlexVolume ืคึผืืืืื, ืืืึธืก ืืื ืืขืืืขื ืึท ืืึทืืืฉืืงืึทื ืคืจืืืืืืขืจืง ืคืื ืืืขืจืืึทืืึทืื ืืื ืืขืืืึธืืก ืคึฟืึทืจ ืืจืืขืื ืืื Flexvolum ืืจืืืืขืจืก ืืืคึผืืึทืืขื ืึทื ืืืจื ืืจืื-ืคึผืึทืจืืื ืืขืืืขืืึธืคึผืขืจืก.
ืืื ืก ืืึทืืื ืืื ื ืขืืขื ืึท ื ืขืขื ืืขืจ ืงืืง ืืื ืืืึธืก ืื FlexVolume ืฉืึธืคืขืจ ืืื. ืืึธืก ืืื ืึท ืืืืขืจ ืขืงืกืขืงืืืึทืืืข ืืขืงืข (ืืืื ืขืจื ืืขืงืข, Python ืฉืจืืคื, Bash ืฉืจืืคื, ืืื"ื ื), ืืืึธืก, ืืืขื ืขืงืกืึทืงืืืืึทื, ื ืขืื ืืึทืคึฟืขืื ืฉืืจื ืึทืจืืืืขื ืื ืืื ืึทืจืืึทื ืฉืจืืึทื ืืื ืงืขืจื ืึท ืึธื ืืึธื ืืื ืคืึทืจ-ืืืงืื ื ืคืขืืืขืจ ืืื JSON ืคึฟืึธืจืืึทื. ืืืื ืงืึทื ืืืขื ืฉืึทื, ืืขืจ ืขืจืฉืืขืจ ืืึทืคึฟืขืื ืฉืืจื ืึทืจืืืืขื ื ืืื ืฉืืขื ืืืง ืึท ืืืคึฟื, ืืื ืื ืจืืขื ืึทืจืืืืขื ืื ืืขื ืขื ืืืึทื ืคึผืึทืจืึทืืขืืขืจืก.
ืงืึทื ืขืงืฉืึทื ืืืึทืืจืึทืืข ืคึฟืึทืจ CIFS ืฉืึทืจืขืก ืืื OpenShift. Flexvolum ืืจืืืืืขืจ - ืจืขืื ืืื ืืขื ืฆืขื ืืขืจ
ืืื ืืืื ืฉืืขืื ืคืื ืืขืืืึธืืก ืงืืงื ืืื ืืึธืก:
flexvolume_driver mount # ะพัะฒะตัะฐะตั ะทะฐ ะฟัะธัะพะตะดะธะฝะตะฝะธะต ัะพะผะฐ ะบ pod'ั
# ะคะพัะผะฐั ะฒะพะทะฒัะฐัะฐะตะผะพะณะพ ัะพะพะฑัะตะฝะธั:
{
"status": "Success"/"Failure"/"Not supported",
"message": "ะะพ ะบะฐะบะพะน ะฟัะธัะธะฝะต ะฑัะป ะฒะพะทะฒัะฐัะตะฝ ะธะผะตะฝะฝะพ ัะฐะบะพะน ััะฐััั",
}
flexvolume_driver unmount # ะพัะฒะตัะฐะตั ะทะฐ ะพััะพะตะดะธะฝะตะฝะธะต ัะพะผะฐ ะพั pod'ะฐ
# ะคะพัะผะฐั ะฒะพะทะฒัะฐัะฐะตะผะพะณะพ ัะพะพะฑัะตะฝะธั:
{
"status": "Success"/"Failure"/"Not supported",
"message": "ะะพ ะบะฐะบะพะน ะฟัะธัะธะฝะต ะฑัะป ะฒะพะทะฒัะฐัะตะฝ ะธะผะตะฝะฝะพ ัะฐะบะพะน ััะฐััั",
}
flexvolume_driver init # ะพัะฒะตัะฐะตั ะทะฐ ะธะฝะธัะธะฐะปะธะทะฐัะธั ะฟะปะฐะณะธะฝะฐ
# ะคะพัะผะฐั ะฒะพะทะฒัะฐัะฐะตะผะพะณะพ ัะพะพะฑัะตะฝะธั:
{
"status": "Success"/"Failure"/"Not supported",
"message": "ะะพ ะบะฐะบะพะน ะฟัะธัะธะฝะต ะฑัะป ะฒะพะทะฒัะฐัะตะฝ ะธะผะตะฝะฝะพ ัะฐะบะพะน ััะฐััั",
// ะะฟัะตะดะตะปัะตั, ะธัะฟะพะปัะทัะตั ะปะธ ะดัะฐะนะฒะตั ะผะตัะพะดั attach/deatach
"capabilities":{"attach": True/False}
}
ื ืืฆื ืืขืืืึธืืก attach
ะธ detach
ืืืขื ืืขืคืื ืืจื ืืขื ืกืฆืขื ืึทืจ ืืื ืืืึธืก ืื ืงืืืขืืขื ืืืขื ืฉืคึผืืื ืืื ืืขืจ ืฆืืงืื ืคึฟื ืืืขื ืจืืคื ืื ืฉืึธืคืขืจ. ืขืก ืืขื ืขื ืืืื ืกืคึผืขืฆืืขื ืืขืืืึธืืก expandvolume
ะธ expandfs
, ืืืึธืก ืืขื ืขื ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ ืืื ืึทืืืฉ ืจืขืกืืืื ื ืื ืืึทื ื.
ืืื ืึท ืืืืฉืคึผืื ืคืื ืื ืขื ืืขืจืื ืืขื ืืืึธืก ืืขืจ ืืืคึฟื ืืืกืืฃ expandvolume
, ืืื ืืื ืืื ืื ืคืืืืงืืื ืฆื ืจืขืกืืืข ืืืึทืืืืื ืืื ืคืึทืงืืืฉ ืฆืืื, ืืืจ ืงืขื ืขื ืืืงืขื ืขื ืืื ืืื
ืืื ืืึธ ืืื ืึท ืืืืฉืคึผืื ืคืื ืื ืืืคึผืืึทืืขื ืืืืฉืึทื ืคืื ืื Flexvolum ืืจืืืืืขืจ ืคึฟืึทืจ ืืจืืขืื ืืื NFS:
usage() {
err "Invalid usage. Usage: "
err "t$0 init"
err "t$0 mount <mount dir> <json params>"
err "t$0 unmount <mount dir>"
exit 1
}
err() {
echo -ne $* 1>&2
}
log() {
echo -ne $* >&1
}
ismounted() {
MOUNT=`findmnt -n ${MNTPATH} 2>/dev/null | cut -d' ' -f1`
if [ "${MOUNT}" == "${MNTPATH}" ]; then
echo "1"
else
echo "0"
fi
}
domount() {
MNTPATH=$1
NFS_SERVER=$(echo $2 | jq -r '.server')
SHARE=$(echo $2 | jq -r '.share')
if [ $(ismounted) -eq 1 ] ; then
log '{"status": "Success"}'
exit 0
fi
mkdir -p ${MNTPATH} &> /dev/null
mount -t nfs ${NFS_SERVER}:/${SHARE} ${MNTPATH} &> /dev/null
if [ $? -ne 0 ]; then
err "{ "status": "Failure", "message": "Failed to mount ${NFS_SERVER}:${SHARE} at ${MNTPATH}"}"
exit 1
fi
log '{"status": "Success"}'
exit 0
}
unmount() {
MNTPATH=$1
if [ $(ismounted) -eq 0 ] ; then
log '{"status": "Success"}'
exit 0
fi
umount ${MNTPATH} &> /dev/null
if [ $? -ne 0 ]; then
err "{ "status": "Failed", "message": "Failed to unmount volume at ${MNTPATH}"}"
exit 1
fi
log '{"status": "Success"}'
exit 0
}
op=$1
if [ "$op" = "init" ]; then
log '{"status": "Success", "capabilities": {"attach": false}}'
exit 0
fi
if [ $# -lt 2 ]; then
usage
fi
shift
case "$op" in
mount)
domount $*
;;
unmount)
unmount $*
;;
*)
log '{"status": "Not supported"}'
exit 0
esac
exit 1
ืึทืืื, ื ืึธื ืคึผืจืืคึผืขืจืื ื ืื ืคืึทืงืืืฉ ืขืงืกืขืงืืืึทืืืข ืืขืงืข, ืืืจ ืืึทืจืคึฟื ืฆื ืฆืืคึฟืขืืืงืขืจ ืื ืฉืึธืคืขืจ ืฆื ืื Kubernetes ืงื ืืื. ืืขืจ ืฉืึธืคืขืจ ืืืื ืืืื ืืืื ืืืืฃ ืืขืืขืจ ืงื ืืื ื ืึธืืข ืืืื ืึท ืคึผืจืืืืืขืจืืื ื ืืืขื. ืืืจื ืคืขืืืงืืึทื ืขืก ืืื ืืืืกืืขืงืืืื:
/usr/libexec/kubernetes/kubelet-plugins/volume/exec/ะธะผั_ะฟะพััะฐะฒัะธะบะฐ_ั
ัะฐะฝะธะปะธัะฐ~ะธะผั_ะดัะฐะนะฒะตัะฐ/
... ืึธืืขืจ ืืืขื ื ืืฆื ืคืึทืจืฉืืืขื ืข Kubernetes ืืืกืืจืืืืืฉืึทื ื (OpenShift, Rancher ...) ืืขืจ ืืจื ืงืขื ืืืื ืึทื ืืขืจืฉ.
ืคืืขืงืกืืืึธืื ืคึผืจืึธืืืขืืก: ืืื ืฆื ืืืึทืจืคื ืึท ืคืืฉืขืจืืึท ืจืื ืจืืืืืง?
ืืคึผืืึธืึทืืื ื ืื ืคืืขืงืกืืืึธืืืื ืฉืึธืคืขืจ ืฆื ืงื ืืื ื ืึธืืื ืืื ืืขืืืขื ืึท ื ืื-ื ืื-ื ืืืืืืึทื ืึทืจืืขื. ืึทืืึธื ืื ืึธืคึผืขืจืึทืฆืืข ืืึทื ืืืึทืื ืืื ืืืจืืืขืงืึธืื, ืขืก ืืื ืืจืื ื ืฆื ืืจืขืคื ืึท ืกืืืืึทืฆืืข ืืืขื ื ืืึท ื ืึธืืื ืืขืจืฉืืึทื ืขื ืืื ืืขื ืงื ืืื: ืจืขืื ืฆื ืืขืจ ืึทืืืฉืึทื ืคืื ืึท ื ืืึท ื ืึธืืข, ืึธืืึทืืึทืืืง ืืึธืจืืืึธื ืืึทื ืกืงืืืืื ื, ืึธืืขืจ - ืืืึธืก ืืื ืขืจืืขืจ - ืคืึทืจืืืึทื ืคืื ืึท ื ืึธืืข ืจืขืื ืฆื ืึท ืืึทืืคืึทื ืืงืฉืึทื. ืืื ืืขื ืคืึทื, ืึทืจืืขื ืืื ืื ืกืืึธืจืืืืฉ ืืืืฃ ืื ื ืึธืืื ืืึธื ืืืื ืืขืืื ืืื ืืืืืขืืืขื, ืืื ืืืจ ื ืึธื ืืึทื ืืืึทืื ืืืืื ืื Flexvolum ืฉืึธืคืขืจ ืฆื ืืื.
ืื ืืืืืื ื ืฆื ืืขื ืคึผืจืึธืืืขื ืืื ืืขืืืขื ืืืื ืขืจ ืคืื ืื ืงืืืขืจื ืขืืขืก ืคึผืจืืืืืืืื - DaemonSet
. ืืืขื ืึท ื ืืึทืข ื ืึธืืข ืืื ืืจืืืก ืืื ืืขื ืงื ืืื, ืขืก ืืืืืึธืืึทืืืฉ ืึผืืื ืึท ืคึผืึธื ืคืื ืืื ืืืขืจ DaemonSet, ืฆื ืืืึธืก ืึท ืืืืข ืืึทื ื ืืื ืึทืืึทืืฉื ืฆืืืืืขื ืืขื ืืจื ืฆื ืืขืคึฟืื ืขื Flexvolum ืืจืืืืขืจืก. ื ืึธื ืึท ืืขืจืึธืื ืฉืึทืคืื ื, ืื ืคึผืึธื ืงืึทืคึผืื ืื ื ืืืืืง ืืขืงืขืก ืคึฟืึทืจ ืื ืฉืึธืคืขืจ ืฆื ืึทืจืืขืื ืฆื ืืืกืง.
ืืึธ ืืื ืึท ืืืืฉืคึผืื ืคืื ืึทืืึท ืึท DaemonSet ืคึฟืึทืจ ืืจืืืคืืืืื ืึท Flexvolum ืคึผืืืืื:
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: flex-set
spec:
template:
metadata:
name: flex-deploy
labels:
app: flex-deploy
spec:
containers:
- image: <deployment_image>
name: flex-deploy
securityContext:
privileged: true
volumeMounts:
- mountPath: /flexmnt
name: flexvolume-mount
volumes:
- name: flexvolume-mount
hostPath:
path: <host_driver_directory>
... ืืื ืึท ืืืืฉืคึผืื ืคืื ืึท Bash ืฉืจืืคื ืคึฟืึทืจ ืืจืืืคืืืืื ืื Flexvolum ืฉืึธืคืขืจ:
#!/bin/sh
set -o errexit
set -o pipefail
VENDOR=k8s.io
DRIVER=nfs
driver_dir=$VENDOR${VENDOR:+"~"}${DRIVER}
if [ ! -d "/flexmnt/$driver_dir" ]; then
mkdir "/flexmnt/$driver_dir"
fi
cp "/$DRIVER" "/flexmnt/$driver_dir/.$DRIVER"
mv -f "/flexmnt/$driver_dir/.$DRIVER" "/flexmnt/$driver_dir/$DRIVER"
while : ; do
sleep 3600
done
ืขืก ืืื ืืืืืืืง ื ืืฉื ืฆื ืคืึทืจืืขืกื ืึทื ืื ืงืึธืคึผืืข ืึธืคึผืขืจืึทืฆืืข ืืื ื ืืฉื ืึทืืึธืืืฉืข. ืขืก ืืื ืึท ืืืื ืืขืืขืื ืืืึทื ืึทื ืื ืงืืืขืืขื ืืืขื ืึธื ืืืืื ื ืืฆื ืืขื ืฉืึธืคืขืจ ืืืืืขืจ ืืืื ืคึผืจืึทืืืืืฉืึทื ื ืคึผืจืึธืฆืขืก ืืื ืืึทื ืฅ, ืืืึธืก ืืืขื ืคืึทืจืฉืึทืคื ืื ืกืืกืืขื ืฆื ืงืจืึทื. ืืขืจ ืจืืืืืง ืฆืืืึทื ื ืืื ืฆื ืขืจืฉืืขืจ ื ืึธืืืึทืื ืื ืฉืึธืคืขืจ ืืขืงืขืก ืืื ืืขืจ ืึท ืึทื ืืขืจืฉ ื ืึธืืขื, ืืื ืืขืืึธืื ื ืืฆื ืึทื ืึทืืึธืืืฉืข ืจืขื ืึทืืข ืึธืคึผืขืจืึทืฆืืข.
ืืืึทืืจืึทืืข ืคืื โโืืจืืขืื ืืื Ceph ืืื ืื ืจืืง ืึธืคึผืขืจืึทืืึธืจ: ืื ืคืืขืงืกืืืึธืืืขื ื ืฉืึธืคืขืจ ืืื ืื ืืืึทืืจืึทืืข ืืื ืืืื ืืื ืื ืจืืง ืึทืืขื ื
ืืขืจ ืืืืึทืืขืจ ืคึผืจืึธืืืขื ืืืขื ื ืืฆื Flexvolum ืืจืืืืขืจืก ืืื ืึทื ืคึฟืึทืจ ืจืืึฟ ืกืืึธืจืืืืฉ ืืืืฃ ืึท ืงื ืืื ื ืึธืืข ืื ื ืืืืืง ืืืืืืืืืจื ืคึฟืึทืจ ืืขื ืืืื ืืืื ืืื ืกืืึทืืืจื (ืืืฉื, ืื ืกืขืฃ-ืคึผืจืึธืกื ืคึผืขืงื ืคึฟืึทืจ Ceph). ืืืืืขืก, ืื Flexvolum ืคึผืืืืื ืืื ื ืืฉื ืืืืืื ื ืฆื ืื ืกืืจืืืขื ื ืึทืืึท ืงืึธืืคึผืืขืงืก ืกืืกืืขืืขื.
ืึทื ืึธืจืืืื ืขื ืืืืืื ื ืฆื ืืขื ืคึผืจืึธืืืขื ืงืขื ืขื ืืืื ืืขืืขื ืืื ืื Flexvolum ืืจืืืืืขืจ ืืืคึผืืึทืืขื ืืืืฉืึทื ืคืื ืื Rook ืึธืคึผืขืจืึทืืึธืจ:
ืืขืจ ืฉืึธืคืขืจ ืืื ืืื ืืืืืื ื ืืื ืึท RPC ืงืืืขื ื. ืื IPC ืืึธืืขื ืคึฟืึทืจ ืงืึธืืื ืืงืึทืฆืืข ืืื ืืืื ืืื ืืขืจ ืืขืืืืงืขืจ ืืืขืืืืืึทืืขืจ ืืื ืืขืจ ืฉืึธืคืขืจ ืืื. ืืืจ ืืขืืขื ืงืขื ืึทื ืฆื ืฆืืืืขื ืขื ืฉืึธืคืขืจ ืืขืงืขืก ืขืก ืืืึธืื ืืืื ืืื ืฆื ื ืืฆื DaemonSet, ืืืึธืก ืงืึทื ืขืงืฅ ืื ืืืขืืืืืึทืืขืจ ืืื ืื ืฉืึธืคืขืจ ืืื ืึท ืืึทื ื. ื ืึธื ืงืึทืคึผืืื ื ืื ื ืืืืืง ืจืืง ืืจืืืืืขืจ ืืขืงืขืก, ืืขื ืคึผืึธื ืืื ื ืืฉื ืฉืืึทืจืื, ืึธืืขืจ ืงืึทื ืขืงืฅ ืฆื ืื IPC ืืึธืืขื ืืืจื ืื ืึทืืึทืืฉื ืืึทื ื ืืื ืึท ืคืื-ืคืืขืืืฉื ืจืคึผืง ืกืขืจืืืขืจ. ืื ืกืขืฃ-ืคึผืจืึธืกื ืคึผืขืงื ืืื ืฉืืื ืืื ืกืืึทืืืจื ืืื ืื ืคึผืึธื ืงืึทื ืืืื ืขืจ. ืื IPC ืืึธืืขื ืื ืฉืืจื ืึทื ืื ืงืืืขืืขื ืืืขื ืืืขืจืืขืื ืืื ืคึผืื ืงื ืื ืคึผืึธื ืืืึธืก ืืื ืืืื ืืืืฃ ืืขืจ ืืขืืืืงืขืจ ื ืึธืืข. ืึทืืฅ ืื ืืืฉืื ืืึทืก ืืื ืคึผืฉืื! ..
ืืืึท ืืขืืื ื, ืืื ืืืขืจ ืืืืืึธืืขืจ ... ืืื-ืืืื ืคึผืืืืื ืก!
ืงืืืขืจื ืขืืขืก ืืขืืืขืืึธืคึผืขืจืก ืืืกืงืึทืืืขืจื ืึทื ืื ื ืืืขืจ ืคืื ืคึผืืืืื ืก ืคึฟืึทืจ ืกืืึธืจืืืืฉ ืืื ืื ืืึทืจืฅ ืืื ืฆืืืึทื ืฆืืง. ืืื ืึท ืขื ืืขืจืื ื ืืื ืืขืืขืจ ืคืื ืืื, ืืืื ืืืขื ืึธืืขืจ ืื ืืขืจื, ืืืื ืืืจื ืื ืคืื ืงืืืขืจื ืขืืขืก ืืขืืืื ื ืฆืืงื.
ืขืก ืืืจื ืก ืืืืก ืึทื ืฆื ื ืืฆื ืื ื ืืึทืข ืืืขืจืกืืข ืคืื โโืื ืกืืึธืจืืืืฉ ืคึผืืืืื, ืืืจ ืืึทืจืคึฟื ืฆื ืืขืจืืืึทื ืืืงื ืื ืืื ืฆืข ืงื ืืื. ืืื ืึทืืืฉืึทื ืฆื ืืขื, ืืืจ ืงืขื ืืืื ืกืึทืคึผืจืืืื ืึทื ืื ื ืืึทืข ืืืขืจืกืืข ืคืื โโโโืงืืืขืจื ืขืืขืก ืืืขื ืคึผืืืฆืืื ื ืืืขืจื ืื ืงืึทืืคึผืึทืืึทืืึทื ืืื ืื ืืื ืืงืก ืงืขืจื ืืืึธืก ืืืจ ื ืืฆื ... ืึทืืื ืืืจ ืืืืฉื ืืืื ืืจืขืจื ืืื, ืืื ืืืื ืฆืืื, ืงืึธืืึธืจืืึทื ืึทื ืืื ืืืื ืคืึทืจืืืึทืืืื ื ืืื ื ืืฆืขืจืก ืื ืฆืืื ืฆื ืืขืจืืืึทื ืืืงื ืื ืืื ืืงืก ืงืขืจื ืืื Kubernetes ืงื ืืื. ืืื ืืขืืืขื ืืึทืื ืืืื ืืื ืื ืื ืืึท ืคืื ืืึทืืื ืื ืืขื.
ืื ืกืืืืึทืฆืืข ืืื ืืขืจ ืืื ืงืึธืืืฉ, ืืึธื ื ืื ืืืจ ืืจืึทืืื? ืคืืจ ืืขืจ ืืื ืฆืขืจ ืงืืืื ืืื ืืขืืืืจื ืงืืืจ ืื ืืขืจ ืฆืืืื ื ืืจืืขื ื ืืฉื. ืืืจื ืึท ืืืืื ืืึทืฉืืืก, ืงืืืขืจื ืขืืขืก ืืขืืืขืืึธืคึผืขืจืก ืืขืืื ืึทื ื ืืึท ืคึผืืืืื ืก ืคึฟืึทืจ ืืจืืขืื ืืื ืกืืึธืจืืืืฉ ืืืขื ื ืื ืืขืจ ืืืื ืื ืืขื ืืืขื ืืื ืื ืงืขืจื. ืืื ืึทืืืฉืึทื, ืืื ืืืจ ืฉืืื ืืืืกื, ืึท ื ืืืขืจ ืคืื ืืืกืึธืจื ืืขื ืขื ืืืืขื ืึทืคืืื ืืื ืื ืืืคึผืืึทืืขื ืืืืฉืึทื ืคืื ืื Flexvolum ืคึผืืืืื ...
ืื ืืขืฆืืข ืฆืืืขืืืืื ืคึผืืืืื ืคึฟืึทืจ ืืืึทืืืืื ืืื Kubernetes, CSI, ืืื ืืขืืืขื ืืขืจืืคึฟื ืฆื ืคืึทืจืืึทืื ืืขื ืึทืจืืืกืืขืื ืืื ืคึผืขืจืกืืกืืขื ื ืืึทืื ืกืืึธืจืืืืฉ ืึทืืึธื ืืื ืคึฟืึทืจ ืึทืืข. ืืืื ืึทืืฃ ืืืขืจืกืืข, ืืขืจ ืืึธืจ ืจืืคืขืจื ืฆื ืืื Out-of-Tree CSI Volume Plugins, ืืื ืึทื ืึทืื ืกื ืืื ืื ืืขืืืื ื
ืงืึทื ืืืื ืขืจ ืกืืึธืจืืืืฉ ืฆืืืื ื ืึธืืขืจ CSI 3000 ืกืคึผืื ื ืื ื ืจืื!
ืขืจืฉืืขืจ ืคืื ืึทืืข, ืืื ืืืึธืื ืืื ืฆื ืืึธื ืึทื CSI ืืื ื ืืฉื ืืืืื ืึท ืืึทื ื ืคึผืืืืื, ืึธืืขืจ ืึท ืคืึทืงืืืฉ
ืืืึธืก ืืื ืื ืกืืจืืงืืืจ ืคืื ืื CSI ืคึผืืืืื ืืื Kubernetes? ืื CSI ืคึผืืืืื ืึทืจืืขื ืืื ืกืคึผืขืฆืืขื ืืจืืืืขืจืก (CSI ืืจืืืืขืจืก) ืืขืฉืจืืื ืืืจื ืืจืื ืคึผืึทืจืืื ืืขืืืขืืึธืคึผืขืจืก. ื CSI ืืจืืืืืขืจ ืืื Kubernetes ืืึธื ืืื ืืืึทื ืฆืื ืืืคืฉืืขืื ืืื ืคืื ืฆืืืื ืงืึทืืคึผืึธืื ืึทื ืฅ (ืคึผืึธืืก):
- ืงืึธื ืืจืึธืืืขืจ - ืืึทื ืืืืฉืื ืคืื ืืจืืืกื ืืืง ืคึผืขืจืกืืกืืขื ื ืกืืึธืจืืืืฉ. ืขืก ืืื ืืืคึผืืึทืืขื ืึทื ืืื ืึท ืืจืคึผืง ืกืขืจืืืขืจ, ืคึฟืึทืจ ืืืึธืก ืื ืคึผืจืืืืืืื ืืื ืืขื ืืฆื
StatefulSet
. - ื ืึธืืข - ืืื ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ ืืึทืื ืืื ื ืคึผืขืจืกืืกืืขื ื ืกืืึธืจืืืืฉ ืฆื ืงื ืืื ื ืึธืืื. ืขืก ืืื ืืืื ืืืคึผืืึทืืขื ืึทื ืืื ืึท ืืจืคึผืง ืกืขืจืืืขืจ, ืึธืืขืจ ืึท ืคึผืจืืืืืืื ืืื ืืขื ืืฆื ืคึฟืึทืจ ืขืก
DaemonSet
.
ืืื ืื CSI ืคึผืืืืื ืึทืจืืขื ืืื Kubernetes
ืืืจ ืงืขื ื ืืขืจื ืขื ืืืขืื ืขืืืขืืข ืื ืืขืจืข ืืขืืึทืืืก ืคืื CSI ืก ืึทืจืืขื, ืืืฉื, ืคึฟืื ืืขื ืึทืจืืืงื "
ืื ืึทืืืืึทื ืืืืืฉืื ืคืื ืึทืืึท ืึท ืืืคึผืืึทืืขื ืืืืฉืึทื
- ืคึฟืึทืจ ืืงืขืจืืืง ืืื ืื ืืื ืจืขืืืฉืืกืืขืจืื ื ืึท ืฉืึธืคืขืจ ืคึฟืึทืจ ืึท ื ืึธืืข, ืื ืงืืืขืจื ืขืืขืก ืืขืืืขืืึธืคึผืขืจืก ืืืคึผืืึทืืขื ืึทื ืึท ืกืืื ืคืื ืงืึทื ืืืื ืขืจื. ืืืจ ื ืื ืืขืจ ืืึทืจืคึฟื ืฆื ืืืฉืขื ืขืจืืื ืึท JSON ืขื ืืคืขืจ ืืื ืงืืืคึผืึทืืืืึทืืื ืืื, ืืื ืืื ืืขืฉืขื ืคึฟืึทืจ ืื Flexvolum ืคึผืืืืื.
- ืึทื ืฉืืึธื "ืกืืืคึผืื ื" ืขืงืกืขืงืืืึทืืืข ืืขืงืขืก ืึทื ืื ื ืึธืืื, ืืืจ ืืืฆื ืืคึผืืึธืึทื ืคึผืึธืืก ืฆื ืื ืงื ืืื. ืืึธืก ืืื ืืืึธืก ืืืจ ืืืืืขืก ืืขืจืืืึทืจืื ืคืื Kubernetes: ืึทืืข ืคึผืจืึทืกืขืกืึทื ืคืึทืื ืื ืงืึทื ืืืื ืขืจื ืืืคึผืืืื ืืื Kubernetes ืคึผืจืืืืืืืื.
- ืืืจ ื ืื ืืขืจ ืืึทืจืคึฟื ืฆื ืึทื ืืืืืงืืขื ืึท RPC ืกืขืจืืืขืจ ืืื RPC ืงืืืขื ื ืฆื ืื ืกืืจืืืขื ื ืงืึธืืคึผืืขืงืก ืืจืืืืขืจืก. ืืขืจ ืงืืืขื ื ืืื ืืืคึผืืึทืืขื ืึทื ืคึฟืึทืจ ืืื ืื ืืืจื Kubernetes ืืขืืืขืืึธืคึผืขืจืก.
- ืคืึธืจื ืึทืจืืืืขื ืื ืฆื ืึทืจืืขืื ืืืืขืจ ืื gRPC ืคึผืจืึธืืึธืงืึธื ืืื ืคืื ืืขืจ ืืึทืงืืืขื, ืคืืขืงืกืึทืืึทื ืืื ืคืึทืจืืึธืืืขื ืืื ืฆื ืคืึธืจื ืืื ืืืจื ืืึทืคึฟืขืื ืฉืืจื ืึทืจืืืืขื ืื. ืฆื ืคึฟืึทืจืฉืืืื ืืื ืฆื ืืืืื ืฉืืืฆื ืคึฟืึทืจ ืืึทื ื ืืึทื ืืฅ ืืขืืจืืงืก ืฆื CSI ืืืจื ืึทืืื ื ืึท ืกืืึทื ืืขืจืืืืื gRPC ืืืคึฟื, ืืืจ ืงืขื ืขื ืืืืขื ืขื:
ืืื ืืืขืจ ืฆืืฆืืขื ืืงืฉื ืคึฟืึทืจ vsphere-csi ืฉืึธืคืขืจ. - ืงืึธืืื ืืงืึทืฆืืข ืึทืงืขืจื ืืืจื IPC ืกืึทืงืึทืฅ, ืึทืืื ื ืืฉื ืฆื ืืืื ืฆืขืืืฉื ืฆื ืื ืงืืืขืืขื ืืขืฉืืงื ืื ืืงืฉื ืฆื ืื ืจืืืืืง ืคึผืึธื.
ืฆื ืืขืจ ืจืฉืืื ืืขืจืืื ื ืืืจ ืคืื ืขืคึผืขืก? ืื ืึทืืืืึทื ืืืืืฉืื ืคืื CSI ืืขื ืขื ืกืึทืืืืื ื ืื ืืขืืืข ืคึผืจืึธืืืขืืก, ืืืึธืก ืืขื ืขื ื ืืฉื ืืขื ืืืขื ืืื ืืฉืืื ืืืขื ืืขืืืขืืึธืคึผืื ื ืื Flexvolum ืคึผืืืืื.
ืคืืื ืืื ืื
CSI ืืื ืึท ื ืึธืจืืึทื ืคึฟืึทืจ ืืืคึผืืึทืืขื ืื ื ืื ืื ืคึผืืืืื ืก ืคึฟืึทืจ ืื ืืขืจืึทืงืืื ื ืืื ืืึทืื ืืืขืจืืึทืืืื ืืื ืืขืืืขื ืืืืขืจ ืืืึทืจืขื ืืืงืืืขื ืืืจื ืื ืงืื. ืืขืจืฆื, ืจืขืื ืฆื ืืืืขืจ ืึทืืืืึทื ืืืืืฉืื ืืื ืืืขืจืกืึทืืืืึทืื, CSI ืืจืืืืขืจืก ืืขื ืขื ืืืฉืืคื ืืคืืื ืคึฟืึทืจ ืกืืึธืจืืืืฉ ืกืืกืืขืืขื ืึทืืึท ืืื Ceph ืึธืืขืจ AWS EBS, ืคึผืืืืื ืก ืคึฟืึทืจ ืืจืืขืื ืืื ืืืึธืก ืืขื ืขื ืฆืืืขืืขืื ืืื ืืขืจ ืขืจืฉืืขืจ ืืืขืจืกืืข ืคืื โโKubernetes.
ืืื ืื ืึธื ืืืื ืคืื 2019, ืืื-ืืืื ืคึผืืืืื ืก
ืืืจ ืืื ืฉืืื ืืึธืื ืืขืจืคืึทืจืื ื ืืื ceph-csi, vsphere-csi ืืื ืืขื ืขื ืืจืืื ืฆื ืืืืื ืฆื ืืขืจ ืจืฉืืื! ืืื ืืืฆื, CSI ืืื ืงืึธืืคึผืื ื ืืื ืื ืืึทืกืงืก ืึทืกืืื ื ืฆื ืขืก ืืื ืึท ืงืืึทืคึผ, ืึธืืขืจ ืืืจ ืืืขืื ืืืึทืจืื ืืื ืืขื.
ืื ืืืืกื ื ืืฉื ืคืึทืจืืขืกื ืึทื ืึทืืฅ ื ืืึท ืืื ืึท ืืื ืจืืืื ืืงืื ื ืคืื ืื ืึทืื!
ืคึผืก
ืืืืขื ืขื ืืืื ืืืืฃ ืืื ืืืขืจ ืืืึธื:
- ยซ
ืืืจ ืคึฟืึทืจืฉืืืื ืื ืงืึทื ืืืื ืขืจ ืกืืึธืจืืืืฉ ืฆืืืื ื (ืืื Kubernetes ืืื ื ืื ืืืืื) "; - ยซ
ืจืืง ืึธืืขืจ ื ืืฉื ืจืืง, ืืึธืก ืืื ืื ืงืฉืื "; - ยซ
ืื ืืจืึธืืืืกืื ื ืื ืึทืืฃ ืืืขืจืกืืข ืคืื โโืืึทื ื ืกื ืึทืคึผืฉืึทืฅ ืืื Kubernetes '.
ืืงืืจ: www.habr.com