Облачное объектное хранилище S3 для Kubernetes
Облачные объектные хранилища, стали неотъемлемой частью современной IT-инфраструктуры, особенно при работе с Kubernetes. В Казахстане и Узбекистане спрос на локальные S3-решения растёт благодаря требованиям к закону о данных, низким задержкам и удобной оплате в тенге/сумах.
1. Обзор Servercore S3 Storage
Servercore предоставляет высокопроизводительное объектное хранилище S3, идеально подходящее для интеграции с Kubernetes. Ключевые преимущества:
- Полная совместимость с AWS S3 API
- Поддержка TLS/SSL для безопасного доступа
- Высокая доступность (99.9% SLA)
- Гибкие тарифные планы с оплатой за фактическое использование
2. Подготовка к интеграции
2.1. Получение учетных данных
- Создайте бакет в панели управления Servercore
- Получите:
- Endpoint URL (например,
https://s3.servercore.cloud
) - Access Key ID
- Secret Access Key
- Endpoint URL (например,
- Настройте политики доступа для бакета
3. Основные методы интеграции с Kubernetes
3.1. Использование CSI драйвера (Rook Ceph)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: servercore-s3
provisioner: rook-ceph.rbd.csi.ceph.com
parameters:
endpoint: "https://s3.servercore.cloud"
accessKeyID: "YOUR_ACCESS_KEY"
secretAccessKey: "YOUR_SECRET_KEY"
bucketName: "your-bucket-name"
region: "default"
3.2. Настройка Velero для резервного копирования
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.5.0 \
--bucket your-backup-bucket \
--secret-file ./servercore-credentials \
--backup-location-config \
region=default,s3ForcePathStyle="true",s3Url=https://s3.servercore.cloud
3.3. Монтирование через s3fs
apiVersion: v1
kind: Pod
metadata:
name: s3fs-mounter
spec:
containers:
- name: app
image: nginx
volumeMounts:
- name: s3-storage
mountPath: /mnt/s3
volumes:
- name: s3-storage
flexVolume:
driver: "fuse/s3fs"
options:
aws_access_key_id: "YOUR_ACCESS_KEY"
aws_secret_access_key: "YOUR_SECRET_KEY"
endpoint: "https://s3.servercore.cloud"
bucket: "your-bucket-name"
4. Оптимизация производительности
4.1. Настройка кэширования
apiVersion: apps/v1
kind: Deployment
metadata:
name: s3-cache-proxy
spec:
template:
spec:
containers:
- name: cache
image: nginx
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
- name: cache-volume
emptyDir: {}
4.2. Параметры тюнинга
# Для s3fs
-ouse_cache=/tmp,cache_size=5000,retries=5,connect_timeout=10
# Для CSI драйверов
-omax_threads=15,parallel_count=10
5. Безопасность
5.1. Хранение учетных данных
kubectl create secret generic servercore-s3-keys \
--from-literal=access-key=YOUR_ACCESS_KEY \
--from-literal=secret-key=YOUR_SECRET_KEY
5.2. Настройка IAM политик
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
]
}
]
}
6. Мониторинг и логирование
6.1. Настройка Prometheus
- job_name: 's3_metrics'
metrics_path: '/metrics'
static_configs:
- targets: ['s3.servercore.cloud:80']
6.2. Алерт-правила
groups:
- name: s3.rules
rules:
- alert: HighS3Latency
expr: rate(s3_request_duration_seconds_sum[5m]) > 1
for: 10m
7. Практические примеры использования
7.1. Хранение логов
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluent-bit
spec:
template:
spec:
containers:
- name: fluent-bit
image: fluent/fluent-bit
env:
- name: S3_ENDPOINT
value: "https://s3.servercore.cloud"
7.2. Хранение образов
docker tag my-image s3.servercore.cloud/my-repo/my-image
docker push s3.servercore.cloud/my-repo/my-image
8. Рекомендации по эксплуатации
- Регулярно ротируйте ключи доступа
- Настройте жизненный цикл объектов для автоматического удаления старых данных
- Используйте несколько AZ для повышения отказоустойчивости
- Мониторьте квоты и лимиты запросов
Интеграция Kubernetes с S3-хранилищем Servercore обеспечивает:
- Масштабируемое хранилище для данных
- Надежное резервное копирование
- Гибкость в управлении ресурсами
0