ಕುಬರ್ನೆಟ್ಸ್ ಸಂಗ್ರಹಣೆಗಾಗಿ ವಾಲ್ಯೂಮ್ ಪ್ಲಗಿನ್‌ಗಳು: ಫ್ಲೆಕ್ಸ್‌ವಾಲ್ಯೂಮ್‌ನಿಂದ ಸಿಎಸ್‌ಐಗೆ

ಕುಬರ್ನೆಟ್ಸ್ ಸಂಗ್ರಹಣೆಗಾಗಿ ವಾಲ್ಯೂಮ್ ಪ್ಲಗಿನ್‌ಗಳು: ಫ್ಲೆಕ್ಸ್‌ವಾಲ್ಯೂಮ್‌ನಿಂದ ಸಿಎಸ್‌ಐಗೆ

ಹಿಂದೆ ಕುಬರ್ನೆಟ್ಸ್ v1.0.0 ಆಗಿದ್ದಾಗ, ವಾಲ್ಯೂಮ್ ಪ್ಲಗಿನ್‌ಗಳು ಇದ್ದವು. ನಿರಂತರ (ಶಾಶ್ವತ) ಕಂಟೇನರ್ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ಕುಬರ್ನೆಟ್ಸ್‌ಗೆ ಸಿಸ್ಟಮ್‌ಗಳನ್ನು ಸಂಪರ್ಕಿಸಲು ಅವು ಬೇಕಾಗಿದ್ದವು. ಅವರ ಸಂಖ್ಯೆಯು ಚಿಕ್ಕದಾಗಿದೆ ಮತ್ತು ಮೊದಲನೆಯವುಗಳಲ್ಲಿ GCE PD, Ceph, AWS EBS ಮತ್ತು ಇತರವುಗಳಂತಹ ಶೇಖರಣಾ ಪೂರೈಕೆದಾರರು ಇದ್ದರು.

ಪ್ಲಗಿನ್‌ಗಳನ್ನು ಕುಬರ್ನೆಟ್ಸ್ ಜೊತೆಗೆ ವಿತರಿಸಲಾಯಿತು, ಅದಕ್ಕಾಗಿಯೇ ಅವರು ತಮ್ಮ ಹೆಸರನ್ನು ಪಡೆದರು - ಇನ್-ಟ್ರೀ. ಆದಾಗ್ಯೂ, ಅನೇಕರಿಗೆ, ಅಂತಹ ಪ್ಲಗಿನ್‌ಗಳ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸೆಟ್ ಸಾಕಾಗುವುದಿಲ್ಲ. ಕುಶಲಕರ್ಮಿಗಳು ಪ್ಯಾಚ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಕುಬರ್ನೆಟ್ಸ್ ಕೋರ್‌ಗೆ ಸರಳವಾದ ಪ್ಲಗಿನ್‌ಗಳನ್ನು ಸೇರಿಸಿದರು, ನಂತರ ಅವರು ತಮ್ಮದೇ ಆದ ಕುಬರ್ನೆಟ್‌ಗಳನ್ನು ಜೋಡಿಸಿದರು ಮತ್ತು ಅದನ್ನು ತಮ್ಮ ಸರ್ವರ್‌ಗಳಲ್ಲಿ ಸ್ಥಾಪಿಸಿದರು. ಆದರೆ ಕಾಲಾನಂತರದಲ್ಲಿ, ಕುಬರ್ನೆಟ್ಸ್ ಅಭಿವರ್ಧಕರು ಅದನ್ನು ಅರಿತುಕೊಂಡರು ಮೀನು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲಾಗುವುದಿಲ್ಲ. ಜನರಿಗೆ ಬೇಕು ಮೀನುಗಾರಿಕೆ ರಾಡ್. ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್ v1.2.0 ಬಿಡುಗಡೆಯಲ್ಲಿ ಅದು ಕಾಣಿಸಿಕೊಂಡಿತು...

ಫ್ಲೆಕ್ಸ್ವಾಲ್ಯೂಮ್ ಪ್ಲಗಿನ್: ಕನಿಷ್ಠ ಮೀನುಗಾರಿಕೆ ರಾಡ್

ಕುಬರ್ನೆಟ್ಸ್ ಡೆವಲಪರ್‌ಗಳು ಫ್ಲೆಕ್ಸ್‌ವಾಲ್ಯೂಮ್ ಪ್ಲಗಿನ್ ಅನ್ನು ರಚಿಸಿದ್ದಾರೆ, ಇದು ವೇರಿಯಬಲ್‌ಗಳ ತಾರ್ಕಿಕ ಚೌಕಟ್ಟಾಗಿದೆ ಮತ್ತು ಮೂರನೇ-ಪಕ್ಷದ ಡೆವಲಪರ್‌ಗಳು ಅಳವಡಿಸಿದ ಫ್ಲೆಕ್ಸ್‌ವಾಲ್ಯೂಮ್ ಡ್ರೈವರ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ವಿಧಾನವಾಗಿದೆ.

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>

ಮತ್ತು ಫ್ಲೆಕ್ಸ್‌ವಾಲ್ಯೂಮ್ ಡ್ರೈವರ್ ಅನ್ನು ಹಾಕಲು ಬ್ಯಾಷ್ ಸ್ಕ್ರಿಪ್ಟ್‌ನ ಉದಾಹರಣೆ:

#!/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 ಗಾಗಿ ceph-ಸಾಮಾನ್ಯ ಪ್ಯಾಕೇಜ್). ಆರಂಭದಲ್ಲಿ, ಅಂತಹ ಸಂಕೀರ್ಣ ವ್ಯವಸ್ಥೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು Flexvolume ಪ್ಲಗಿನ್ ಅನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿಲ್ಲ.

ಈ ಸಮಸ್ಯೆಗೆ ಮೂಲ ಪರಿಹಾರವನ್ನು ರೂಕ್ ಆಪರೇಟರ್‌ನ ಫ್ಲೆಕ್ಸ್‌ವಾಲ್ಯೂಮ್ ಡ್ರೈವರ್ ಅಳವಡಿಕೆಯಲ್ಲಿ ಕಾಣಬಹುದು:

ಚಾಲಕವನ್ನು ಸ್ವತಃ RPC ಕ್ಲೈಂಟ್ ಆಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಸಂವಹನಕ್ಕಾಗಿ IPC ಸಾಕೆಟ್ ಡ್ರೈವರ್ನಂತೆಯೇ ಅದೇ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿದೆ. ಡ್ರೈವರ್ ಫೈಲ್‌ಗಳನ್ನು ನಕಲಿಸಲು ಡೇಮನ್‌ಸೆಟ್ ಅನ್ನು ಬಳಸುವುದು ಒಳ್ಳೆಯದು ಎಂದು ನಾವು ನೆನಪಿಸಿಕೊಳ್ಳುತ್ತೇವೆ, ಇದು ಡೈರೆಕ್ಟರಿಯನ್ನು ಡ್ರೈವರ್‌ನೊಂದಿಗೆ ವಾಲ್ಯೂಮ್ ಆಗಿ ಸಂಪರ್ಕಿಸುತ್ತದೆ. ಅಗತ್ಯ ರೂಕ್ ಡ್ರೈವರ್ ಫೈಲ್‌ಗಳನ್ನು ನಕಲಿಸಿದ ನಂತರ, ಈ ಪಾಡ್ ಸಾಯುವುದಿಲ್ಲ, ಆದರೆ ಲಗತ್ತಿಸಲಾದ ಪರಿಮಾಣದ ಮೂಲಕ ಪೂರ್ಣ ಪ್ರಮಾಣದ ಆರ್‌ಪಿಸಿ ಸರ್ವರ್‌ನಂತೆ ಐಪಿಸಿ ಸಾಕೆಟ್‌ಗೆ ಸಂಪರ್ಕಿಸುತ್ತದೆ. ceph-ಸಾಮಾನ್ಯ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಈಗಾಗಲೇ ಪಾಡ್ ಕಂಟೇನರ್‌ನಲ್ಲಿ ಸ್ಥಾಪಿಸಲಾಗಿದೆ. IPC ಸಾಕೆಟ್ ಕುಬೆಲೆಟ್ ಅದೇ ನೋಡ್‌ನಲ್ಲಿರುವ ಪಾಡ್‌ನೊಂದಿಗೆ ನಿಖರವಾಗಿ ಸಂವಹನ ನಡೆಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಚತುರ ಎಲ್ಲವೂ ಸರಳವಾಗಿದೆ! ..

ವಿದಾಯ, ನಮ್ಮ ಪ್ರೀತಿಯ... ಇನ್-ಟ್ರೀ ಪ್ಲಗಿನ್‌ಗಳು!

ಕುಬರ್ನೆಟ್ಸ್ ಡೆವಲಪರ್‌ಗಳು ಕೋರ್‌ನಲ್ಲಿ ಸಂಗ್ರಹಣೆಗಾಗಿ ಪ್ಲಗಿನ್‌ಗಳ ಸಂಖ್ಯೆ ಇಪ್ಪತ್ತು ಎಂದು ಕಂಡುಹಿಡಿದರು. ಮತ್ತು ಅವುಗಳಲ್ಲಿ ಪ್ರತಿಯೊಂದರಲ್ಲೂ ಬದಲಾವಣೆ, ಒಂದು ರೀತಿಯಲ್ಲಿ ಅಥವಾ ಇನ್ನೊಂದು, ಪೂರ್ಣ ಕುಬರ್ನೆಟ್ಸ್ ಬಿಡುಗಡೆ ಚಕ್ರದ ಮೂಲಕ ಹೋಗುತ್ತದೆ.

ಶೇಖರಣಾ ಪ್ಲಗಿನ್‌ನ ಹೊಸ ಆವೃತ್ತಿಯನ್ನು ಬಳಸಲು ಇದು ತಿರುಗುತ್ತದೆ, ನೀವು ಸಂಪೂರ್ಣ ಕ್ಲಸ್ಟರ್ ಅನ್ನು ನವೀಕರಿಸಬೇಕಾಗಿದೆ. ಇದರ ಜೊತೆಗೆ, ಕುಬರ್ನೆಟ್ಸ್‌ನ ಹೊಸ ಆವೃತ್ತಿಯು ನೀವು ಬಳಸುತ್ತಿರುವ ಲಿನಕ್ಸ್ ಕರ್ನಲ್‌ಗೆ ಇದ್ದಕ್ಕಿದ್ದಂತೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ ಎಂದು ನಿಮಗೆ ಆಶ್ಚರ್ಯವಾಗಬಹುದು... ಆದ್ದರಿಂದ ನೀವು ನಿಮ್ಮ ಕಣ್ಣೀರನ್ನು ಒರೆಸಿಕೊಳ್ಳಿ ಮತ್ತು ನಿಮ್ಮ ಹಲ್ಲುಗಳನ್ನು ಕಡಿಯುತ್ತಾ, ನಿಮ್ಮ ನಿರ್ವಹಣೆ ಮತ್ತು ಬಳಕೆದಾರರೊಂದಿಗೆ ಸಮಯಕ್ಕೆ ಸಮನ್ವಯಗೊಳಿಸಿ ಲಿನಕ್ಸ್ ಕರ್ನಲ್ ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್ ಕ್ಲಸ್ಟರ್ ಅನ್ನು ನವೀಕರಿಸಿ. ಸೇವೆಗಳ ನಿಬಂಧನೆಯಲ್ಲಿ ಸಂಭವನೀಯ ಅಲಭ್ಯತೆಯೊಂದಿಗೆ.

ಪರಿಸ್ಥಿತಿ ಹಾಸ್ಯಮಯಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿರುತ್ತದೆ, ನೀವು ಯೋಚಿಸುವುದಿಲ್ಲವೇ? ಈ ವಿಧಾನವು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ ಎಂಬುದು ಇಡೀ ಸಮುದಾಯಕ್ಕೆ ಸ್ಪಷ್ಟವಾಯಿತು. ಉದ್ದೇಶಪೂರ್ವಕ ನಿರ್ಧಾರದಿಂದ, ಕುಬರ್ನೆಟ್ಸ್ ಡೆವಲಪರ್‌ಗಳು ಸಂಗ್ರಹಣೆಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಹೊಸ ಪ್ಲಗಿನ್‌ಗಳನ್ನು ಇನ್ನು ಮುಂದೆ ಕರ್ನಲ್‌ಗೆ ಸ್ವೀಕರಿಸಲಾಗುವುದಿಲ್ಲ ಎಂದು ಘೋಷಿಸುತ್ತಾರೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ನಾವು ಈಗಾಗಲೇ ತಿಳಿದಿರುವಂತೆ, ಫ್ಲೆಕ್ಸ್ವಾಲ್ಯೂಮ್ ಪ್ಲಗಿನ್ ಅನುಷ್ಠಾನದಲ್ಲಿ ಹಲವಾರು ನ್ಯೂನತೆಗಳನ್ನು ಗುರುತಿಸಲಾಗಿದೆ ...

ಕುಬರ್ನೆಟ್ಸ್, CSI ನಲ್ಲಿನ ಸಂಪುಟಗಳಿಗೆ ಇತ್ತೀಚಿನ ಸೇರ್ಪಡೆಗೊಂಡ ಪ್ಲಗಿನ್ ಅನ್ನು ಒಮ್ಮೆ ಮತ್ತು ಎಲ್ಲರಿಗೂ ನಿರಂತರ ಡೇಟಾ ಸಂಗ್ರಹಣೆಯೊಂದಿಗೆ ಸಮಸ್ಯೆಯನ್ನು ಮುಚ್ಚಲು ಕರೆಯಲಾಯಿತು. ಅದರ ಆಲ್ಫಾ ಆವೃತ್ತಿಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಔಟ್-ಆಫ್-ಟ್ರೀ CSI ವಾಲ್ಯೂಮ್ ಪ್ಲಗಿನ್‌ಗಳು ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಬಿಡುಗಡೆಯಲ್ಲಿ ಘೋಷಿಸಲಾಯಿತು ಕುಬರ್ನೆಟೀಸ್ 1.9.

ಕಂಟೈನರ್ ಸ್ಟೋರೇಜ್ ಇಂಟರ್ಫೇಸ್, ಅಥವಾ CSI 3000 ನೂಲುವ ರಾಡ್!

ಮೊದಲನೆಯದಾಗಿ, CSI ಕೇವಲ ವಾಲ್ಯೂಮ್ ಪ್ಲಗಿನ್ ಅಲ್ಲ, ಆದರೆ ನೈಜವಾಗಿದೆ ಎಂದು ನಾನು ಗಮನಿಸಲು ಬಯಸುತ್ತೇನೆ ಪ್ರಮಾಣಿತ ಡೇಟಾ ಗೋದಾಮುಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಕಸ್ಟಮ್ ಘಟಕಗಳನ್ನು ರಚಿಸುವಲ್ಲಿ. ಕುಬರ್ನೆಟ್ಸ್ ಮತ್ತು ಮೆಸೊಸ್‌ನಂತಹ ಕಂಟೈನರ್ ಆರ್ಕೆಸ್ಟ್ರೇಶನ್ ಸಿಸ್ಟಮ್‌ಗಳು ಈ ಮಾನದಂಡದ ಪ್ರಕಾರ ಅಳವಡಿಸಲಾದ ಘಟಕಗಳೊಂದಿಗೆ ಹೇಗೆ ಕೆಲಸ ಮಾಡಬೇಕೆಂದು "ಕಲಿಯಬೇಕು". ಮತ್ತು ಈಗ ನಾನು ಈಗಾಗಲೇ ಕುಬರ್ನೆಟ್ಸ್ ಕಲಿತಿದ್ದೇನೆ.

ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ CSI ಪ್ಲಗಿನ್‌ನ ರಚನೆ ಏನು? CSI ಪ್ಲಗಿನ್ ವಿಶೇಷ ಡ್ರೈವರ್‌ಗಳೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ (CSI ಚಾಲಕರು) ಥರ್ಡ್ ಪಾರ್ಟಿ ಡೆವಲಪರ್‌ಗಳು ಬರೆದಿದ್ದಾರೆ. ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿನ CSI ಡ್ರೈವರ್ ಕನಿಷ್ಠ ಎರಡು ಘಟಕಗಳನ್ನು (ಪಾಡ್‌ಗಳನ್ನು) ಒಳಗೊಂಡಿರಬೇಕು:

  • ನಿಯಂತ್ರಕ - ಬಾಹ್ಯ ನಿರಂತರ ಸಂಗ್ರಹಣೆಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಇದನ್ನು gRPC ಸರ್ವರ್ ಆಗಿ ಅಳವಡಿಸಲಾಗಿದೆ, ಇದಕ್ಕಾಗಿ ಪ್ರಾಚೀನವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ StatefulSet.
  • ನೋಡ್ — ಕ್ಲಸ್ಟರ್ ನೋಡ್‌ಗಳಿಗೆ ನಿರಂತರ ಸಂಗ್ರಹಣೆಯನ್ನು ಆರೋಹಿಸಲು ಕಾರಣವಾಗಿದೆ. ಇದನ್ನು gRPC ಸರ್ವರ್ ಆಗಿ ಅಳವಡಿಸಲಾಗಿದೆ, ಆದರೆ ಇದು ಪ್ರಾಚೀನವನ್ನು ಬಳಸುತ್ತದೆ DaemonSet.

ಕುಬರ್ನೆಟ್ಸ್ ಸಂಗ್ರಹಣೆಗಾಗಿ ವಾಲ್ಯೂಮ್ ಪ್ಲಗಿನ್‌ಗಳು: ಫ್ಲೆಕ್ಸ್‌ವಾಲ್ಯೂಮ್‌ನಿಂದ ಸಿಎಸ್‌ಐಗೆ
ಕುಬರ್ನೆಟ್ಸ್‌ನಲ್ಲಿ CSI ಪ್ಲಗಿನ್ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ

ಸಿಎಸ್ಐನ ಕೆಲಸದ ಇತರ ಕೆಲವು ವಿವರಗಳ ಬಗ್ಗೆ ನೀವು ಕಲಿಯಬಹುದು, ಉದಾಹರಣೆಗೆ, ಲೇಖನದಿಂದ "C.S.I ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು" ಅದರ ಅನುವಾದ ನಾವು ಒಂದು ವರ್ಷದ ಹಿಂದೆ ಪ್ರಕಟಿಸಿದ್ದೇವೆ.

ಅಂತಹ ಅನುಷ್ಠಾನದ ಅನುಕೂಲಗಳು

  • ನೋಡ್‌ಗಾಗಿ ಚಾಲಕವನ್ನು ನೋಂದಾಯಿಸುವಂತಹ ಮೂಲಭೂತ ವಿಷಯಗಳಿಗಾಗಿ, ಕುಬರ್ನೆಟ್ಸ್ ಡೆವಲಪರ್‌ಗಳು ಕಂಟೈನರ್‌ಗಳ ಗುಂಪನ್ನು ಅಳವಡಿಸಿದ್ದಾರೆ. Flexvolume ಪ್ಲಗಿನ್‌ಗಾಗಿ ಮಾಡಿದಂತೆ ನೀವು ಇನ್ನು ಮುಂದೆ ನೀವು ಸಾಮರ್ಥ್ಯಗಳೊಂದಿಗೆ JSON ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ರಚಿಸುವ ಅಗತ್ಯವಿಲ್ಲ.
  • ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಫೈಲ್‌ಗಳನ್ನು ನೋಡ್‌ಗಳಲ್ಲಿ "ಸ್ಲಿಪ್" ಮಾಡುವ ಬದಲು, ನಾವು ಈಗ ಪಾಡ್‌ಗಳನ್ನು ಕ್ಲಸ್ಟರ್‌ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡುತ್ತೇವೆ. ಕುಬರ್ನೆಟ್ಸ್‌ನಿಂದ ನಾವು ಆರಂಭದಲ್ಲಿ ನಿರೀಕ್ಷಿಸುವುದು ಇದನ್ನೇ: ಎಲ್ಲಾ ಪ್ರಕ್ರಿಯೆಗಳು ಕುಬರ್ನೆಟ್ಸ್ ಮೂಲಗಳನ್ನು ಬಳಸಿಕೊಂಡು ನಿಯೋಜಿಸಲಾದ ಕಂಟೇನರ್‌ಗಳಲ್ಲಿ ಸಂಭವಿಸುತ್ತವೆ.
  • ಸಂಕೀರ್ಣ ಚಾಲಕಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನೀವು ಇನ್ನು ಮುಂದೆ RPC ಸರ್ವರ್ ಮತ್ತು RPC ಕ್ಲೈಂಟ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. ಕ್ಲೈಂಟ್ ಅನ್ನು ಕುಬರ್ನೆಟ್ಸ್ ಡೆವಲಪರ್‌ಗಳು ನಮಗೆ ಅಳವಡಿಸಿದ್ದಾರೆ.
  • ಜಿಆರ್‌ಪಿಸಿ ಪ್ರೋಟೋಕಾಲ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡಲು ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ರವಾನಿಸುವುದು ಆಜ್ಞಾ ಸಾಲಿನ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳ ಮೂಲಕ ಹಾದುಹೋಗುವುದಕ್ಕಿಂತ ಹೆಚ್ಚು ಅನುಕೂಲಕರ, ಹೊಂದಿಕೊಳ್ಳುವ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹವಾಗಿದೆ. ಪ್ರಮಾಣೀಕೃತ gRPC ವಿಧಾನವನ್ನು ಸೇರಿಸುವ ಮೂಲಕ CSI ಗೆ ಪರಿಮಾಣ ಬಳಕೆಯ ಮೆಟ್ರಿಕ್‌ಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಹೇಗೆ ಸೇರಿಸುವುದು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, ನೀವು ಓದಬಹುದು: ನಮ್ಮ ಪುಲ್ ವಿನಂತಿ vsphere-csi ಚಾಲಕಕ್ಕಾಗಿ.
  • IPC ಸಾಕೆಟ್‌ಗಳ ಮೂಲಕ ಸಂವಹನವು ಸಂಭವಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಕುಬೆಲೆಟ್ ವಿನಂತಿಯನ್ನು ಸರಿಯಾದ ಪಾಡ್‌ಗೆ ಕಳುಹಿಸಿದೆಯೇ ಎಂದು ಗೊಂದಲಕ್ಕೀಡಾಗಬಾರದು.

ಈ ಪಟ್ಟಿಯು ನಿಮಗೆ ಏನನ್ನಾದರೂ ನೆನಪಿಸುತ್ತದೆಯೇ? CSI ಯ ಅನುಕೂಲಗಳು ಅದೇ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸುವುದು, Flexvolume ಪ್ಲಗಿನ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವಾಗ ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿಲ್ಲ.

ಸಂಶೋಧನೆಗಳು

ಡೇಟಾ ವೇರ್‌ಹೌಸ್‌ಗಳೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು ಕಸ್ಟಮ್ ಪ್ಲಗಿನ್‌ಗಳನ್ನು ಅಳವಡಿಸಲು CSI ಒಂದು ಮಾನದಂಡವಾಗಿ ಸಮುದಾಯದಿಂದ ಬಹಳ ಪ್ರೀತಿಯಿಂದ ಸ್ವೀಕರಿಸಲ್ಪಟ್ಟಿದೆ. ಇದಲ್ಲದೆ, ಅವುಗಳ ಅನುಕೂಲಗಳು ಮತ್ತು ಬಹುಮುಖತೆಯಿಂದಾಗಿ, CSI ಡ್ರೈವರ್‌ಗಳನ್ನು Ceph ಅಥವಾ AWS EBS ನಂತಹ ಶೇಖರಣಾ ವ್ಯವಸ್ಥೆಗಳಿಗೆ ಸಹ ರಚಿಸಲಾಗಿದೆ, ಅದರೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಪ್ಲಗಿನ್‌ಗಳನ್ನು ಕುಬರ್ನೆಟ್ಸ್‌ನ ಮೊದಲ ಆವೃತ್ತಿಯಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ.

2019 ರ ಆರಂಭದಲ್ಲಿ, ಇನ್-ಟ್ರೀ ಪ್ಲಗಿನ್‌ಗಳು ಬಳಕೆಯಲ್ಲಿಲ್ಲವೆಂದು ಘೋಷಿಸಲಾಗಿದೆ. ನಾವು Flexvolume ಪ್ಲಗಿನ್ ಅನ್ನು ಬೆಂಬಲಿಸುವುದನ್ನು ಮುಂದುವರಿಸಲು ಯೋಜಿಸುತ್ತೇವೆ, ಆದರೆ ಅದಕ್ಕಾಗಿ ಹೊಸ ಕಾರ್ಯವನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವುದಿಲ್ಲ.

ನಾವು ಈಗಾಗಲೇ ceph-csi, vsphere-csi ಅನ್ನು ಬಳಸುವ ಅನುಭವವನ್ನು ಹೊಂದಿದ್ದೇವೆ ಮತ್ತು ಈ ಪಟ್ಟಿಗೆ ಸೇರಿಸಲು ಸಿದ್ಧರಿದ್ದೇವೆ! ಇಲ್ಲಿಯವರೆಗೆ, CSI ಅದಕ್ಕೆ ನಿಯೋಜಿಸಲಾದ ಕಾರ್ಯಗಳನ್ನು ಅಬ್ಬರದಿಂದ ನಿಭಾಯಿಸುತ್ತಿದೆ, ಆದರೆ ನಾವು ಕಾಯುತ್ತೇವೆ ಮತ್ತು ನೋಡುತ್ತೇವೆ.

ಹೊಸದೆಲ್ಲವೂ ಹಳೆಯದನ್ನು ಮರುಚಿಂತನೆ ಮಾಡುವುದು ಎಂಬುದನ್ನು ಮರೆಯಬೇಡಿ!

ಪಿಎಸ್

ನಮ್ಮ ಬ್ಲಾಗ್‌ನಲ್ಲಿಯೂ ಓದಿ:

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ