This is an automated email from the ASF dual-hosted git repository.

aengineer pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/trunk by this push:
     new d023f1f  HDDS-1646. Support real persistence in the k8s example files  
(#945)
d023f1f is described below

commit d023f1f8640994d5233c27316a036c746c2f8429
Author: Elek, Márton <[email protected]>
AuthorDate: Mon Jun 24 21:02:35 2019 +0200

    HDDS-1646. Support real persistence in the k8s example files  (#945)
    
    * HDDS-1646. Support real persistence in the k8s example files
    
    * ephemeral clusters can be scaled up
---
 .../ozone/datanode-ss-service.yaml}                |  8 ++--
 .../ozone/{datanode-ds.yaml => datanode-ss.yaml}   | 29 +++++++++----
 .../{transformations => definitions}/emptydir.yaml | 20 ++-------
 .../emptydir.yaml => definitions/persistence.yaml} | 50 +++++++++++++---------
 .../dist/src/main/k8s/definitions/ozone/om-ss.yaml |  2 +
 .../src/main/k8s/definitions/ozone/scm-ss.yaml     |  2 +
 .../flekszible.yaml => getting-started/Flekszible} |  4 +-
 .../LICENSE.header}                                | 10 -----
 .../config-configmap.yaml}                         | 23 +++++++---
 .../datanode-public-service.yaml}                  |  7 ++-
 .../datanode-service.yaml                          |  3 ++
 .../datanode-statefulset.yaml                      | 28 +++++++-----
 .../getting-started/freon/freon-deployment.yaml}   | 31 ++++++++------
 .../om-public-service.yaml}                        |  9 ++--
 .../om-service.yaml}                               |  7 ++-
 .../{ozone => getting-started}/om-statefulset.yaml |  2 +
 .../s3g-public-service.yaml}                       |  9 ++--
 .../s3g-service.yaml}                              |  7 ++-
 .../s3g-statefulset.yaml}                          | 22 ++++------
 .../scm-public-service.yaml}                       |  9 ++--
 .../scm-service.yaml}                              |  7 ++-
 .../scm-statefulset.yaml                           |  2 +
 .../{flekszible/flekszible.yaml => Flekszible}     |  4 +-
 ...e-service.yaml => datanode-public-service.yaml} |  7 ++-
 .../k8s/examples/minikube/datanode-service.yaml    |  3 ++
 .../examples/minikube/datanode-statefulset.yaml    | 28 +++++++-----
 .../main/k8s/examples/minikube/om-statefulset.yaml |  8 ++++
 .../k8s/examples/minikube/s3g-statefulset.yaml     |  1 -
 .../k8s/examples/minikube/scm-statefulset.yaml     |  2 +
 .../{flekszible/flekszible.yaml => Flekszible}     |  5 ++-
 .../datanode-public-service.yaml}                  |  7 ++-
 .../{minikube => ozone-dev}/datanode-service.yaml  |  3 ++
 ...de-daemonset.yaml => datanode-statefulset.yaml} | 34 +++++++++------
 .../k8s/examples/ozone-dev/om-statefulset.yaml     |  2 +
 .../k8s/examples/ozone-dev/s3g-statefulset.yaml    |  7 ++-
 .../k8s/examples/ozone-dev/scm-statefulset.yaml    |  8 ++--
 .../{flekszible/flekszible.yaml => Flekszible}     |  3 +-
 .../{minikube => ozone}/datanode-service.yaml      |  3 ++
 .../{minikube => ozone}/datanode-statefulset.yaml  | 40 +++++++++++------
 .../main/k8s/examples/ozone/om-statefulset.yaml    | 15 +++++--
 .../main/k8s/examples/ozone/s3g-statefulset.yaml   | 13 ++++--
 .../main/k8s/examples/ozone/scm-statefulset.yaml   | 14 ++++--
 42 files changed, 313 insertions(+), 185 deletions(-)

diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/datanode-ss-service.yaml
similarity index 91%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/definitions/ozone/datanode-ss-service.yaml
index 0e5927d..7c221d9 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/datanode-ss-service.yaml
@@ -13,13 +13,15 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
 apiVersion: v1
 kind: Service
 metadata:
   name: datanode
 spec:
+  ports:
+  - port: 9870
+    name: rpc
   clusterIP: None
   selector:
-    app: ozone
-    component: datanode
+     app: ozone
+     component: datanode
diff --git a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/datanode-ds.yaml 
b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/datanode-ss.yaml
similarity index 64%
copy from hadoop-ozone/dist/src/main/k8s/definitions/ozone/datanode-ds.yaml
copy to hadoop-ozone/dist/src/main/k8s/definitions/ozone/datanode-ss.yaml
index fbc340c..94dc570 100644
--- a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/datanode-ds.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/datanode-ss.yaml
@@ -3,7 +3,7 @@
 # distributed with this work for additional information
 # regarding copyright ownership.  The ASF licenses this file
 # to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
+# "License"); you may not use this file except in cdatanodepliance
 # with the License.  You may obtain a copy of the License at
 #
 #     http://www.apache.org/licenses/LICENSE-2.0
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 apiVersion: apps/v1
-kind: DaemonSet
+kind: StatefulSet
 metadata:
   name: datanode
   labels:
@@ -24,20 +24,31 @@ spec:
     matchLabels:
       app: ozone
       component: datanode
+  serviceName: datanode
+  replicas: 3
   template:
     metadata:
-      annotations:
-        prometheus.io/scrape: "true"
-        prometheus.io/port: "9882"
-        prometheus.io/path: "/prom"
       labels:
         app: ozone
         component: datanode
+      annotations:
+        prdatanodeetheus.io/scrape: "true"
+        prdatanodeetheus.io/port: "9882"
+        prdatanodeetheus.io/path: "/prom"
     spec:
+      affinity:
+        podAntiAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution:
+          - labelSelector:
+              matchExpressions:
+              - key: component
+                operator: In
+                values:
+                - datanode
+            topologyKey: "kubernetes.io/hostname"
+      securityContext:
+        fsGroup: 1000
       containers:
       - name: datanode
         image: "@docker.image@"
         args: ["ozone","datanode"]
-        ports:
-           - containerPort: 9870
-             name: rpc
diff --git 
a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/transformations/emptydir.yaml
 b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/definitions/emptydir.yaml
similarity index 82%
copy from 
hadoop-ozone/dist/src/main/k8s/definitions/ozone/transformations/emptydir.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/definitions/ozone/definitions/emptydir.yaml
index 5f9b94a..7a717bf 100644
--- 
a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/transformations/emptydir.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/definitions/emptydir.yaml
@@ -13,6 +13,9 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+name: ozone/emptydir
+description: Add empty dir based ephemeral persistence
+---
 - type: Add
   trigger:
     metadata:
@@ -22,22 +25,7 @@
     - spec
     - template
     - spec
-    - containers
-    - "*"
-    - volumeMounts
-  value:
-    - name: data
-      mountPath: /data
-- type: Add
-  trigger:
-    metadata:
-      labels:
-        app.kubernetes.io/component: ozone
-  path:
-    - spec
-    - template
-    - spec
-    - initContainers
+    - (initContainers|containers)
     - "*"
     - volumeMounts
   value:
diff --git 
a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/transformations/emptydir.yaml
 b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/definitions/persistence.yaml
similarity index 61%
rename from 
hadoop-ozone/dist/src/main/k8s/definitions/ozone/transformations/emptydir.yaml
rename to 
hadoop-ozone/dist/src/main/k8s/definitions/ozone/definitions/persistence.yaml
index 5f9b94a..33a818d 100644
--- 
a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/transformations/emptydir.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/definitions/persistence.yaml
@@ -13,36 +13,42 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+name: ozone/persistence
+description: Add real PVC based persistence
+---
 - type: Add
-  trigger:
-    metadata:
-      labels:
-        app.kubernetes.io/component: ozone
   path:
     - spec
-    - template
-    - spec
-    - containers
-    - "*"
-    - volumeMounts
+  trigger:
+    kind: StatefulSet
   value:
-    - name: data
-      mountPath: /data
+      volumeClaimTemplates:
+      - metadata:
+          name: data
+        spec:
+          accessModes: [ "ReadWriteOnce" ]
+          resources:
+            requests:
+              storage: 2Gi
 - type: Add
   trigger:
-    metadata:
-      labels:
-        app.kubernetes.io/component: ozone
+     metadata:
+        name: datanode
   path:
     - spec
     - template
     - spec
-    - initContainers
-    - "*"
-    - volumeMounts
   value:
-    - name: data
-      mountPath: /data
+    affinity:
+      podAntiAffinity:
+        requiredDuringSchedulingIgnoredDuringExecution:
+        - labelSelector:
+            matchExpressions:
+            - key: component
+              operator: In
+              values:
+              - datanode
+          topologyKey: kubernetes.io/hostname
 - type: Add
   trigger:
     metadata:
@@ -52,7 +58,9 @@
     - spec
     - template
     - spec
-    - volumes
+    - (initContainers|containers)
+    - "*"
+    - volumeMounts
   value:
     - name: data
-      emptyDir: {}
+      mountPath: /data
\ No newline at end of file
diff --git a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/om-ss.yaml 
b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/om-ss.yaml
index 9f9d87d..5c2f7cc 100644
--- a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/om-ss.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/om-ss.yaml
@@ -36,6 +36,8 @@ spec:
         prometheus.io/port: "9874"
         prometheus.io/path: "/prom"
     spec:
+      securityContext:
+        fsGroup: 1000
       initContainers:
       - name: init
         image: "@docker.image@"
diff --git a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/scm-ss.yaml 
b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/scm-ss.yaml
index 9329a5f..b3c36b7 100644
--- a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/scm-ss.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/scm-ss.yaml
@@ -36,6 +36,8 @@ spec:
         prometheus.io/port: "9876"
         prometheus.io/path: "/prom"
     spec:
+      securityContext:
+        fsGroup: 1000
       initContainers:
       - name: init
         image: "@docker.image@"
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/flekszible/flekszible.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/Flekszible
similarity index 96%
copy from 
hadoop-ozone/dist/src/main/k8s/examples/minikube/flekszible/flekszible.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/getting-started/Flekszible
index 81207e7..e00d9ce 100644
--- 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/flekszible/flekszible.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/Flekszible
@@ -14,14 +14,14 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 source:
-  - path: ../../../definitions
+  - path: ../../definitions
 import:
   - path: ozone
     transformations:
     - type: Image
       image: "@docker.image@"
-    - type: DaemonToStatefulSet
     - type: PublishStatefulSet
+    - type: ozone/emptydir
   - path: ozone/freon
     destination: freon
     transformations:
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/LICENSE.header
similarity index 85%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/getting-started/LICENSE.header
index 0e5927d..635f0d9 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/LICENSE.header
@@ -13,13 +13,3 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
-apiVersion: v1
-kind: Service
-metadata:
-  name: datanode
-spec:
-  clusterIP: None
-  selector:
-    app: ozone
-    component: datanode
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/config-configmap.yaml
similarity index 51%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/getting-started/config-configmap.yaml
index 0e5927d..94d16d2 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/config-configmap.yaml
@@ -15,11 +15,20 @@
 # limitations under the License.
 
 apiVersion: v1
-kind: Service
+kind: ConfigMap
 metadata:
-  name: datanode
-spec:
-  clusterIP: None
-  selector:
-    app: ozone
-    component: datanode
+  name: config
+data:
+  OZONE-SITE.XML_hdds.datanode.dir: /data/storage
+  OZONE-SITE.XML_ozone.scm.datanode.id.dir: /data
+  OZONE-SITE.XML_ozone.metadata.dirs: /data/metadata
+  OZONE-SITE.XML_ozone.scm.block.client.address: scm-0.scm
+  OZONE-SITE.XML_ozone.om.address: om-0.om
+  OZONE-SITE.XML_ozone.scm.client.address: scm-0.scm
+  OZONE-SITE.XML_ozone.scm.names: scm-0.scm
+  OZONE-SITE.XML_ozone.enabled: "true"
+  LOG4J.PROPERTIES_log4j.rootLogger: INFO, stdout
+  LOG4J.PROPERTIES_log4j.appender.stdout: org.apache.log4j.ConsoleAppender
+  LOG4J.PROPERTIES_log4j.appender.stdout.layout: org.apache.log4j.PatternLayout
+  LOG4J.PROPERTIES_log4j.appender.stdout.layout.ConversionPattern: 
'%d{yyyy-MM-dd
+    HH:mm:ss} %-5p %c{1}:%L - %m%n'
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/datanode-public-service.yaml
similarity index 91%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/getting-started/datanode-public-service.yaml
index 0e5927d..89b5914 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/datanode-public-service.yaml
@@ -17,9 +17,12 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: datanode
+  name: datanode-public
 spec:
-  clusterIP: None
+  ports:
+  - port: 9870
+    name: rpc
   selector:
     app: ozone
     component: datanode
+  type: NodePort
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/datanode-service.yaml
similarity index 96%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/getting-started/datanode-service.yaml
index 0e5927d..929e7a2 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/datanode-service.yaml
@@ -19,6 +19,9 @@ kind: Service
 metadata:
   name: datanode
 spec:
+  ports:
+  - port: 9870
+    name: rpc
   clusterIP: None
   selector:
     app: ozone
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/datanode-statefulset.yaml
similarity index 74%
copy from 
hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-statefulset.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/getting-started/datanode-statefulset.yaml
index a453b9a..6c8d1bf 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-statefulset.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/datanode-statefulset.yaml
@@ -25,34 +25,42 @@ spec:
     matchLabels:
       app: ozone
       component: datanode
+  serviceName: datanode
+  replicas: 3
   template:
     metadata:
-      annotations:
-        prometheus.io/scrape: "true"
-        prometheus.io/port: "9882"
-        prometheus.io/path: /prom
       labels:
         app: ozone
         component: datanode
+      annotations:
+        prdatanodeetheus.io/scrape: "true"
+        prdatanodeetheus.io/port: "9882"
+        prdatanodeetheus.io/path: /prom
     spec:
+      affinity:
+        podAntiAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution:
+          - labelSelector:
+              matchExpressions:
+              - key: component
+                operator: In
+                values:
+                - datanode
+            topologyKey: kubernetes.io/hostname
+      securityContext:
+        fsGroup: 1000
       containers:
       - name: datanode
         image: '@docker.image@'
         args:
         - ozone
         - datanode
-        ports:
-        - containerPort: 9870
-          name: rpc
         envFrom:
         - configMapRef:
             name: config
         volumeMounts:
         - name: data
           mountPath: /data
-      initContainers: []
       volumes:
       - name: data
         emptyDir: {}
-  serviceName: datanode
-  replicas: 3
diff --git a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/datanode-ds.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/freon/freon-deployment.yaml
similarity index 72%
rename from hadoop-ozone/dist/src/main/k8s/definitions/ozone/datanode-ds.yaml
rename to 
hadoop-ozone/dist/src/main/k8s/examples/getting-started/freon/freon-deployment.yaml
index fbc340c..1662c4e 100644
--- a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/datanode-ds.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/freon/freon-deployment.yaml
@@ -13,31 +13,34 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+
 apiVersion: apps/v1
-kind: DaemonSet
+kind: Deployment
 metadata:
-  name: datanode
+  name: freon
   labels:
     app.kubernetes.io/component: ozone
 spec:
+  replicas: 1
   selector:
     matchLabels:
       app: ozone
-      component: datanode
+      component: freon
   template:
     metadata:
-      annotations:
-        prometheus.io/scrape: "true"
-        prometheus.io/port: "9882"
-        prometheus.io/path: "/prom"
       labels:
         app: ozone
-        component: datanode
+        component: freon
     spec:
       containers:
-      - name: datanode
-        image: "@docker.image@"
-        args: ["ozone","datanode"]
-        ports:
-           - containerPort: 9870
-             name: rpc
+      - name: freon
+        image: '@docker.image@'
+        args:
+        - ozone
+        - freon
+        - rk
+        - --factor=THREE
+        - --replicationType=RATIS
+        envFrom:
+        - configMapRef:
+            name: config
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/om-public-service.yaml
similarity index 90%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/getting-started/om-public-service.yaml
index 0e5927d..deb2c33 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/om-public-service.yaml
@@ -17,9 +17,12 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: datanode
+  name: om-public
 spec:
-  clusterIP: None
+  ports:
+  - port: 9874
+    name: ui
   selector:
     app: ozone
-    component: datanode
+    component: om
+  type: NodePort
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/om-service.yaml
similarity index 92%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/getting-started/om-service.yaml
index 0e5927d..617277d 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/om-service.yaml
@@ -17,9 +17,12 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: datanode
+  name: om
 spec:
+  ports:
+  - port: 9874
+    name: ui
   clusterIP: None
   selector:
     app: ozone
-    component: datanode
+    component: om
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/om-statefulset.yaml
similarity index 97%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/getting-started/om-statefulset.yaml
index 884dd46..c8ff81b 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/om-statefulset.yaml
@@ -37,6 +37,8 @@ spec:
         prometheus.io/port: "9874"
         prometheus.io/path: /prom
     spec:
+      securityContext:
+        fsGroup: 1000
       initContainers:
       - name: init
         image: '@docker.image@'
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/s3g-public-service.yaml
similarity index 90%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/getting-started/s3g-public-service.yaml
index 0e5927d..d2b2420 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/s3g-public-service.yaml
@@ -17,9 +17,12 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: datanode
+  name: s3g-public
 spec:
-  clusterIP: None
+  ports:
+  - port: 9878
+    name: rest
   selector:
     app: ozone
-    component: datanode
+    component: s3g
+  type: NodePort
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/s3g-service.yaml
similarity index 92%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/getting-started/s3g-service.yaml
index 0e5927d..dd1ca83 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/s3g-service.yaml
@@ -17,9 +17,12 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: datanode
+  name: s3g
 spec:
+  ports:
+  - port: 9878
+    name: rest
   clusterIP: None
   selector:
     app: ozone
-    component: datanode
+    component: s3g
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-daemonset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/s3g-statefulset.yaml
similarity index 78%
rename from 
hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-daemonset.yaml
rename to 
hadoop-ozone/dist/src/main/k8s/examples/getting-started/s3g-statefulset.yaml
index 6e3b3b9..c7e13e5 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-daemonset.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/s3g-statefulset.yaml
@@ -15,42 +15,36 @@
 # limitations under the License.
 
 apiVersion: apps/v1
-kind: DaemonSet
+kind: StatefulSet
 metadata:
-  name: datanode
+  name: s3g
   labels:
     app.kubernetes.io/component: ozone
 spec:
   selector:
     matchLabels:
       app: ozone
-      component: datanode
+      component: s3g
+  serviceName: s3g
+  replicas: 1
   template:
     metadata:
-      annotations:
-        prometheus.io/scrape: "true"
-        prometheus.io/port: "9882"
-        prometheus.io/path: /prom
       labels:
         app: ozone
-        component: datanode
+        component: s3g
     spec:
       containers:
-      - name: datanode
+      - name: s3g
         image: '@docker.image@'
         args:
         - ozone
-        - datanode
-        ports:
-        - containerPort: 9870
-          name: rpc
+        - s3g
         envFrom:
         - configMapRef:
             name: config
         volumeMounts:
         - name: data
           mountPath: /data
-      initContainers: []
       volumes:
       - name: data
         emptyDir: {}
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/scm-public-service.yaml
similarity index 90%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/getting-started/scm-public-service.yaml
index 0e5927d..e3246fc 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/scm-public-service.yaml
@@ -17,9 +17,12 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: datanode
+  name: scm-public
 spec:
-  clusterIP: None
+  ports:
+  - port: 9876
+    name: ui
   selector:
     app: ozone
-    component: datanode
+    component: scm
+  type: NodePort
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/scm-service.yaml
similarity index 92%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/getting-started/scm-service.yaml
index 0e5927d..0df15d6 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/scm-service.yaml
@@ -17,9 +17,12 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: datanode
+  name: scm
 spec:
+  ports:
+  - port: 9876
+    name: ui
   clusterIP: None
   selector:
     app: ozone
-    component: datanode
+    component: scm
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/scm-statefulset.yaml
similarity index 97%
copy from hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/getting-started/scm-statefulset.yaml
index 55b5672..e1deed8 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/getting-started/scm-statefulset.yaml
@@ -37,6 +37,8 @@ spec:
         prometheus.io/port: "9876"
         prometheus.io/path: /prom
     spec:
+      securityContext:
+        fsGroup: 1000
       initContainers:
       - name: init
         image: '@docker.image@'
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/flekszible/flekszible.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/Flekszible
similarity index 96%
rename from 
hadoop-ozone/dist/src/main/k8s/examples/minikube/flekszible/flekszible.yaml
rename to hadoop-ozone/dist/src/main/k8s/examples/minikube/Flekszible
index 81207e7..e00d9ce 100644
--- 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/flekszible/flekszible.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/Flekszible
@@ -14,14 +14,14 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 source:
-  - path: ../../../definitions
+  - path: ../../definitions
 import:
   - path: ozone
     transformations:
     - type: Image
       image: "@docker.image@"
-    - type: DaemonToStatefulSet
     - type: PublishStatefulSet
+    - type: ozone/emptydir
   - path: ozone/freon
     destination: freon
     transformations:
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-public-service.yaml
similarity index 91%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-public-service.yaml
index 0e5927d..89b5914 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-public-service.yaml
@@ -17,9 +17,12 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: datanode
+  name: datanode-public
 spec:
-  clusterIP: None
+  ports:
+  - port: 9870
+    name: rpc
   selector:
     app: ozone
     component: datanode
+  type: NodePort
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
index 0e5927d..929e7a2 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
@@ -19,6 +19,9 @@ kind: Service
 metadata:
   name: datanode
 spec:
+  ports:
+  - port: 9870
+    name: rpc
   clusterIP: None
   selector:
     app: ozone
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-statefulset.yaml
index a453b9a..6c8d1bf 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-statefulset.yaml
@@ -25,34 +25,42 @@ spec:
     matchLabels:
       app: ozone
       component: datanode
+  serviceName: datanode
+  replicas: 3
   template:
     metadata:
-      annotations:
-        prometheus.io/scrape: "true"
-        prometheus.io/port: "9882"
-        prometheus.io/path: /prom
       labels:
         app: ozone
         component: datanode
+      annotations:
+        prdatanodeetheus.io/scrape: "true"
+        prdatanodeetheus.io/port: "9882"
+        prdatanodeetheus.io/path: /prom
     spec:
+      affinity:
+        podAntiAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution:
+          - labelSelector:
+              matchExpressions:
+              - key: component
+                operator: In
+                values:
+                - datanode
+            topologyKey: kubernetes.io/hostname
+      securityContext:
+        fsGroup: 1000
       containers:
       - name: datanode
         image: '@docker.image@'
         args:
         - ozone
         - datanode
-        ports:
-        - containerPort: 9870
-          name: rpc
         envFrom:
         - configMapRef:
             name: config
         volumeMounts:
         - name: data
           mountPath: /data
-      initContainers: []
       volumes:
       - name: data
         emptyDir: {}
-  serviceName: datanode
-  replicas: 3
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/om-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/om-statefulset.yaml
index e0811e4..c8ff81b 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/om-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/om-statefulset.yaml
@@ -37,6 +37,8 @@ spec:
         prometheus.io/port: "9874"
         prometheus.io/path: /prom
     spec:
+      securityContext:
+        fsGroup: 1000
       initContainers:
       - name: init
         image: '@docker.image@'
@@ -44,6 +46,9 @@ spec:
         - ozone
         - om
         - --init
+        env:
+        - name: WAITFOR
+          value: scm-0.scm:9876
         envFrom:
         - configMapRef:
             name: config
@@ -56,6 +61,9 @@ spec:
         args:
         - ozone
         - om
+        env:
+        - name: WAITFOR
+          value: scm-0.scm:9876
         envFrom:
         - configMapRef:
             name: config
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/s3g-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/s3g-statefulset.yaml
index b608cde..c7e13e5 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/s3g-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/s3g-statefulset.yaml
@@ -45,7 +45,6 @@ spec:
         volumeMounts:
         - name: data
           mountPath: /data
-      initContainers: []
       volumes:
       - name: data
         emptyDir: {}
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/scm-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/minikube/scm-statefulset.yaml
index 55b5672..e1deed8 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/scm-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/scm-statefulset.yaml
@@ -37,6 +37,8 @@ spec:
         prometheus.io/port: "9876"
         prometheus.io/path: /prom
     spec:
+      securityContext:
+        fsGroup: 1000
       initContainers:
       - name: init
         image: '@docker.image@'
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/flekszible/flekszible.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/Flekszible
similarity index 93%
rename from 
hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/flekszible/flekszible.yaml
rename to hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/Flekszible
index 9b9f8f3..d28ecf5 100644
--- 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/flekszible/flekszible.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/Flekszible
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 source:
-  - path: ../../../definitions
+  - path: ../../definitions
 import:
   - path: ozone
     transformations:
@@ -24,6 +24,7 @@ import:
     - type: PublishStatefulSet
     - type: ozone/tracing
     - type: ozone/profiler
+    - type: ozone/emptydir
   - path: prometheus
   - path: jaeger
     transformations:
@@ -33,4 +34,4 @@ import:
     transformations:
     - type: Image
       image: "@docker.image@"
-    - type: ozone/tracing
\ No newline at end of file
+    - type: ozone/tracing
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-public-service.yaml
similarity index 91%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to 
hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-public-service.yaml
index 0e5927d..89b5914 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-public-service.yaml
@@ -17,9 +17,12 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: datanode
+  name: datanode-public
 spec:
-  clusterIP: None
+  ports:
+  - port: 9870
+    name: rpc
   selector:
     app: ozone
     component: datanode
+  type: NodePort
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-service.yaml
similarity index 96%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-service.yaml
index 0e5927d..929e7a2 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-service.yaml
@@ -19,6 +19,9 @@ kind: Service
 metadata:
   name: datanode
 spec:
+  ports:
+  - port: 9870
+    name: rpc
   clusterIP: None
   selector:
     app: ozone
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-daemonset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-statefulset.yaml
similarity index 74%
rename from 
hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-daemonset.yaml
rename to 
hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-statefulset.yaml
index 0293cc2..843aa94 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-daemonset.yaml
+++ 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-statefulset.yaml
@@ -15,7 +15,7 @@
 # limitations under the License.
 
 apiVersion: apps/v1
-kind: DaemonSet
+kind: StatefulSet
 metadata:
   name: datanode
   labels:
@@ -25,25 +25,39 @@ spec:
     matchLabels:
       app: ozone
       component: datanode
+  serviceName: datanode
+  replicas: 3
   template:
     metadata:
-      annotations:
-        prometheus.io/scrape: "true"
-        prometheus.io/port: "9882"
-        prometheus.io/path: /prom
       labels:
         app: ozone
         component: datanode
+      annotations:
+        prdatanodeetheus.io/scrape: "true"
+        prdatanodeetheus.io/port: "9882"
+        prdatanodeetheus.io/path: /prom
     spec:
+      affinity:
+        podAntiAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution:
+          - labelSelector:
+              matchExpressions:
+              - key: component
+                operator: In
+                values:
+                - datanode
+            topologyKey: kubernetes.io/hostname
+      securityContext:
+        fsGroup: 1000
       containers:
       - name: datanode
         image: '@docker.image@'
         args:
         - ozone
         - datanode
-        ports:
-        - containerPort: 9870
-          name: rpc
+        envFrom:
+        - configMapRef:
+            name: config
         env:
         - name: JAEGER_SAMPLER_TYPE
           value: probabilistic
@@ -51,13 +65,9 @@ spec:
           value: "0.01"
         - name: JAEGER_AGENT_HOST
           value: jaeger-0.jaeger
-        envFrom:
-        - configMapRef:
-            name: config
         volumeMounts:
         - name: data
           mountPath: /data
-      initContainers: []
       volumes:
       - name: data
         emptyDir: {}
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/om-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/om-statefulset.yaml
index 927186e..8d7e9f1 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/om-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/om-statefulset.yaml
@@ -37,6 +37,8 @@ spec:
         prometheus.io/port: "9874"
         prometheus.io/path: /prom
     spec:
+      securityContext:
+        fsGroup: 1000
       initContainers:
       - name: init
         image: '@docker.image@'
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/s3g-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/s3g-statefulset.yaml
index 1033f34..72d5550 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/s3g-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/s3g-statefulset.yaml
@@ -39,6 +39,9 @@ spec:
         args:
         - ozone
         - s3g
+        envFrom:
+        - configMapRef:
+            name: config
         env:
         - name: JAEGER_SAMPLER_TYPE
           value: probabilistic
@@ -46,13 +49,9 @@ spec:
           value: "0.01"
         - name: JAEGER_AGENT_HOST
           value: jaeger-0.jaeger
-        envFrom:
-        - configMapRef:
-            name: config
         volumeMounts:
         - name: data
           mountPath: /data
-      initContainers: []
       volumes:
       - name: data
         emptyDir: {}
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/scm-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/scm-statefulset.yaml
index 87c8d38..8717ff7 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/scm-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/scm-statefulset.yaml
@@ -37,6 +37,8 @@ spec:
         prometheus.io/port: "9876"
         prometheus.io/path: /prom
     spec:
+      securityContext:
+        fsGroup: 1000
       initContainers:
       - name: init
         image: '@docker.image@'
@@ -56,6 +58,9 @@ spec:
         args:
         - ozone
         - scm
+        envFrom:
+        - configMapRef:
+            name: config
         env:
         - name: JAEGER_SAMPLER_TYPE
           value: probabilistic
@@ -63,9 +68,6 @@ spec:
           value: "0.01"
         - name: JAEGER_AGENT_HOST
           value: jaeger-0.jaeger
-        envFrom:
-        - configMapRef:
-            name: config
         volumeMounts:
         - name: data
           mountPath: /data
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/ozone/flekszible/flekszible.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/Flekszible
similarity index 96%
rename from 
hadoop-ozone/dist/src/main/k8s/examples/ozone/flekszible/flekszible.yaml
rename to hadoop-ozone/dist/src/main/k8s/examples/ozone/Flekszible
index 5da1f20..434b0b6 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/flekszible/flekszible.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/Flekszible
@@ -14,12 +14,13 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 source:
-  - path: ../../../definitions
+  - path: ../../definitions
 import:
   - path: ozone
     transformations:
     - type: Image
       image: "@docker.image@"
+    - type: ozone/persistence
   - path: ozone/freon
     destination: freon
     transformations:
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-service.yaml
similarity index 96%
copy from hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-service.yaml
index 0e5927d..929e7a2 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-service.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-service.yaml
@@ -19,6 +19,9 @@ kind: Service
 metadata:
   name: datanode
 spec:
+  ports:
+  - port: 9870
+    name: rpc
   clusterIP: None
   selector:
     app: ozone
diff --git 
a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-statefulset.yaml
similarity index 68%
copy from 
hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-statefulset.yaml
copy to hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-statefulset.yaml
index a453b9a..b74d58e 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-statefulset.yaml
@@ -25,34 +25,48 @@ spec:
     matchLabels:
       app: ozone
       component: datanode
+  serviceName: datanode
+  replicas: 3
   template:
     metadata:
-      annotations:
-        prometheus.io/scrape: "true"
-        prometheus.io/port: "9882"
-        prometheus.io/path: /prom
       labels:
         app: ozone
         component: datanode
+      annotations:
+        prdatanodeetheus.io/scrape: "true"
+        prdatanodeetheus.io/port: "9882"
+        prdatanodeetheus.io/path: /prom
     spec:
+      affinity:
+        podAntiAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution:
+          - labelSelector:
+              matchExpressions:
+              - key: component
+                operator: In
+                values:
+                - datanode
+            topologyKey: kubernetes.io/hostname
+      securityContext:
+        fsGroup: 1000
       containers:
       - name: datanode
         image: '@docker.image@'
         args:
         - ozone
         - datanode
-        ports:
-        - containerPort: 9870
-          name: rpc
         envFrom:
         - configMapRef:
             name: config
         volumeMounts:
         - name: data
           mountPath: /data
-      initContainers: []
-      volumes:
-      - name: data
-        emptyDir: {}
-  serviceName: datanode
-  replicas: 3
+  volumeClaimTemplates:
+  - metadata:
+      name: data
+    spec:
+      accessModes:
+      - ReadWriteOnce
+      resources:
+        requests:
+          storage: 2Gi
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml
index 884dd46..6cb53e7 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml
@@ -37,6 +37,8 @@ spec:
         prometheus.io/port: "9874"
         prometheus.io/path: /prom
     spec:
+      securityContext:
+        fsGroup: 1000
       initContainers:
       - name: init
         image: '@docker.image@'
@@ -68,6 +70,13 @@ spec:
         volumeMounts:
         - name: data
           mountPath: /data
-      volumes:
-      - name: data
-        emptyDir: {}
+      volumes: []
+  volumeClaimTemplates:
+  - metadata:
+      name: data
+    spec:
+      accessModes:
+      - ReadWriteOnce
+      resources:
+        requests:
+          storage: 2Gi
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/s3g-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/s3g-statefulset.yaml
index b608cde..2ad951f 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/s3g-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/s3g-statefulset.yaml
@@ -45,7 +45,12 @@ spec:
         volumeMounts:
         - name: data
           mountPath: /data
-      initContainers: []
-      volumes:
-      - name: data
-        emptyDir: {}
+  volumeClaimTemplates:
+  - metadata:
+      name: data
+    spec:
+      accessModes:
+      - ReadWriteOnce
+      resources:
+        requests:
+          storage: 2Gi
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml 
b/hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml
index 55b5672..a63c3fc 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml
@@ -37,6 +37,8 @@ spec:
         prometheus.io/port: "9876"
         prometheus.io/path: /prom
     spec:
+      securityContext:
+        fsGroup: 1000
       initContainers:
       - name: init
         image: '@docker.image@'
@@ -62,6 +64,12 @@ spec:
         volumeMounts:
         - name: data
           mountPath: /data
-      volumes:
-      - name: data
-        emptyDir: {}
+  volumeClaimTemplates:
+  - metadata:
+      name: data
+    spec:
+      accessModes:
+      - ReadWriteOnce
+      resources:
+        requests:
+          storage: 2Gi


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to