1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/AliyunContainerService-disk-snapshot

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Плагин моментальных снимков диска Alibaba Cloud

Статус сборки CircleCI Отчет Go

Обзор

Плагин моментального снимка диска предназначен для упрощения управления хранилищами. После того как пользователь создает объект VolumeSnapshot с указанием класса снимка, моментальный снимок и соответствующий объект VolumeSnapshotContent создаются динамически и становятся готовыми для использования рабочими нагрузками.

Эта реализация не зависит от функции CSI, но использует концепцию моментальных снимков CSI, которая будет использоваться в качестве альфа-функции в k8s 1.13.

Плагин моментального снимка диска создает три CRD следующих типов:

volumesnapshotclasses.snapshot.storage.k8s.io: определяет детали создания объектов VolumeSnapshotContent, аналогично: StorageClass;
volumesnapshotcontents.snapshot.storage.k8s.io: определяет один моментальный снимок диска с обратной стороной, аналогично: PV;
volumesnapshots.snapshot.storage.k8s.io:       претензия одного снимка, аналогично: PVC;

Требования* Плагин моментального снимка диска зависит от внешнего плагина моментальных снимков (registry.cn-hangzhou.aliyuncs.com/plugins/external-snapshotter:snapshot).

  • Возможность использования данных источника PVC зависит от последней версии контроллера диска (registry-vpc.cn-shenzhen.aliyuncs.com/acs/alicloud-disk-controller:v1.11.2.8-ffc6b5b-aliyun).
  • Объект секрета с ключом аутентификации для диска
  • Учетные записи сервисов с необходимыми правами RBAC### Статус функции Альфа

Сборка и пакетирование

Плагин моментального снимка диска может быть собран в виде контейнера.

Для сборки контейнера выполните команду:

$ cd build && sh build.sh

Развертывание

Получение кластера Kubernetes

Вы можете создать кластер Kubernetes на Alibaba Cloud Container Service.

Кластер Kubernetes должен быть версии 1.12 или выше.

Настройка компонентов api-server, controller manager и scheduler

Редактирование файлов:

/etc/kubernetes/manifests/kube-apiserver.yaml
/etc/kubernetes/manifests/kube-controller-manager.yaml
/etc/kubernetes/manifests/kube-scheduler.yaml
Добавьте:
 - --feature-gates=CSINodeInfo=true,CSIDriverRegistry=true,VolumeSnapshotDataSource=true

Примечания:

cp /etc/kubernetes/manifests/kube-apiserver.yaml /tmp/kube-apiserver.yaml

Измените /tmp/kube-apiserver.yaml.

cp /tmp/kube-apiserver.yaml /etc/kubernetes/manifests/kube-apiserver.yaml

Настройка Kubelet

# vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Добавьте:
Environment="KUBELET_FEATURE_GATES_ARGS=--feature-gates=CSINodeInfo=true,CSIDriverRegistry=true,VolumeSnapshotDataSource=true"

Перезапустите kubelet:

systemctl daemon-reload && systemctl restart kubelet

Развертывание контроллера снимков

Если кластер не находится в режиме STS, вам потребуется настроить информацию AK для плагина; Установите ACCESS_KEY_ID и ACCESS_KEY_SECRET в окружение;

# kubectl create -f ./deploy/snapshot-controller.yaml

# kubectl get pod -n kube-system | grep alicloud-disk-snapshot
alicloud-disk-snapshot-89c88c7f7-6z95j                       2/2     Running   0          42s

kubectl create -f ./deploy/snapshotclass.yaml

kubectl get volumesnapshotclasses.snapshot.storage.k8s.io

NAME AGE default-snapclass 15s


Создаются три CRD:

kubectl get crd | grep snap

volumesnapshotclasses.snapshot.storage.k8s.io 2019-01-16T12:00:46Z volumesnapshotcontents.snapshot.storage.k8s.io 2019-01-16T12:00:46Z volumesnapshots.snapshot.storage.k8s.io 2019-01-16T12:00:46Z


## Использование

### Создание Pod с диском
Создайте деплоймент и PVC, используя дисковый объём.

kubectl create -f ./deploy/deploy-origin.yaml

kubectl get pod

NAME READY STATUS RESTARTS AGE dynamic-create-7fbf55b58f-qnrgm 1/1 Running 0 21s

kubectl get pvc

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-disk Bound d-wz9hhnhxu66zs6r6yyyq 20Gi RWO alicloud-disk-ssd 25s

kubectl exec -ti dynamic-create-7fbf55b58f-qnrgm touch /data/snapshot123


### Шаг 4: Создание снимка с помощью PVC

kubectl create -f snapshot.yaml

volumesnapshot.snapshot.storage.k8s.io/snapshot-test создано

kubectl get volumesnapshots.snapshot.storage.k8s.io

NAME AGE snapshot-test 2м

kubectl get volumesnapshotcontents.snapshot.storage.k8s.io

NAME AGE snapcontent-77a75b63-1987-11e9-a520-00163e024341 2м ``> snapshot.yaml определяет имя данных источника pvc и имя snapshotClass.

Создание PVC с Snapshot

# kubectl create -f deploy-datasource.yaml
# kubectl get pod
NAME                               READY   STATUS    RESTARTS   AGE
dynamic-create-7fbf55b58f-qnrgm    1/1     Running   0          10м
dynamic-snapshot-fdc86b6d8-bl6h5   1/1     Running   0          13с

# kubectl get pvc
NAME            STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS        AGE
disk-snapshot   Bound    d-wz98cj3vphycosrm6joa   20Gi       RWO            alicloud-disk-ssd   4с
pvc-disk        Bound    d-wz9hhnhxu66zs6r6yyyq   20Gi       RWO            alicloud-disk-ssd   10м
```# kubectl exec -ti dynamic-snapshot-fdc86b6d8-bl6h5 ls /data
lost+found  snapshot123

Новый PVC создает новый диск, использующийся в снапшоте. И новый диск содержит старый диск с файлами (snapshot123).

Устранение неполадок

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Плагин моментальных снимков диска Alibaba Cloud. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/AliyunContainerService-disk-snapshot.git
git@api.gitlife.ru:oschina-mirror/AliyunContainerService-disk-snapshot.git
oschina-mirror
AliyunContainerService-disk-snapshot
AliyunContainerService-disk-snapshot
master