mirror of
https://github.com/minio/minio.git
synced 2024-12-24 06:05:55 -05:00
Add example on how to deploy minio without a backing store. (#5810)
Many on-premise clusters do not have a PV abstraction, this example shows a way to deploy minio effectively in such environments.
This commit is contained in:
parent
0dc3d7ac18
commit
1bd7eb979c
@ -17,6 +17,7 @@
|
|||||||
- [Create Minio Statefulset](#create-minio-statefulset)
|
- [Create Minio Statefulset](#create-minio-statefulset)
|
||||||
- [Create LoadBalancer Service](#create-minio-service)
|
- [Create LoadBalancer Service](#create-minio-service)
|
||||||
- [Update existing Minio StatefulSet](#update-existing-minio-statefulset)
|
- [Update existing Minio StatefulSet](#update-existing-minio-statefulset)
|
||||||
|
- [Deploying on cluster nodes with local host path](#deploying-on-cluster-nodes-with-local-host-path)
|
||||||
- [Resource cleanup](#distributed-resource-cleanup)
|
- [Resource cleanup](#distributed-resource-cleanup)
|
||||||
|
|
||||||
- [Minio GCS Gateway Deployment](#minio-gcs-gateway-deployment)
|
- [Minio GCS Gateway Deployment](#minio-gcs-gateway-deployment)
|
||||||
@ -408,6 +409,35 @@ kubectl delete statefulset minio \
|
|||||||
&& kubectl delete svc minio-service
|
&& kubectl delete svc minio-service
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Deploying on cluster nodes with local host path
|
||||||
|
|
||||||
|
If your cluster does not have a storage solution or PV abstraction, you must explicitly define what nodes you wish to run Minio on, and define a homogeneous path to a local fast block device available on every host.
|
||||||
|
|
||||||
|
This must be changed in the example daemonset: [minio-distributed-daemonset.yaml](minio-distributed-daemonset.yaml)
|
||||||
|
|
||||||
|
Specifically the hostpath:
|
||||||
|
```yaml
|
||||||
|
hostPath:
|
||||||
|
path: /data/minio/
|
||||||
|
```
|
||||||
|
|
||||||
|
And the list of hosts:
|
||||||
|
```yaml
|
||||||
|
- http://hostname1:9000/data/minio
|
||||||
|
- http://hostname2:9000/data/minio
|
||||||
|
- http://hostname3:9000/data/minio
|
||||||
|
- http://hostname4:9000/data/minio
|
||||||
|
```
|
||||||
|
|
||||||
|
Once deployed, tag the defined host with the `minio-server=true` label:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl label node hostname1 -l minio-server=true
|
||||||
|
kubectl label node hostname2 -l minio-server=true
|
||||||
|
kubectl label node hostname3 -l minio-server=true
|
||||||
|
kubectl label node hostname4 -l minio-server=true
|
||||||
|
```
|
||||||
|
|
||||||
## Minio GCS Gateway Deployment
|
## Minio GCS Gateway Deployment
|
||||||
|
|
||||||
The following section describes the process to deploy [Minio](https://minio.io/) GCS Gateway on Kubernetes. The deployment uses the [official Minio Docker image](https://hub.docker.com/r/minio/minio/~/dockerfile/) from Docker Hub.
|
The following section describes the process to deploy [Minio](https://minio.io/) GCS Gateway on Kubernetes. The deployment uses the [official Minio Docker image](https://hub.docker.com/r/minio/minio/~/dockerfile/) from Docker Hub.
|
||||||
@ -570,4 +600,4 @@ You can cleanup the cluster using
|
|||||||
```sh
|
```sh
|
||||||
kubectl delete deployment minio-deployment \
|
kubectl delete deployment minio-deployment \
|
||||||
&& kubectl delete secret gcs-credentials
|
&& kubectl delete secret gcs-credentials
|
||||||
```
|
```
|
||||||
|
@ -0,0 +1,45 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: DaemonSet
|
||||||
|
metadata:
|
||||||
|
name: minio
|
||||||
|
labels:
|
||||||
|
app: minio
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: minio
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: minio
|
||||||
|
spec:
|
||||||
|
# We only deploy minio to the specified nodes. select your nodes by using `kubectl label node hostname1 -l minio-server=true`
|
||||||
|
nodeSelector:
|
||||||
|
minio-server: "true"
|
||||||
|
# This is to maximize network performance, the headless service can be used to connect to a random host.
|
||||||
|
hostNetwork: true
|
||||||
|
# We're just using a hostpath. This path must be the same on all servers, and should be the largest, fastest block device you can fit.
|
||||||
|
volumes:
|
||||||
|
- name: storage
|
||||||
|
hostPath:
|
||||||
|
path: /data/minio/
|
||||||
|
containers:
|
||||||
|
- name: minio
|
||||||
|
env:
|
||||||
|
- name: MINIO_ACCESS_KEY
|
||||||
|
value: "minio"
|
||||||
|
- name: MINIO_SECRET_KEY
|
||||||
|
value: "minio123"
|
||||||
|
image: minio/minio:RELEASE.2018-04-04T05-20-54Z
|
||||||
|
# Unfortunately you must manually define each server. Perhaps autodiscovery via DNS can be implemented in the future.
|
||||||
|
args:
|
||||||
|
- server
|
||||||
|
- http://hostname1:9000/data/minio
|
||||||
|
- http://hostname2:9000/data/minio
|
||||||
|
- http://hostname3:9000/data/minio
|
||||||
|
- http://hostname4:9000/data/minio
|
||||||
|
ports:
|
||||||
|
- containerPort: 9000
|
||||||
|
volumeMounts:
|
||||||
|
- name: storage
|
||||||
|
mountPath: /data/minio/
|
Loading…
Reference in New Issue
Block a user