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.2019-03-27T22-35-21Z # 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/