oc-set-volumes man page

oc set volumes — Update volumes on a pod template


oc set volumes [Options]


Update volumes on a pod template

This command can add, update or remove volumes from containers for any object that has a pod template (deployment configs, replication controllers, or pods). You can list volumes in pod or any object that has a pod template. You can specify a single object or multiple, and alter volumes on all containers or just those that match a given name.

If you alter a volume setting on a deployment config, a deployment will be triggered. Changing a replication controller will not affect running pods, and you cannot change a pod's volumes once it has been created.

Volume types include:

· emptydir (empty directory) default : A directory allocated when the pod is created on a local host, is removed when the pod is deleted and is not copied across servers

· hostdir (host directory): A directory with specific path on any host (requires elevated privileges)

· persistentvolumeclaim or pvc (persistent volume claim): Link the volume directory in the container to a persistent volume claim you have allocated by name - a persistent volume claim is a request to allocate storage. Note that if your claim hasn't been bound, your pods will not start.

· secret (mounted secret): Secret volumes mount a named secret to the provided directory.

For descriptions on other volume types, see  ⟨https://docs.openshift.com



If true, add volume and/or volume mounts for containers


If true, select all resources in the namespace of the specified resource types


If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.


StorageClass to use for the persistent volume claim


Set the access mode of the claim to be created. Valid values are ReadWriteOnce (rwo), ReadWriteMany (rwm), or ReadOnlyMany (rom)


Persistent volume claim name. Must be provided for persistentVolumeClaim volume type


If specified along with a persistent volume type, create a new claim with the given size in bytes. Accepts SI notation: 10, 10G, 10Gi


Name of the persisted config map. Must be provided for configmap volume type


If true, confirm that you really want to remove multiple volumes

-c, --containers="*"

The names of containers in the selected pod templates to change - may use wildcards


The default mode bits to create files with. Can be between 0000 and 0777. Defaults to 0644.


If true, only print the object that would be sent, without sending it.

-f, --filename=[]

Filename, directory, or URL to file to use to edit the resource.


If true, list volumes and volume mounts for containers


If true, set image will NOT contact api-server but run locally.

-m, --mount-path=""

Mount path inside the container. Optional param for --add or --remove


Name of the volume. If empty, auto generated for add operation


When using the default or custom-column output format, don't print headers (default print headers).

-o, --output=""

Output format. One of: json|yaml|wide|name|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=... See custom columns [ ⟨http://kubernetes.io/docs/user-guide/kubectl-overview/#custom-columns⟩], golang template [ ⟨http://golang.org/pkg/text/template/#pkg-overview⟩] and jsonpath template [ ⟨http://kubernetes.io/docs/user-guide/jsonpath⟩].


If true, replace existing volume source with the provided name and/or volume mount for the given resource


Host path. Must be provided for hostPath volume type


If true, remove volume and/or volume mounts for containers


Name of the persisted secret. Must be provided for secret volume type

-l, --selector=""

Selector (label query) to filter on

-a, --show-all=true

When printing, show all resources (false means hide terminated pods.)


When printing, show all labels as the last column (default hide labels column)


If non-empty, sort list types using this field specification.  The field specification is expressed as a JSONPath expression (e.g. '{.metadata.name}'). The field in the API resource specified by this JSONPath expression must be an integer or a string.


Details of volume source as json string. This can be used if the required volume type is not supported by --type option. (e.g.: '{"gitRepo": {"repository": <git-url>, "revision": <commit-hash>}}')


Path within the local volume from which the container's volume should be mounted. Optional param for --add or --remove


Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [ ⟨http://golang.org/pkg/text/template/#pkg-overview⟩].

-t, --type=""

Type of the volume source for add operation. Supported options: emptyDir, hostPath, secret, configmap, persistentVolumeClaim

Options Inherited from Parent Commands


Username to impersonate for the operation


Group to impersonate for the operation, this flag can be repeated to specify multiple groups.


Path to the file container Azure container registry configuration information.


Default HTTP cache directory


Path to a cert file for the certificate authority


Path to a client certificate file for TLS


Path to a client key file for TLS


The name of the kubeconfig cluster to use


Path to the config file to use for CLI requests.


The name of the kubeconfig context to use


The Google Cloud Platform Service Account JSON Key to use for authentication.


If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure


Require server version to match client version

-n, --namespace=""

If present, the namespace scope for this CLI request


The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests.


The address and port of the Kubernetes API server


Bearer token for authentication to the API server


The name of the kubeconfig user to use


Print version information and quit


  # List volumes defined on all deployment configs in the current project
  oc set volume dc --all
  # Add a new empty dir volume to deployment config (dc) 'registry' mounted under
  # /var/lib/registry
  oc set volume dc/registry --add --mount-path=/var/lib/registry
  # Use an existing persistent volume claim (pvc) to overwrite an existing volume 'v1'
  oc set volume dc/registry --add --name=v1 -t pvc --claim-name=pvc1 --overwrite
  # Remove volume 'v1' from deployment config 'registry'
  oc set volume dc/registry --remove --name=v1
  # Create a new persistent volume claim that overwrites an existing volume 'v1'
  oc set volume dc/registry --add --name=v1 -t pvc --claim-size=1G --overwrite
  # Change the mount point for volume 'v1' to /data
  oc set volume dc/registry --add --name=v1 -m /data --overwrite
  # Modify the deployment config by removing volume mount "v1" from container "c1"
  # (and by removing the volume "v1" if no other containers have volume mounts that reference it)
  oc set volume dc/registry --remove --name=v1 --containers=c1
  # Add new volume based on a more complex volume source (Git repo, AWS EBS, GCE PD,
  # Ceph, Gluster, NFS, ISCSI, ...)
  oc set volume dc/registry --add -m /repo --source=<json-string>

See Also



June 2016, Ported from the Kubernetes man-doc generator

Referenced By


Openshift CLI User Manuals June 2016