jiwq commented on a change in pull request #481:
URL: https://github.com/apache/submarine/pull/481#discussion_r548973097
##########
File path:
submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/NotebookSpecParser.java
##########
@@ -132,9 +134,32 @@ private static V1PodTemplateSpec
parseTemplateSpec(NotebookSpec notebookSpec) {
container.setResources(resources);
}
+ // Volume Mount
+ List<V1VolumeMount> mounts = new ArrayList<>();
+ V1VolumeMount mount = new V1VolumeMount();
+ mount.setMountPath("/home/jovyan/workspace");
Review comment:
Use the static variable named `DEFAULT_MOUNT_PATH` is better.
##########
File path:
submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/K8sSubmitter.java
##########
@@ -385,6 +414,112 @@ private IngressRouteSpec parseIngressRouteSpec(String
namespace, String name) {
return spec;
}
+ private void createPersistentVolume(String name) {
+ V1PersistentVolume pv = new V1PersistentVolume();
+ V1PersistentVolumeSpec pv_spec = new V1PersistentVolumeSpec();
+ V1ObjectMeta pv_metadata = new V1ObjectMeta();
+ List<String> accessMode = new ArrayList<>();
+ Map<String, Quantity> capacity = new HashMap<>();
+ V1LocalVolumeSource local = new V1LocalVolumeSource();
+ V1VolumeNodeAffinity affinity = new V1VolumeNodeAffinity();
+ V1NodeSelector required = new V1NodeSelector();
+ List<V1NodeSelectorTerm> terms = new ArrayList<>();
+ V1NodeSelectorTerm term = new V1NodeSelectorTerm();
+ List<V1NodeSelectorRequirement> expressions = new ArrayList<>();
+ List<String> value = new ArrayList<>();
+ value.add("linux");
+ V1NodeSelectorRequirement expression = new V1NodeSelectorRequirement()
+ .key("kubernetes.io/os")
+ .operator("In")
+ .values(value);
+
+ accessMode.add("ReadWriteOnce");
+ capacity.put("storage", new Quantity("10Gi"));
Review comment:
The quantity should passed from `NotebookSpec` rather than hard code.
##########
File path:
submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/NotebookSpecParser.java
##########
@@ -132,9 +134,32 @@ private static V1PodTemplateSpec
parseTemplateSpec(NotebookSpec notebookSpec) {
container.setResources(resources);
}
+ // Volume Mount
+ List<V1VolumeMount> mounts = new ArrayList<>();
+ V1VolumeMount mount = new V1VolumeMount();
+ mount.setMountPath("/home/jovyan/workspace");
+ mount.setName("workspace-" + notebookSpec.getMeta().getName());
+ mounts.add(mount);
+ container.setVolumeMounts(mounts);
+
containers.add(container);
podSpec.setContainers(containers);
+ // Set Volumes
Review comment:
Should gave more comments about the logical for init the volume.
##########
File path:
submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/K8sSubmitter.java
##########
@@ -254,6 +267,19 @@ public Notebook createNotebook(NotebookSpec spec) throws
SubmarineRuntimeExcepti
Map<String, String> labels = new HashMap<>();
labels.put(NotebookCR.NOTEBOOK_OWNER_SELECTOR_KET,
spec.getMeta().getOwnerId());
notebookCR.getMetadata().setLabels(labels);
+
+ // create persistent volume
+ createPersistentVolume(notebookCR.getMetadata().getName());
+
+ // create persistent volume claim
+ createPersistentVolumeClaim(notebookCR.getMetadata().getNamespace(),
+ notebookCR.getMetadata().getName());
+
+ // bind persistent volume claim
+ V1PersistentVolumeClaimVolumeSource pvc_source = new
V1PersistentVolumeClaimVolumeSource()
+ .claimName(notebookCR.getMetadata().getName() + "-claim");
Review comment:
Should generate the claim name use the same method, so that avoid future
mistakes.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]