summaryrefslogtreecommitdiff
path: root/vendor/k8s.io/api/core/v1/generated.proto
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/k8s.io/api/core/v1/generated.proto')
-rw-r--r--vendor/k8s.io/api/core/v1/generated.proto396
1 files changed, 345 insertions, 51 deletions
diff --git a/vendor/k8s.io/api/core/v1/generated.proto b/vendor/k8s.io/api/core/v1/generated.proto
index 742627b09..814bf5ca4 100644
--- a/vendor/k8s.io/api/core/v1/generated.proto
+++ b/vendor/k8s.io/api/core/v1/generated.proto
@@ -275,7 +275,7 @@ message Capabilities {
// Cephfs volumes do not support ownership management or SELinux relabeling.
message CephFSPersistentVolumeSource {
// Required: Monitors is a collection of Ceph monitors
- // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
repeated string monitors = 1;
// Optional: Used as the mounted root, rather than the full Ceph tree, default is /
@@ -283,23 +283,23 @@ message CephFSPersistentVolumeSource {
optional string path = 2;
// Optional: User is the rados user name, default is admin
- // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
// +optional
optional string user = 3;
// Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
- // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
// +optional
optional string secretFile = 4;
// Optional: SecretRef is reference to the authentication secret for User, default is empty.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
// +optional
optional SecretReference secretRef = 5;
// Optional: Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
// +optional
optional bool readOnly = 6;
}
@@ -308,7 +308,7 @@ message CephFSPersistentVolumeSource {
// Cephfs volumes do not support ownership management or SELinux relabeling.
message CephFSVolumeSource {
// Required: Monitors is a collection of Ceph monitors
- // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
repeated string monitors = 1;
// Optional: Used as the mounted root, rather than the full Ceph tree, default is /
@@ -316,23 +316,23 @@ message CephFSVolumeSource {
optional string path = 2;
// Optional: User is the rados user name, default is admin
- // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
// +optional
optional string user = 3;
// Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
- // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
// +optional
optional string secretFile = 4;
// Optional: SecretRef is reference to the authentication secret for User, default is empty.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
// +optional
optional LocalObjectReference secretRef = 5;
// Optional: Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
// +optional
optional bool readOnly = 6;
}
@@ -342,20 +342,20 @@ message CephFSVolumeSource {
// The volume must also be in the same region as the kubelet.
// Cinder volumes support ownership management and SELinux relabeling.
message CinderPersistentVolumeSource {
- // volume id used to identify the volume in cinder
- // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
+ // volume id used to identify the volume in cinder.
+ // More info: https://examples.k8s.io/mysql-cinder-pd/README.md
optional string volumeID = 1;
// Filesystem type to mount.
// Must be a filesystem type supported by the host operating system.
// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
+ // More info: https://examples.k8s.io/mysql-cinder-pd/README.md
// +optional
optional string fsType = 2;
// Optional: Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
- // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
+ // More info: https://examples.k8s.io/mysql-cinder-pd/README.md
// +optional
optional bool readOnly = 3;
@@ -370,20 +370,20 @@ message CinderPersistentVolumeSource {
// The volume must also be in the same region as the kubelet.
// Cinder volumes support ownership management and SELinux relabeling.
message CinderVolumeSource {
- // volume id used to identify the volume in cinder
- // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
+ // volume id used to identify the volume in cinder.
+ // More info: https://examples.k8s.io/mysql-cinder-pd/README.md
optional string volumeID = 1;
// Filesystem type to mount.
// Must be a filesystem type supported by the host operating system.
// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
+ // More info: https://examples.k8s.io/mysql-cinder-pd/README.md
// +optional
optional string fsType = 2;
// Optional: Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
- // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
+ // More info: https://examples.k8s.io/mysql-cinder-pd/README.md
// +optional
optional bool readOnly = 3;
@@ -1141,6 +1141,179 @@ message EnvVarSource {
optional SecretKeySelector secretKeyRef = 4;
}
+// An EphemeralContainer is a special type of container which doesn't come with any resource
+// or scheduling guarantees but can be added to a pod that has already been created. They are
+// intended for user-initiated activities such as troubleshooting a running pod.
+// Ephemeral containers will not be restarted when they exit, and they will be killed if the
+// pod is removed or restarted. If an ephemeral container causes a pod to exceed its resource
+// allocation, the pod may be evicted.
+// Ephemeral containers are added via a pod's ephemeralcontainers subresource and will appear
+// in the pod spec once added. No fields in EphemeralContainer may be changed once added.
+// This is an alpha feature enabled by the EphemeralContainers feature flag.
+message EphemeralContainer {
+ optional EphemeralContainerCommon ephemeralContainerCommon = 1;
+
+ // If set, the name of the container from PodSpec that this ephemeral container targets.
+ // The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.
+ // If not set then the ephemeral container is run in whatever namespaces are shared
+ // for the pod. Note that the container runtime must support this feature.
+ // +optional
+ optional string targetContainerName = 2;
+}
+
+message EphemeralContainerCommon {
+ // Name of the ephemeral container specified as a DNS_LABEL.
+ // This name must be unique among all containers, init containers and ephemeral containers.
+ optional string name = 1;
+
+ // Docker image name.
+ // More info: https://kubernetes.io/docs/concepts/containers/images
+ optional string image = 2;
+
+ // Entrypoint array. Not executed within a shell.
+ // The docker image's ENTRYPOINT is used if this is not provided.
+ // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
+ // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax
+ // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,
+ // regardless of whether the variable exists or not.
+ // Cannot be updated.
+ // More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
+ // +optional
+ repeated string command = 3;
+
+ // Arguments to the entrypoint.
+ // The docker image's CMD is used if this is not provided.
+ // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
+ // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax
+ // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,
+ // regardless of whether the variable exists or not.
+ // Cannot be updated.
+ // More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
+ // +optional
+ repeated string args = 4;
+
+ // Container's working directory.
+ // If not specified, the container runtime's default will be used, which
+ // might be configured in the container image.
+ // Cannot be updated.
+ // +optional
+ optional string workingDir = 5;
+
+ // Ports are not allowed for ephemeral containers.
+ repeated ContainerPort ports = 6;
+
+ // List of sources to populate environment variables in the container.
+ // The keys defined within a source must be a C_IDENTIFIER. All invalid keys
+ // will be reported as an event when the container is starting. When a key exists in multiple
+ // sources, the value associated with the last source will take precedence.
+ // Values defined by an Env with a duplicate key will take precedence.
+ // Cannot be updated.
+ // +optional
+ repeated EnvFromSource envFrom = 19;
+
+ // List of environment variables to set in the container.
+ // Cannot be updated.
+ // +optional
+ // +patchMergeKey=name
+ // +patchStrategy=merge
+ repeated EnvVar env = 7;
+
+ // Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
+ // already allocated to the pod.
+ // +optional
+ optional ResourceRequirements resources = 8;
+
+ // Pod volumes to mount into the container's filesystem.
+ // Cannot be updated.
+ // +optional
+ // +patchMergeKey=mountPath
+ // +patchStrategy=merge
+ repeated VolumeMount volumeMounts = 9;
+
+ // volumeDevices is the list of block devices to be used by the container.
+ // This is a beta feature.
+ // +patchMergeKey=devicePath
+ // +patchStrategy=merge
+ // +optional
+ repeated VolumeDevice volumeDevices = 21;
+
+ // Probes are not allowed for ephemeral containers.
+ // +optional
+ optional Probe livenessProbe = 10;
+
+ // Probes are not allowed for ephemeral containers.
+ // +optional
+ optional Probe readinessProbe = 11;
+
+ // Lifecycle is not allowed for ephemeral containers.
+ // +optional
+ optional Lifecycle lifecycle = 12;
+
+ // Optional: Path at which the file to which the container's termination message
+ // will be written is mounted into the container's filesystem.
+ // Message written is intended to be brief final status, such as an assertion failure message.
+ // Will be truncated by the node if greater than 4096 bytes. The total message length across
+ // all containers will be limited to 12kb.
+ // Defaults to /dev/termination-log.
+ // Cannot be updated.
+ // +optional
+ optional string terminationMessagePath = 13;
+
+ // Indicate how the termination message should be populated. File will use the contents of
+ // terminationMessagePath to populate the container status message on both success and failure.
+ // FallbackToLogsOnError will use the last chunk of container log output if the termination
+ // message file is empty and the container exited with an error.
+ // The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
+ // Defaults to File.
+ // Cannot be updated.
+ // +optional
+ optional string terminationMessagePolicy = 20;
+
+ // Image pull policy.
+ // One of Always, Never, IfNotPresent.
+ // Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
+ // Cannot be updated.
+ // More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
+ // +optional
+ optional string imagePullPolicy = 14;
+
+ // SecurityContext is not allowed for ephemeral containers.
+ // +optional
+ optional SecurityContext securityContext = 15;
+
+ // Whether this container should allocate a buffer for stdin in the container runtime. If this
+ // is not set, reads from stdin in the container will always result in EOF.
+ // Default is false.
+ // +optional
+ optional bool stdin = 16;
+
+ // Whether the container runtime should close the stdin channel after it has been opened by
+ // a single attach. When stdin is true the stdin stream will remain open across multiple attach
+ // sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
+ // first client attaches to stdin, and then remains open and accepts data until the client disconnects,
+ // at which time stdin is closed and remains closed until the container is restarted. If this
+ // flag is false, a container processes that reads from stdin will never receive an EOF.
+ // Default is false
+ // +optional
+ optional bool stdinOnce = 17;
+
+ // Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
+ // Default is false.
+ // +optional
+ optional bool tty = 18;
+}
+
+// A list of ephemeral containers used in API operations
+message EphemeralContainers {
+ // +optional
+ optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
+
+ // The new set of ephemeral containers to use for a pod.
+ // +patchMergeKey=name
+ // +patchStrategy=merge
+ repeated EphemeralContainer ephemeralContainers = 2;
+}
+
// Event is a report of an event somewhere in the cluster.
message Event {
// Standard object's metadata.
@@ -1418,22 +1591,22 @@ message GitRepoVolumeSource {
// Glusterfs volumes do not support ownership management or SELinux relabeling.
message GlusterfsPersistentVolumeSource {
// EndpointsName is the endpoint name that details Glusterfs topology.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
+ // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
optional string endpoints = 1;
// Path is the Glusterfs volume path.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
+ // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
optional string path = 2;
// ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions.
// Defaults to false.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
+ // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
// +optional
optional bool readOnly = 3;
// EndpointsNamespace is the namespace that contains Glusterfs endpoint.
// If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
+ // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
// +optional
optional string endpointsNamespace = 4;
}
@@ -1442,16 +1615,16 @@ message GlusterfsPersistentVolumeSource {
// Glusterfs volumes do not support ownership management or SELinux relabeling.
message GlusterfsVolumeSource {
// EndpointsName is the endpoint name that details Glusterfs topology.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
+ // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
optional string endpoints = 1;
// Path is the Glusterfs volume path.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
+ // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
optional string path = 2;
// ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions.
// Defaults to false.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
+ // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
// +optional
optional bool readOnly = 3;
}
@@ -2084,6 +2257,13 @@ message NodeSpec {
// +optional
optional string podCIDR = 1;
+ // podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
+ // field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
+ // each of IPv4 and IPv6.
+ // +optional
+ // +patchStrategy=merge
+ repeated string podCIDRs = 7;
+
// ID of the node assigned by the cloud provider in the format: <ProviderName>://<ProviderSpecificNodeID>
// +optional
optional string providerID = 3;
@@ -2136,6 +2316,9 @@ message NodeStatus {
// List of addresses reachable to the node.
// Queried from cloud provider, if available.
// More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
+ // Note: This field is declared as mergeable, but the merge key is not sufficiently
+ // unique, which can cause data corruption when it is merged. Callers should instead
+ // use a full-replacement patch. See http://pr.k8s.io/79391 for an example.
// +optional
// +patchMergeKey=type
// +patchStrategy=merge
@@ -2456,7 +2639,7 @@ message PersistentVolumeSource {
// Glusterfs represents a Glusterfs volume that is attached to a host and
// exposed to the pod. Provisioned by an admin.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md
+ // More info: https://examples.k8s.io/volumes/glusterfs/README.md
// +optional
optional GlusterfsPersistentVolumeSource glusterfs = 4;
@@ -2466,7 +2649,7 @@ message PersistentVolumeSource {
optional NFSVolumeSource nfs = 5;
// RBD represents a Rados Block Device mount on the host that shares a pod's lifetime.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md
+ // More info: https://examples.k8s.io/volumes/rbd/README.md
// +optional
optional RBDPersistentVolumeSource rbd = 6;
@@ -2475,8 +2658,8 @@ message PersistentVolumeSource {
// +optional
optional ISCSIPersistentVolumeSource iscsi = 7;
- // Cinder represents a cinder volume attached and mounted on kubelets host machine
- // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
+ // Cinder represents a cinder volume attached and mounted on kubelets host machine.
+ // More info: https://examples.k8s.io/mysql-cinder-pd/README.md
// +optional
optional CinderPersistentVolumeSource cinder = 8;
@@ -2529,7 +2712,7 @@ message PersistentVolumeSource {
optional LocalVolumeSource local = 20;
// StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
- // More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md
+ // More info: https://examples.k8s.io/volumes/storageos/README.md
// +optional
optional StorageOSPersistentVolumeSource storageos = 21;
@@ -2842,6 +3025,14 @@ message PodExecOptions {
repeated string command = 6;
}
+// IP address information for entries in the (plural) PodIPs field.
+// Each entry includes:
+// IP: An IP address allocated to the pod. Routable at least within the cluster.
+message PodIP {
+ // ip is an IP address (IPv4 or IPv6) assigned to the pod
+ optional string ip = 1;
+}
+
// PodList is a list of Pods.
message PodList {
// Standard list metadata.
@@ -2937,7 +3128,9 @@ message PodSecurityContext {
// +optional
optional SELinuxOptions seLinuxOptions = 1;
- // Windows security options.
+ // The Windows specific settings applied to all containers.
+ // If unspecified, the options within a container's SecurityContext will be used.
+ // If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
// +optional
optional WindowsSecurityContextOptions windowsOptions = 8;
@@ -3032,6 +3225,18 @@ message PodSpec {
// +patchStrategy=merge
repeated Container containers = 2;
+ // EphemeralContainers is the list of ephemeral containers that run in this pod. Ephemeral containers
+ // are added to an existing pod as a result of a user-initiated action such as troubleshooting.
+ // This list is read-only in the pod spec. It may not be specified in a create or modified in an
+ // update of a pod or pod template.
+ // To add an ephemeral container use the pod's ephemeralcontainers subresource, which allows update
+ // using the EphemeralContainers kind.
+ // This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.
+ // +optional
+ // +patchMergeKey=name
+ // +patchStrategy=merge
+ repeated EphemeralContainer ephemeralContainers = 34;
+
// Restart policy for all containers within the pod.
// One of Always, OnFailure, Never.
// Default to Always.
@@ -3226,6 +3431,19 @@ message PodSpec {
// This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.
// +optional
map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> overhead = 32;
+
+ // TopologySpreadConstraints describes how a group of pods ought to spread across topology
+ // domains. Scheduler will schedule pods in a way which abides by the constraints.
+ // This field is alpha-level and is only honored by clusters that enables the EvenPodsSpread
+ // feature.
+ // All topologySpreadConstraints are ANDed.
+ // +optional
+ // +patchMergeKey=topologyKey
+ // +patchStrategy=merge
+ // +listType=map
+ // +listMapKey=topologyKey
+ // +listMapKey=whenUnsatisfiable
+ repeated TopologySpreadConstraint topologySpreadConstraints = 33;
}
// PodStatus represents information about the status of a pod. Status may trail the actual
@@ -3288,6 +3506,14 @@ message PodStatus {
// +optional
optional string podIP = 6;
+ // podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
+ // match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
+ // is empty if no IPs have been allocated yet.
+ // +optional
+ // +patchStrategy=merge
+ // +patchMergeKey=ip
+ repeated PodIP podIPs = 12;
+
// RFC 3339 date and time at which the object was acknowledged by the Kubelet.
// This is before the Kubelet pulled the container image(s) for the pod.
// +optional
@@ -3310,6 +3536,11 @@ message PodStatus {
// More info: https://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md
// +optional
optional string qosClass = 9;
+
+ // Status for any ephemeral containers that running in this pod.
+ // This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.
+ // +optional
+ repeated ContainerStatus ephemeralContainerStatuses = 13;
}
// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded
@@ -3500,11 +3731,11 @@ message QuobyteVolumeSource {
// RBD volumes support ownership management and SELinux relabeling.
message RBDPersistentVolumeSource {
// A collection of Ceph monitors.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
repeated string monitors = 1;
// The rados image name.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
optional string image = 2;
// Filesystem type of the volume that you want to mount.
@@ -3517,32 +3748,32 @@ message RBDPersistentVolumeSource {
// The rados pool name.
// Default is rbd.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
// +optional
optional string pool = 4;
// The rados user name.
// Default is admin.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
// +optional
optional string user = 5;
// Keyring is the path to key ring for RBDUser.
// Default is /etc/ceph/keyring.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
// +optional
optional string keyring = 6;
// SecretRef is name of the authentication secret for RBDUser. If provided
// overrides keyring.
// Default is nil.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
// +optional
optional SecretReference secretRef = 7;
// ReadOnly here will force the ReadOnly setting in VolumeMounts.
// Defaults to false.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
// +optional
optional bool readOnly = 8;
}
@@ -3551,11 +3782,11 @@ message RBDPersistentVolumeSource {
// RBD volumes support ownership management and SELinux relabeling.
message RBDVolumeSource {
// A collection of Ceph monitors.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
repeated string monitors = 1;
// The rados image name.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
optional string image = 2;
// Filesystem type of the volume that you want to mount.
@@ -3568,32 +3799,32 @@ message RBDVolumeSource {
// The rados pool name.
// Default is rbd.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
// +optional
optional string pool = 4;
// The rados user name.
// Default is admin.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
// +optional
optional string user = 5;
// Keyring is the path to key ring for RBDUser.
// Default is /etc/ceph/keyring.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
// +optional
optional string keyring = 6;
// SecretRef is name of the authentication secret for RBDUser. If provided
// overrides keyring.
// Default is nil.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
// +optional
optional LocalObjectReference secretRef = 7;
// ReadOnly here will force the ReadOnly setting in VolumeMounts.
// Defaults to false.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
+ // More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
// +optional
optional bool readOnly = 8;
}
@@ -4113,7 +4344,9 @@ message SecurityContext {
// +optional
optional SELinuxOptions seLinuxOptions = 3;
- // Windows security options.
+ // The Windows specific settings applied to all containers.
+ // If unspecified, the options from the PodSecurityContext will be used.
+ // If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
// +optional
optional WindowsSecurityContextOptions windowsOptions = 10;
@@ -4612,6 +4845,59 @@ message TopologySelectorTerm {
repeated TopologySelectorLabelRequirement matchLabelExpressions = 1;
}
+// TopologySpreadConstraint specifies how to spread matching pods among the given topology.
+message TopologySpreadConstraint {
+ // MaxSkew describes the degree to which pods may be unevenly distributed.
+ // It's the maximum permitted difference between the number of matching pods in
+ // any two topology domains of a given topology type.
+ // For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
+ // labelSelector spread as 1/1/0:
+ // +-------+-------+-------+
+ // | zone1 | zone2 | zone3 |
+ // +-------+-------+-------+
+ // | P | P | |
+ // +-------+-------+-------+
+ // - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1;
+ // scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2)
+ // violate MaxSkew(1).
+ // - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
+ // It's a required field. Default value is 1 and 0 is not allowed.
+ optional int32 maxSkew = 1;
+
+ // TopologyKey is the key of node labels. Nodes that have a label with this key
+ // and identical values are considered to be in the same topology.
+ // We consider each <key, value> as a "bucket", and try to put balanced number
+ // of pods into each bucket.
+ // It's a required field.
+ optional string topologyKey = 2;
+
+ // WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
+ // the spread constraint.
+ // - DoNotSchedule (default) tells the scheduler not to schedule it
+ // - ScheduleAnyway tells the scheduler to still schedule it
+ // It's considered as "Unsatisfiable" if and only if placing incoming pod on any
+ // topology violates "MaxSkew".
+ // For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
+ // labelSelector spread as 3/1/1:
+ // +-------+-------+-------+
+ // | zone1 | zone2 | zone3 |
+ // +-------+-------+-------+
+ // | P P P | P | P |
+ // +-------+-------+-------+
+ // If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
+ // to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
+ // MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
+ // won't make it *more* imbalanced.
+ // It's a required field.
+ optional string whenUnsatisfiable = 3;
+
+ // LabelSelector is used to find matching pods.
+ // Pods that match this label selector are counted to determine the number of pods
+ // in their corresponding topology domain.
+ // +optional
+ optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;
+}
+
// TypedLocalObjectReference contains enough information to let you locate the
// typed referenced object inside the same namespace.
message TypedLocalObjectReference {
@@ -4760,12 +5046,12 @@ message VolumeSource {
// ISCSI represents an ISCSI Disk resource that is attached to a
// kubelet's host machine and then exposed to the pod.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md
+ // More info: https://examples.k8s.io/volumes/iscsi/README.md
// +optional
optional ISCSIVolumeSource iscsi = 8;
// Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md
+ // More info: https://examples.k8s.io/volumes/glusterfs/README.md
// +optional
optional GlusterfsVolumeSource glusterfs = 9;
@@ -4776,7 +5062,7 @@ message VolumeSource {
optional PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;
// RBD represents a Rados Block Device mount on the host that shares a pod's lifetime.
- // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md
+ // More info: https://examples.k8s.io/volumes/rbd/README.md
// +optional
optional RBDVolumeSource rbd = 11;
@@ -4785,8 +5071,8 @@ message VolumeSource {
// +optional
optional FlexVolumeSource flexVolume = 12;
- // Cinder represents a cinder volume attached and mounted on kubelets host machine
- // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
+ // Cinder represents a cinder volume attached and mounted on kubelets host machine.
+ // More info: https://examples.k8s.io/mysql-cinder-pd/README.md
// +optional
optional CinderVolumeSource cinder = 13;
@@ -4892,5 +5178,13 @@ message WindowsSecurityContextOptions {
// This field is alpha-level and is only honored by servers that enable the WindowsGMSA feature flag.
// +optional
optional string gmsaCredentialSpec = 2;
+
+ // The UserName in Windows to run the entrypoint of the container process.
+ // Defaults to the user specified in image metadata if unspecified.
+ // May also be set in PodSecurityContext. If set in both SecurityContext and
+ // PodSecurityContext, the value specified in SecurityContext takes precedence.
+ // This field is alpha-level and it is only honored by servers that enable the WindowsRunAsUserName feature flag.
+ // +optional
+ optional string runAsUserName = 3;
}