From a2600e4a3fff17f659293dacfc9afb26fd5eac09 Mon Sep 17 00:00:00 2001
From: Nikhil-Ladha <nikhilladha1999@gmail.com>
Date: Fri, 15 Mar 2024 11:31:12 +0530
Subject: [PATCH] Add generated changes for rook api update

Add generated changes for rook api update

Signed-off-by: Nikhil-Ladha <nikhilladha1999@gmail.com>
---
 .../ocs.openshift.io_storageclusters.yaml     | 1026 ++++++++++++++---
 .../ocs/ocs.openshift.io_storageclusters.yaml | 1026 ++++++++++++++---
 .../manifests/storagecluster.crd.yaml         | 1026 ++++++++++++++---
 3 files changed, 2610 insertions(+), 468 deletions(-)

diff --git a/config/crd/bases/ocs.openshift.io_storageclusters.yaml b/config/crd/bases/ocs.openshift.io_storageclusters.yaml
index a9f0232926..998f47c8c5 100644
--- a/config/crd/bases/ocs.openshift.io_storageclusters.yaml
+++ b/config/crd/bases/ocs.openshift.io_storageclusters.yaml
@@ -205,30 +205,6 @@ spec:
                               must still be higher than capacity recorded in the status
                               field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                             properties:
-                              claims:
-                                description: "Claims lists the names of resources,
-                                  defined in spec.resourceClaims, that are used by
-                                  this container. \n This is an alpha field and requires
-                                  enabling the DynamicResourceAllocation feature gate.
-                                  \n This field is immutable. It can only be set for
-                                  containers."
-                                items:
-                                  description: ResourceClaim references one entry
-                                    in PodSpec.ResourceClaims.
-                                  properties:
-                                    name:
-                                      description: Name must match the name of one
-                                        entry in pod.spec.resourceClaims of the Pod
-                                        where this field is used. It makes that resource
-                                        available inside a container.
-                                      type: string
-                                  required:
-                                  - name
-                                  type: object
-                                type: array
-                                x-kubernetes-list-map-keys:
-                                - name
-                                x-kubernetes-list-type: map
                               limits:
                                 additionalProperties:
                                   anyOf:
@@ -305,6 +281,26 @@ spec:
                             description: 'storageClassName is the name of the StorageClass
                               required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                             type: string
+                          volumeAttributesClassName:
+                            description: 'volumeAttributesClassName may be used to
+                              set the VolumeAttributesClass used by this claim. If
+                              specified, the CSI driver will create or update the
+                              volume with the attributes defined in the corresponding
+                              VolumeAttributesClass. This has a different purpose
+                              than storageClassName, it can be changed after the claim
+                              is created. An empty string value means that no VolumeAttributesClass
+                              will be applied to the claim but it''s not allowed to
+                              reset this field to empty string once it is set. If
+                              unspecified and the PersistentVolumeClaim is unbound,
+                              the default VolumeAttributesClass will be set by the
+                              persistentvolume controller if it exists. If the resource
+                              referred to by volumeAttributesClass does not exist,
+                              this PersistentVolumeClaim will be set to a Pending
+                              state, as reflected by the modifyVolumeStatus field,
+                              until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                              (Alpha) Using this field requires the VolumeAttributesClass
+                              feature gate to be enabled.'
+                            type: string
                           volumeMode:
                             description: volumeMode defines what type of volume is
                               required by the claim. Value of Filesystem is implied
@@ -453,6 +449,42 @@ spec:
                               - type
                               type: object
                             type: array
+                          currentVolumeAttributesClassName:
+                            description: currentVolumeAttributesClassName is the current
+                              name of the VolumeAttributesClass the PVC is using.
+                              When unset, there is no VolumeAttributeClass applied
+                              to this PersistentVolumeClaim This is an alpha field
+                              and requires enabling VolumeAttributesClass feature.
+                            type: string
+                          modifyVolumeStatus:
+                            description: ModifyVolumeStatus represents the status
+                              object of ControllerModifyVolume operation. When this
+                              is unset, there is no ModifyVolume operation being attempted.
+                              This is an alpha field and requires enabling VolumeAttributesClass
+                              feature.
+                            properties:
+                              status:
+                                description: 'status is the status of the ControllerModifyVolume
+                                  operation. It can be in any of following states:
+                                  - Pending Pending indicates that the PersistentVolumeClaim
+                                  cannot be modified due to unmet requirements, such
+                                  as the specified VolumeAttributesClass not existing.
+                                  - InProgress InProgress indicates that the volume
+                                  is being modified. - Infeasible Infeasible indicates
+                                  that the request has been rejected as invalid by
+                                  the CSI driver. To resolve the error, a valid VolumeAttributesClass
+                                  needs to be specified. Note: New statuses can be
+                                  added in the future. Consumers should check for
+                                  unknown statuses and fail appropriately.'
+                                type: string
+                              targetVolumeAttributesClassName:
+                                description: targetVolumeAttributesClassName is the
+                                  name of the VolumeAttributesClass the PVC currently
+                                  being reconciled
+                                type: string
+                            required:
+                            - status
+                            type: object
                           phase:
                             description: phase represents the current phase of PersistentVolumeClaim.
                             type: string
@@ -958,30 +990,6 @@ spec:
                                   value but must still be higher than capacity recorded
                                   in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                                 properties:
-                                  claims:
-                                    description: "Claims lists the names of resources,
-                                      defined in spec.resourceClaims, that are used
-                                      by this container. \n This is an alpha field
-                                      and requires enabling the DynamicResourceAllocation
-                                      feature gate. \n This field is immutable. It
-                                      can only be set for containers."
-                                    items:
-                                      description: ResourceClaim references one entry
-                                        in PodSpec.ResourceClaims.
-                                      properties:
-                                        name:
-                                          description: Name must match the name of
-                                            one entry in pod.spec.resourceClaims of
-                                            the Pod where this field is used. It makes
-                                            that resource available inside a container.
-                                          type: string
-                                      required:
-                                      - name
-                                      type: object
-                                    type: array
-                                    x-kubernetes-list-map-keys:
-                                    - name
-                                    x-kubernetes-list-type: map
                                   limits:
                                     additionalProperties:
                                       anyOf:
@@ -1060,6 +1068,27 @@ spec:
                                 description: 'storageClassName is the name of the
                                   StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                                 type: string
+                              volumeAttributesClassName:
+                                description: 'volumeAttributesClassName may be used
+                                  to set the VolumeAttributesClass used by this claim.
+                                  If specified, the CSI driver will create or update
+                                  the volume with the attributes defined in the corresponding
+                                  VolumeAttributesClass. This has a different purpose
+                                  than storageClassName, it can be changed after the
+                                  claim is created. An empty string value means that
+                                  no VolumeAttributesClass will be applied to the
+                                  claim but it''s not allowed to reset this field
+                                  to empty string once it is set. If unspecified and
+                                  the PersistentVolumeClaim is unbound, the default
+                                  VolumeAttributesClass will be set by the persistentvolume
+                                  controller if it exists. If the resource referred
+                                  to by volumeAttributesClass does not exist, this
+                                  PersistentVolumeClaim will be set to a Pending state,
+                                  as reflected by the modifyVolumeStatus field, until
+                                  such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                                  (Alpha) Using this field requires the VolumeAttributesClass
+                                  feature gate to be enabled.'
+                                type: string
                               volumeMode:
                                 description: volumeMode defines what type of volume
                                   is required by the claim. Value of Filesystem is
@@ -1218,6 +1247,44 @@ spec:
                                   - type
                                   type: object
                                 type: array
+                              currentVolumeAttributesClassName:
+                                description: currentVolumeAttributesClassName is the
+                                  current name of the VolumeAttributesClass the PVC
+                                  is using. When unset, there is no VolumeAttributeClass
+                                  applied to this PersistentVolumeClaim This is an
+                                  alpha field and requires enabling VolumeAttributesClass
+                                  feature.
+                                type: string
+                              modifyVolumeStatus:
+                                description: ModifyVolumeStatus represents the status
+                                  object of ControllerModifyVolume operation. When
+                                  this is unset, there is no ModifyVolume operation
+                                  being attempted. This is an alpha field and requires
+                                  enabling VolumeAttributesClass feature.
+                                properties:
+                                  status:
+                                    description: 'status is the status of the ControllerModifyVolume
+                                      operation. It can be in any of following states:
+                                      - Pending Pending indicates that the PersistentVolumeClaim
+                                      cannot be modified due to unmet requirements,
+                                      such as the specified VolumeAttributesClass
+                                      not existing. - InProgress InProgress indicates
+                                      that the volume is being modified. - Infeasible
+                                      Infeasible indicates that the request has been
+                                      rejected as invalid by the CSI driver. To resolve
+                                      the error, a valid VolumeAttributesClass needs
+                                      to be specified. Note: New statuses can be added
+                                      in the future. Consumers should check for unknown
+                                      statuses and fail appropriately.'
+                                    type: string
+                                  targetVolumeAttributesClassName:
+                                    description: targetVolumeAttributesClassName is
+                                      the name of the VolumeAttributesClass the PVC
+                                      currently being reconciled
+                                    type: string
+                                required:
+                                - status
+                                type: object
                               phase:
                                 description: phase represents the current phase of
                                   PersistentVolumeClaim.
@@ -1438,28 +1505,6 @@ spec:
                           than capacity recorded in the status field of the claim.
                           More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                         properties:
-                          claims:
-                            description: "Claims lists the names of resources, defined
-                              in spec.resourceClaims, that are used by this container.
-                              \n This is an alpha field and requires enabling the
-                              DynamicResourceAllocation feature gate. \n This field
-                              is immutable. It can only be set for containers."
-                            items:
-                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
-                              properties:
-                                name:
-                                  description: Name must match the name of one entry
-                                    in pod.spec.resourceClaims of the Pod where this
-                                    field is used. It makes that resource available
-                                    inside a container.
-                                  type: string
-                              required:
-                              - name
-                              type: object
-                            type: array
-                            x-kubernetes-list-map-keys:
-                            - name
-                            x-kubernetes-list-type: map
                           limits:
                             additionalProperties:
                               anyOf:
@@ -1535,6 +1580,25 @@ spec:
                         description: 'storageClassName is the name of the StorageClass
                           required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                         type: string
+                      volumeAttributesClassName:
+                        description: 'volumeAttributesClassName may be used to set
+                          the VolumeAttributesClass used by this claim. If specified,
+                          the CSI driver will create or update the volume with the
+                          attributes defined in the corresponding VolumeAttributesClass.
+                          This has a different purpose than storageClassName, it can
+                          be changed after the claim is created. An empty string value
+                          means that no VolumeAttributesClass will be applied to the
+                          claim but it''s not allowed to reset this field to empty
+                          string once it is set. If unspecified and the PersistentVolumeClaim
+                          is unbound, the default VolumeAttributesClass will be set
+                          by the persistentvolume controller if it exists. If the
+                          resource referred to by volumeAttributesClass does not exist,
+                          this PersistentVolumeClaim will be set to a Pending state,
+                          as reflected by the modifyVolumeStatus field, until such
+                          as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                          (Alpha) Using this field requires the VolumeAttributesClass
+                          feature gate to be enabled.'
+                        type: string
                       volumeMode:
                         description: volumeMode defines what type of volume is required
                           by the claim. Value of Filesystem is implied when not included
@@ -1679,6 +1743,41 @@ spec:
                           - type
                           type: object
                         type: array
+                      currentVolumeAttributesClassName:
+                        description: currentVolumeAttributesClassName is the current
+                          name of the VolumeAttributesClass the PVC is using. When
+                          unset, there is no VolumeAttributeClass applied to this
+                          PersistentVolumeClaim This is an alpha field and requires
+                          enabling VolumeAttributesClass feature.
+                        type: string
+                      modifyVolumeStatus:
+                        description: ModifyVolumeStatus represents the status object
+                          of ControllerModifyVolume operation. When this is unset,
+                          there is no ModifyVolume operation being attempted. This
+                          is an alpha field and requires enabling VolumeAttributesClass
+                          feature.
+                        properties:
+                          status:
+                            description: 'status is the status of the ControllerModifyVolume
+                              operation. It can be in any of following states: - Pending
+                              Pending indicates that the PersistentVolumeClaim cannot
+                              be modified due to unmet requirements, such as the specified
+                              VolumeAttributesClass not existing. - InProgress InProgress
+                              indicates that the volume is being modified. - Infeasible
+                              Infeasible indicates that the request has been rejected
+                              as invalid by the CSI driver. To resolve the error,
+                              a valid VolumeAttributesClass needs to be specified.
+                              Note: New statuses can be added in the future. Consumers
+                              should check for unknown statuses and fail appropriately.'
+                            type: string
+                          targetVolumeAttributesClassName:
+                            description: targetVolumeAttributesClassName is the name
+                              of the VolumeAttributesClass the PVC currently being
+                              reconciled
+                            type: string
+                        required:
+                        - status
+                        type: object
                       phase:
                         description: phase represents the current phase of PersistentVolumeClaim.
                         type: string
@@ -1887,7 +1986,10 @@ spec:
                       listen on both IPv4 and IPv6
                     type: boolean
                   hostNetwork:
-                    description: HostNetwork to enable host network
+                    description: HostNetwork to enable host network. If host networking
+                      is enabled or disabled on a running cluster, then the operator
+                      will automatically fail over all the mons to apply the new network
+                      settings.
                     type: boolean
                   ipFamily:
                     description: IPFamily is the single stack IPv6 or IPv4 protocol
@@ -1914,7 +2016,10 @@ spec:
                     type: object
                   provider:
                     description: Provider is what provides network connectivity to
-                      the cluster e.g. "host" or "multus"
+                      the cluster e.g. "host" or "multus". If the Provider is updated
+                      from being empty to "host" on a running cluster, then the operator
+                      will automatically fail over all the mons to apply the "host"
+                      network settings.
                     enum:
                     - ""
                     - host
@@ -1956,6 +2061,10 @@ spec:
                     multus
                   rule: '!has(self.provider) || (self.provider != ''multus'' || (self.provider
                     == ''multus'' && size(self.selectors) > 0))'
+                - message: the legacy hostNetwork setting can only be set if the network.provider
+                    is set to the empty string
+                  rule: '!has(self.hostNetwork) || self.hostNetwork == false || !has(self.provider)
+                    || self.provider == ""'
               nfs:
                 description: NFSSpec defines specific nfs configuration options
                 properties:
@@ -2319,7 +2428,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -2369,6 +2479,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -2481,7 +2631,8 @@ spec:
                             properties:
                               labelSelector:
                                 description: A label query over a set of resources,
-                                  in this case pods.
+                                  in this case pods. If it's null, this PodAffinityTerm
+                                  matches with no Pods.
                                 properties:
                                   matchExpressions:
                                     description: matchExpressions is a list of label
@@ -2528,6 +2679,44 @@ spec:
                                     type: object
                                 type: object
                                 x-kubernetes-map-type: atomic
+                              matchLabelKeys:
+                                description: MatchLabelKeys is a set of pod label
+                                  keys to select which pods will be taken into consideration.
+                                  The keys are used to lookup values from the incoming
+                                  pod labels, those key-value labels are merged with
+                                  `LabelSelector` as `key in (value)` to select the
+                                  group of existing pods which pods will be taken
+                                  into consideration for the incoming pod's pod (anti)
+                                  affinity. Keys that don't exist in the incoming
+                                  pod labels will be ignored. The default value is
+                                  empty. The same key is forbidden to exist in both
+                                  MatchLabelKeys and LabelSelector. Also, MatchLabelKeys
+                                  cannot be set when LabelSelector isn't set. This
+                                  is an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                  feature gate.
+                                items:
+                                  type: string
+                                type: array
+                                x-kubernetes-list-type: atomic
+                              mismatchLabelKeys:
+                                description: MismatchLabelKeys is a set of pod label
+                                  keys to select which pods will be taken into consideration.
+                                  The keys are used to lookup values from the incoming
+                                  pod labels, those key-value labels are merged with
+                                  `LabelSelector` as `key notin (value)` to select
+                                  the group of existing pods which pods will be taken
+                                  into consideration for the incoming pod's pod (anti)
+                                  affinity. Keys that don't exist in the incoming
+                                  pod labels will be ignored. The default value is
+                                  empty. The same key is forbidden to exist in both
+                                  MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys
+                                  cannot be set when LabelSelector isn't set. This
+                                  is an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                  feature gate.
+                                items:
+                                  type: string
+                                type: array
+                                x-kubernetes-list-type: atomic
                               namespaceSelector:
                                 description: A label query over the set of namespaces
                                   that the term applies to. The term is applied to
@@ -2634,7 +2823,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -2684,6 +2874,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -2796,7 +3026,8 @@ spec:
                             properties:
                               labelSelector:
                                 description: A label query over a set of resources,
-                                  in this case pods.
+                                  in this case pods. If it's null, this PodAffinityTerm
+                                  matches with no Pods.
                                 properties:
                                   matchExpressions:
                                     description: matchExpressions is a list of label
@@ -2843,6 +3074,44 @@ spec:
                                     type: object
                                 type: object
                                 x-kubernetes-map-type: atomic
+                              matchLabelKeys:
+                                description: MatchLabelKeys is a set of pod label
+                                  keys to select which pods will be taken into consideration.
+                                  The keys are used to lookup values from the incoming
+                                  pod labels, those key-value labels are merged with
+                                  `LabelSelector` as `key in (value)` to select the
+                                  group of existing pods which pods will be taken
+                                  into consideration for the incoming pod's pod (anti)
+                                  affinity. Keys that don't exist in the incoming
+                                  pod labels will be ignored. The default value is
+                                  empty. The same key is forbidden to exist in both
+                                  MatchLabelKeys and LabelSelector. Also, MatchLabelKeys
+                                  cannot be set when LabelSelector isn't set. This
+                                  is an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                  feature gate.
+                                items:
+                                  type: string
+                                type: array
+                                x-kubernetes-list-type: atomic
+                              mismatchLabelKeys:
+                                description: MismatchLabelKeys is a set of pod label
+                                  keys to select which pods will be taken into consideration.
+                                  The keys are used to lookup values from the incoming
+                                  pod labels, those key-value labels are merged with
+                                  `LabelSelector` as `key notin (value)` to select
+                                  the group of existing pods which pods will be taken
+                                  into consideration for the incoming pod's pod (anti)
+                                  affinity. Keys that don't exist in the incoming
+                                  pod labels will be ignored. The default value is
+                                  empty. The same key is forbidden to exist in both
+                                  MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys
+                                  cannot be set when LabelSelector isn't set. This
+                                  is an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                  feature gate.
+                                items:
+                                  type: string
+                                type: array
+                                x-kubernetes-list-type: atomic
                               namespaceSelector:
                                 description: A label query over the set of namespaces
                                   that the term applies to. The term is applied to
@@ -3394,30 +3663,6 @@ spec:
                                 must still be higher than capacity recorded in the
                                 status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                               properties:
-                                claims:
-                                  description: "Claims lists the names of resources,
-                                    defined in spec.resourceClaims, that are used
-                                    by this container. \n This is an alpha field and
-                                    requires enabling the DynamicResourceAllocation
-                                    feature gate. \n This field is immutable. It can
-                                    only be set for containers."
-                                  items:
-                                    description: ResourceClaim references one entry
-                                      in PodSpec.ResourceClaims.
-                                    properties:
-                                      name:
-                                        description: Name must match the name of one
-                                          entry in pod.spec.resourceClaims of the
-                                          Pod where this field is used. It makes that
-                                          resource available inside a container.
-                                        type: string
-                                    required:
-                                    - name
-                                    type: object
-                                  type: array
-                                  x-kubernetes-list-map-keys:
-                                  - name
-                                  x-kubernetes-list-type: map
                                 limits:
                                   additionalProperties:
                                     anyOf:
@@ -3495,6 +3740,27 @@ spec:
                               description: 'storageClassName is the name of the StorageClass
                                 required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                               type: string
+                            volumeAttributesClassName:
+                              description: 'volumeAttributesClassName may be used
+                                to set the VolumeAttributesClass used by this claim.
+                                If specified, the CSI driver will create or update
+                                the volume with the attributes defined in the corresponding
+                                VolumeAttributesClass. This has a different purpose
+                                than storageClassName, it can be changed after the
+                                claim is created. An empty string value means that
+                                no VolumeAttributesClass will be applied to the claim
+                                but it''s not allowed to reset this field to empty
+                                string once it is set. If unspecified and the PersistentVolumeClaim
+                                is unbound, the default VolumeAttributesClass will
+                                be set by the persistentvolume controller if it exists.
+                                If the resource referred to by volumeAttributesClass
+                                does not exist, this PersistentVolumeClaim will be
+                                set to a Pending state, as reflected by the modifyVolumeStatus
+                                field, until such as a resource exists. More info:
+                                https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                                (Alpha) Using this field requires the VolumeAttributesClass
+                                feature gate to be enabled.'
+                              type: string
                             volumeMode:
                               description: volumeMode defines what type of volume
                                 is required by the claim. Value of Filesystem is implied
@@ -3645,6 +3911,44 @@ spec:
                                 - type
                                 type: object
                               type: array
+                            currentVolumeAttributesClassName:
+                              description: currentVolumeAttributesClassName is the
+                                current name of the VolumeAttributesClass the PVC
+                                is using. When unset, there is no VolumeAttributeClass
+                                applied to this PersistentVolumeClaim This is an alpha
+                                field and requires enabling VolumeAttributesClass
+                                feature.
+                              type: string
+                            modifyVolumeStatus:
+                              description: ModifyVolumeStatus represents the status
+                                object of ControllerModifyVolume operation. When this
+                                is unset, there is no ModifyVolume operation being
+                                attempted. This is an alpha field and requires enabling
+                                VolumeAttributesClass feature.
+                              properties:
+                                status:
+                                  description: 'status is the status of the ControllerModifyVolume
+                                    operation. It can be in any of following states:
+                                    - Pending Pending indicates that the PersistentVolumeClaim
+                                    cannot be modified due to unmet requirements,
+                                    such as the specified VolumeAttributesClass not
+                                    existing. - InProgress InProgress indicates that
+                                    the volume is being modified. - Infeasible Infeasible
+                                    indicates that the request has been rejected as
+                                    invalid by the CSI driver. To resolve the error,
+                                    a valid VolumeAttributesClass needs to be specified.
+                                    Note: New statuses can be added in the future.
+                                    Consumers should check for unknown statuses and
+                                    fail appropriately.'
+                                  type: string
+                                targetVolumeAttributesClassName:
+                                  description: targetVolumeAttributesClassName is
+                                    the name of the VolumeAttributesClass the PVC
+                                    currently being reconciled
+                                  type: string
+                              required:
+                              - status
+                              type: object
                             phase:
                               description: phase represents the current phase of PersistentVolumeClaim.
                               type: string
@@ -3821,30 +4125,6 @@ spec:
                                 must still be higher than capacity recorded in the
                                 status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                               properties:
-                                claims:
-                                  description: "Claims lists the names of resources,
-                                    defined in spec.resourceClaims, that are used
-                                    by this container. \n This is an alpha field and
-                                    requires enabling the DynamicResourceAllocation
-                                    feature gate. \n This field is immutable. It can
-                                    only be set for containers."
-                                  items:
-                                    description: ResourceClaim references one entry
-                                      in PodSpec.ResourceClaims.
-                                    properties:
-                                      name:
-                                        description: Name must match the name of one
-                                          entry in pod.spec.resourceClaims of the
-                                          Pod where this field is used. It makes that
-                                          resource available inside a container.
-                                        type: string
-                                    required:
-                                    - name
-                                    type: object
-                                  type: array
-                                  x-kubernetes-list-map-keys:
-                                  - name
-                                  x-kubernetes-list-type: map
                                 limits:
                                   additionalProperties:
                                     anyOf:
@@ -3922,6 +4202,27 @@ spec:
                               description: 'storageClassName is the name of the StorageClass
                                 required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                               type: string
+                            volumeAttributesClassName:
+                              description: 'volumeAttributesClassName may be used
+                                to set the VolumeAttributesClass used by this claim.
+                                If specified, the CSI driver will create or update
+                                the volume with the attributes defined in the corresponding
+                                VolumeAttributesClass. This has a different purpose
+                                than storageClassName, it can be changed after the
+                                claim is created. An empty string value means that
+                                no VolumeAttributesClass will be applied to the claim
+                                but it''s not allowed to reset this field to empty
+                                string once it is set. If unspecified and the PersistentVolumeClaim
+                                is unbound, the default VolumeAttributesClass will
+                                be set by the persistentvolume controller if it exists.
+                                If the resource referred to by volumeAttributesClass
+                                does not exist, this PersistentVolumeClaim will be
+                                set to a Pending state, as reflected by the modifyVolumeStatus
+                                field, until such as a resource exists. More info:
+                                https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                                (Alpha) Using this field requires the VolumeAttributesClass
+                                feature gate to be enabled.'
+                              type: string
                             volumeMode:
                               description: volumeMode defines what type of volume
                                 is required by the claim. Value of Filesystem is implied
@@ -4072,6 +4373,44 @@ spec:
                                 - type
                                 type: object
                               type: array
+                            currentVolumeAttributesClassName:
+                              description: currentVolumeAttributesClassName is the
+                                current name of the VolumeAttributesClass the PVC
+                                is using. When unset, there is no VolumeAttributeClass
+                                applied to this PersistentVolumeClaim This is an alpha
+                                field and requires enabling VolumeAttributesClass
+                                feature.
+                              type: string
+                            modifyVolumeStatus:
+                              description: ModifyVolumeStatus represents the status
+                                object of ControllerModifyVolume operation. When this
+                                is unset, there is no ModifyVolume operation being
+                                attempted. This is an alpha field and requires enabling
+                                VolumeAttributesClass feature.
+                              properties:
+                                status:
+                                  description: 'status is the status of the ControllerModifyVolume
+                                    operation. It can be in any of following states:
+                                    - Pending Pending indicates that the PersistentVolumeClaim
+                                    cannot be modified due to unmet requirements,
+                                    such as the specified VolumeAttributesClass not
+                                    existing. - InProgress InProgress indicates that
+                                    the volume is being modified. - Infeasible Infeasible
+                                    indicates that the request has been rejected as
+                                    invalid by the CSI driver. To resolve the error,
+                                    a valid VolumeAttributesClass needs to be specified.
+                                    Note: New statuses can be added in the future.
+                                    Consumers should check for unknown statuses and
+                                    fail appropriately.'
+                                  type: string
+                                targetVolumeAttributesClassName:
+                                  description: targetVolumeAttributesClassName is
+                                    the name of the VolumeAttributesClass the PVC
+                                    currently being reconciled
+                                  type: string
+                              required:
+                              - status
+                              type: object
                             phase:
                               description: phase represents the current phase of PersistentVolumeClaim.
                               type: string
@@ -4327,7 +4666,8 @@ spec:
                                     properties:
                                       labelSelector:
                                         description: A label query over a set of resources,
-                                          in this case pods.
+                                          in this case pods. If it's null, this PodAffinityTerm
+                                          matches with no Pods.
                                         properties:
                                           matchExpressions:
                                             description: matchExpressions is a list
@@ -4378,6 +4718,49 @@ spec:
                                             type: object
                                         type: object
                                         x-kubernetes-map-type: atomic
+                                      matchLabelKeys:
+                                        description: MatchLabelKeys is a set of pod
+                                          label keys to select which pods will be
+                                          taken into consideration. The keys are used
+                                          to lookup values from the incoming pod labels,
+                                          those key-value labels are merged with `LabelSelector`
+                                          as `key in (value)` to select the group
+                                          of existing pods which pods will be taken
+                                          into consideration for the incoming pod's
+                                          pod (anti) affinity. Keys that don't exist
+                                          in the incoming pod labels will be ignored.
+                                          The default value is empty. The same key
+                                          is forbidden to exist in both MatchLabelKeys
+                                          and LabelSelector. Also, MatchLabelKeys
+                                          cannot be set when LabelSelector isn't set.
+                                          This is an alpha field and requires enabling
+                                          MatchLabelKeysInPodAffinity feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
+                                      mismatchLabelKeys:
+                                        description: MismatchLabelKeys is a set of
+                                          pod label keys to select which pods will
+                                          be taken into consideration. The keys are
+                                          used to lookup values from the incoming
+                                          pod labels, those key-value labels are merged
+                                          with `LabelSelector` as `key notin (value)`
+                                          to select the group of existing pods which
+                                          pods will be taken into consideration for
+                                          the incoming pod's pod (anti) affinity.
+                                          Keys that don't exist in the incoming pod
+                                          labels will be ignored. The default value
+                                          is empty. The same key is forbidden to exist
+                                          in both MismatchLabelKeys and LabelSelector.
+                                          Also, MismatchLabelKeys cannot be set when
+                                          LabelSelector isn't set. This is an alpha
+                                          field and requires enabling MatchLabelKeysInPodAffinity
+                                          feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
                                       namespaceSelector:
                                         description: A label query over the set of
                                           namespaces that the term applies to. The
@@ -4495,7 +4878,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -4545,6 +4929,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -4656,7 +5080,8 @@ spec:
                                     properties:
                                       labelSelector:
                                         description: A label query over a set of resources,
-                                          in this case pods.
+                                          in this case pods. If it's null, this PodAffinityTerm
+                                          matches with no Pods.
                                         properties:
                                           matchExpressions:
                                             description: matchExpressions is a list
@@ -4707,6 +5132,49 @@ spec:
                                             type: object
                                         type: object
                                         x-kubernetes-map-type: atomic
+                                      matchLabelKeys:
+                                        description: MatchLabelKeys is a set of pod
+                                          label keys to select which pods will be
+                                          taken into consideration. The keys are used
+                                          to lookup values from the incoming pod labels,
+                                          those key-value labels are merged with `LabelSelector`
+                                          as `key in (value)` to select the group
+                                          of existing pods which pods will be taken
+                                          into consideration for the incoming pod's
+                                          pod (anti) affinity. Keys that don't exist
+                                          in the incoming pod labels will be ignored.
+                                          The default value is empty. The same key
+                                          is forbidden to exist in both MatchLabelKeys
+                                          and LabelSelector. Also, MatchLabelKeys
+                                          cannot be set when LabelSelector isn't set.
+                                          This is an alpha field and requires enabling
+                                          MatchLabelKeysInPodAffinity feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
+                                      mismatchLabelKeys:
+                                        description: MismatchLabelKeys is a set of
+                                          pod label keys to select which pods will
+                                          be taken into consideration. The keys are
+                                          used to lookup values from the incoming
+                                          pod labels, those key-value labels are merged
+                                          with `LabelSelector` as `key notin (value)`
+                                          to select the group of existing pods which
+                                          pods will be taken into consideration for
+                                          the incoming pod's pod (anti) affinity.
+                                          Keys that don't exist in the incoming pod
+                                          labels will be ignored. The default value
+                                          is empty. The same key is forbidden to exist
+                                          in both MismatchLabelKeys and LabelSelector.
+                                          Also, MismatchLabelKeys cannot be set when
+                                          LabelSelector isn't set. This is an alpha
+                                          field and requires enabling MatchLabelKeysInPodAffinity
+                                          feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
                                       namespaceSelector:
                                         description: A label query over the set of
                                           namespaces that the term applies to. The
@@ -4824,7 +5292,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -4874,6 +5343,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -5450,7 +5959,8 @@ spec:
                                     properties:
                                       labelSelector:
                                         description: A label query over a set of resources,
-                                          in this case pods.
+                                          in this case pods. If it's null, this PodAffinityTerm
+                                          matches with no Pods.
                                         properties:
                                           matchExpressions:
                                             description: matchExpressions is a list
@@ -5501,6 +6011,49 @@ spec:
                                             type: object
                                         type: object
                                         x-kubernetes-map-type: atomic
+                                      matchLabelKeys:
+                                        description: MatchLabelKeys is a set of pod
+                                          label keys to select which pods will be
+                                          taken into consideration. The keys are used
+                                          to lookup values from the incoming pod labels,
+                                          those key-value labels are merged with `LabelSelector`
+                                          as `key in (value)` to select the group
+                                          of existing pods which pods will be taken
+                                          into consideration for the incoming pod's
+                                          pod (anti) affinity. Keys that don't exist
+                                          in the incoming pod labels will be ignored.
+                                          The default value is empty. The same key
+                                          is forbidden to exist in both MatchLabelKeys
+                                          and LabelSelector. Also, MatchLabelKeys
+                                          cannot be set when LabelSelector isn't set.
+                                          This is an alpha field and requires enabling
+                                          MatchLabelKeysInPodAffinity feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
+                                      mismatchLabelKeys:
+                                        description: MismatchLabelKeys is a set of
+                                          pod label keys to select which pods will
+                                          be taken into consideration. The keys are
+                                          used to lookup values from the incoming
+                                          pod labels, those key-value labels are merged
+                                          with `LabelSelector` as `key notin (value)`
+                                          to select the group of existing pods which
+                                          pods will be taken into consideration for
+                                          the incoming pod's pod (anti) affinity.
+                                          Keys that don't exist in the incoming pod
+                                          labels will be ignored. The default value
+                                          is empty. The same key is forbidden to exist
+                                          in both MismatchLabelKeys and LabelSelector.
+                                          Also, MismatchLabelKeys cannot be set when
+                                          LabelSelector isn't set. This is an alpha
+                                          field and requires enabling MatchLabelKeysInPodAffinity
+                                          feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
                                       namespaceSelector:
                                         description: A label query over the set of
                                           namespaces that the term applies to. The
@@ -5618,7 +6171,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -5668,6 +6222,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -5779,7 +6373,8 @@ spec:
                                     properties:
                                       labelSelector:
                                         description: A label query over a set of resources,
-                                          in this case pods.
+                                          in this case pods. If it's null, this PodAffinityTerm
+                                          matches with no Pods.
                                         properties:
                                           matchExpressions:
                                             description: matchExpressions is a list
@@ -5830,6 +6425,49 @@ spec:
                                             type: object
                                         type: object
                                         x-kubernetes-map-type: atomic
+                                      matchLabelKeys:
+                                        description: MatchLabelKeys is a set of pod
+                                          label keys to select which pods will be
+                                          taken into consideration. The keys are used
+                                          to lookup values from the incoming pod labels,
+                                          those key-value labels are merged with `LabelSelector`
+                                          as `key in (value)` to select the group
+                                          of existing pods which pods will be taken
+                                          into consideration for the incoming pod's
+                                          pod (anti) affinity. Keys that don't exist
+                                          in the incoming pod labels will be ignored.
+                                          The default value is empty. The same key
+                                          is forbidden to exist in both MatchLabelKeys
+                                          and LabelSelector. Also, MatchLabelKeys
+                                          cannot be set when LabelSelector isn't set.
+                                          This is an alpha field and requires enabling
+                                          MatchLabelKeysInPodAffinity feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
+                                      mismatchLabelKeys:
+                                        description: MismatchLabelKeys is a set of
+                                          pod label keys to select which pods will
+                                          be taken into consideration. The keys are
+                                          used to lookup values from the incoming
+                                          pod labels, those key-value labels are merged
+                                          with `LabelSelector` as `key notin (value)`
+                                          to select the group of existing pods which
+                                          pods will be taken into consideration for
+                                          the incoming pod's pod (anti) affinity.
+                                          Keys that don't exist in the incoming pod
+                                          labels will be ignored. The default value
+                                          is empty. The same key is forbidden to exist
+                                          in both MismatchLabelKeys and LabelSelector.
+                                          Also, MismatchLabelKeys cannot be set when
+                                          LabelSelector isn't set. This is an alpha
+                                          field and requires enabling MatchLabelKeysInPodAffinity
+                                          feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
                                       namespaceSelector:
                                         description: A label query over the set of
                                           namespaces that the term applies to. The
@@ -5947,7 +6585,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -5997,6 +6636,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -6533,30 +7212,6 @@ spec:
                                 must still be higher than capacity recorded in the
                                 status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                               properties:
-                                claims:
-                                  description: "Claims lists the names of resources,
-                                    defined in spec.resourceClaims, that are used
-                                    by this container. \n This is an alpha field and
-                                    requires enabling the DynamicResourceAllocation
-                                    feature gate. \n This field is immutable. It can
-                                    only be set for containers."
-                                  items:
-                                    description: ResourceClaim references one entry
-                                      in PodSpec.ResourceClaims.
-                                    properties:
-                                      name:
-                                        description: Name must match the name of one
-                                          entry in pod.spec.resourceClaims of the
-                                          Pod where this field is used. It makes that
-                                          resource available inside a container.
-                                        type: string
-                                    required:
-                                    - name
-                                    type: object
-                                  type: array
-                                  x-kubernetes-list-map-keys:
-                                  - name
-                                  x-kubernetes-list-type: map
                                 limits:
                                   additionalProperties:
                                     anyOf:
@@ -6634,6 +7289,27 @@ spec:
                               description: 'storageClassName is the name of the StorageClass
                                 required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                               type: string
+                            volumeAttributesClassName:
+                              description: 'volumeAttributesClassName may be used
+                                to set the VolumeAttributesClass used by this claim.
+                                If specified, the CSI driver will create or update
+                                the volume with the attributes defined in the corresponding
+                                VolumeAttributesClass. This has a different purpose
+                                than storageClassName, it can be changed after the
+                                claim is created. An empty string value means that
+                                no VolumeAttributesClass will be applied to the claim
+                                but it''s not allowed to reset this field to empty
+                                string once it is set. If unspecified and the PersistentVolumeClaim
+                                is unbound, the default VolumeAttributesClass will
+                                be set by the persistentvolume controller if it exists.
+                                If the resource referred to by volumeAttributesClass
+                                does not exist, this PersistentVolumeClaim will be
+                                set to a Pending state, as reflected by the modifyVolumeStatus
+                                field, until such as a resource exists. More info:
+                                https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                                (Alpha) Using this field requires the VolumeAttributesClass
+                                feature gate to be enabled.'
+                              type: string
                             volumeMode:
                               description: volumeMode defines what type of volume
                                 is required by the claim. Value of Filesystem is implied
@@ -6784,6 +7460,44 @@ spec:
                                 - type
                                 type: object
                               type: array
+                            currentVolumeAttributesClassName:
+                              description: currentVolumeAttributesClassName is the
+                                current name of the VolumeAttributesClass the PVC
+                                is using. When unset, there is no VolumeAttributeClass
+                                applied to this PersistentVolumeClaim This is an alpha
+                                field and requires enabling VolumeAttributesClass
+                                feature.
+                              type: string
+                            modifyVolumeStatus:
+                              description: ModifyVolumeStatus represents the status
+                                object of ControllerModifyVolume operation. When this
+                                is unset, there is no ModifyVolume operation being
+                                attempted. This is an alpha field and requires enabling
+                                VolumeAttributesClass feature.
+                              properties:
+                                status:
+                                  description: 'status is the status of the ControllerModifyVolume
+                                    operation. It can be in any of following states:
+                                    - Pending Pending indicates that the PersistentVolumeClaim
+                                    cannot be modified due to unmet requirements,
+                                    such as the specified VolumeAttributesClass not
+                                    existing. - InProgress InProgress indicates that
+                                    the volume is being modified. - Infeasible Infeasible
+                                    indicates that the request has been rejected as
+                                    invalid by the CSI driver. To resolve the error,
+                                    a valid VolumeAttributesClass needs to be specified.
+                                    Note: New statuses can be added in the future.
+                                    Consumers should check for unknown statuses and
+                                    fail appropriately.'
+                                  type: string
+                                targetVolumeAttributesClassName:
+                                  description: targetVolumeAttributesClassName is
+                                    the name of the VolumeAttributesClass the PVC
+                                    currently being reconciled
+                                  type: string
+                              required:
+                              - status
+                              type: object
                             phase:
                               description: phase represents the current phase of PersistentVolumeClaim.
                               type: string
diff --git a/deploy/csv-templates/crds/ocs/ocs.openshift.io_storageclusters.yaml b/deploy/csv-templates/crds/ocs/ocs.openshift.io_storageclusters.yaml
index a9f0232926..998f47c8c5 100644
--- a/deploy/csv-templates/crds/ocs/ocs.openshift.io_storageclusters.yaml
+++ b/deploy/csv-templates/crds/ocs/ocs.openshift.io_storageclusters.yaml
@@ -205,30 +205,6 @@ spec:
                               must still be higher than capacity recorded in the status
                               field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                             properties:
-                              claims:
-                                description: "Claims lists the names of resources,
-                                  defined in spec.resourceClaims, that are used by
-                                  this container. \n This is an alpha field and requires
-                                  enabling the DynamicResourceAllocation feature gate.
-                                  \n This field is immutable. It can only be set for
-                                  containers."
-                                items:
-                                  description: ResourceClaim references one entry
-                                    in PodSpec.ResourceClaims.
-                                  properties:
-                                    name:
-                                      description: Name must match the name of one
-                                        entry in pod.spec.resourceClaims of the Pod
-                                        where this field is used. It makes that resource
-                                        available inside a container.
-                                      type: string
-                                  required:
-                                  - name
-                                  type: object
-                                type: array
-                                x-kubernetes-list-map-keys:
-                                - name
-                                x-kubernetes-list-type: map
                               limits:
                                 additionalProperties:
                                   anyOf:
@@ -305,6 +281,26 @@ spec:
                             description: 'storageClassName is the name of the StorageClass
                               required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                             type: string
+                          volumeAttributesClassName:
+                            description: 'volumeAttributesClassName may be used to
+                              set the VolumeAttributesClass used by this claim. If
+                              specified, the CSI driver will create or update the
+                              volume with the attributes defined in the corresponding
+                              VolumeAttributesClass. This has a different purpose
+                              than storageClassName, it can be changed after the claim
+                              is created. An empty string value means that no VolumeAttributesClass
+                              will be applied to the claim but it''s not allowed to
+                              reset this field to empty string once it is set. If
+                              unspecified and the PersistentVolumeClaim is unbound,
+                              the default VolumeAttributesClass will be set by the
+                              persistentvolume controller if it exists. If the resource
+                              referred to by volumeAttributesClass does not exist,
+                              this PersistentVolumeClaim will be set to a Pending
+                              state, as reflected by the modifyVolumeStatus field,
+                              until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                              (Alpha) Using this field requires the VolumeAttributesClass
+                              feature gate to be enabled.'
+                            type: string
                           volumeMode:
                             description: volumeMode defines what type of volume is
                               required by the claim. Value of Filesystem is implied
@@ -453,6 +449,42 @@ spec:
                               - type
                               type: object
                             type: array
+                          currentVolumeAttributesClassName:
+                            description: currentVolumeAttributesClassName is the current
+                              name of the VolumeAttributesClass the PVC is using.
+                              When unset, there is no VolumeAttributeClass applied
+                              to this PersistentVolumeClaim This is an alpha field
+                              and requires enabling VolumeAttributesClass feature.
+                            type: string
+                          modifyVolumeStatus:
+                            description: ModifyVolumeStatus represents the status
+                              object of ControllerModifyVolume operation. When this
+                              is unset, there is no ModifyVolume operation being attempted.
+                              This is an alpha field and requires enabling VolumeAttributesClass
+                              feature.
+                            properties:
+                              status:
+                                description: 'status is the status of the ControllerModifyVolume
+                                  operation. It can be in any of following states:
+                                  - Pending Pending indicates that the PersistentVolumeClaim
+                                  cannot be modified due to unmet requirements, such
+                                  as the specified VolumeAttributesClass not existing.
+                                  - InProgress InProgress indicates that the volume
+                                  is being modified. - Infeasible Infeasible indicates
+                                  that the request has been rejected as invalid by
+                                  the CSI driver. To resolve the error, a valid VolumeAttributesClass
+                                  needs to be specified. Note: New statuses can be
+                                  added in the future. Consumers should check for
+                                  unknown statuses and fail appropriately.'
+                                type: string
+                              targetVolumeAttributesClassName:
+                                description: targetVolumeAttributesClassName is the
+                                  name of the VolumeAttributesClass the PVC currently
+                                  being reconciled
+                                type: string
+                            required:
+                            - status
+                            type: object
                           phase:
                             description: phase represents the current phase of PersistentVolumeClaim.
                             type: string
@@ -958,30 +990,6 @@ spec:
                                   value but must still be higher than capacity recorded
                                   in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                                 properties:
-                                  claims:
-                                    description: "Claims lists the names of resources,
-                                      defined in spec.resourceClaims, that are used
-                                      by this container. \n This is an alpha field
-                                      and requires enabling the DynamicResourceAllocation
-                                      feature gate. \n This field is immutable. It
-                                      can only be set for containers."
-                                    items:
-                                      description: ResourceClaim references one entry
-                                        in PodSpec.ResourceClaims.
-                                      properties:
-                                        name:
-                                          description: Name must match the name of
-                                            one entry in pod.spec.resourceClaims of
-                                            the Pod where this field is used. It makes
-                                            that resource available inside a container.
-                                          type: string
-                                      required:
-                                      - name
-                                      type: object
-                                    type: array
-                                    x-kubernetes-list-map-keys:
-                                    - name
-                                    x-kubernetes-list-type: map
                                   limits:
                                     additionalProperties:
                                       anyOf:
@@ -1060,6 +1068,27 @@ spec:
                                 description: 'storageClassName is the name of the
                                   StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                                 type: string
+                              volumeAttributesClassName:
+                                description: 'volumeAttributesClassName may be used
+                                  to set the VolumeAttributesClass used by this claim.
+                                  If specified, the CSI driver will create or update
+                                  the volume with the attributes defined in the corresponding
+                                  VolumeAttributesClass. This has a different purpose
+                                  than storageClassName, it can be changed after the
+                                  claim is created. An empty string value means that
+                                  no VolumeAttributesClass will be applied to the
+                                  claim but it''s not allowed to reset this field
+                                  to empty string once it is set. If unspecified and
+                                  the PersistentVolumeClaim is unbound, the default
+                                  VolumeAttributesClass will be set by the persistentvolume
+                                  controller if it exists. If the resource referred
+                                  to by volumeAttributesClass does not exist, this
+                                  PersistentVolumeClaim will be set to a Pending state,
+                                  as reflected by the modifyVolumeStatus field, until
+                                  such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                                  (Alpha) Using this field requires the VolumeAttributesClass
+                                  feature gate to be enabled.'
+                                type: string
                               volumeMode:
                                 description: volumeMode defines what type of volume
                                   is required by the claim. Value of Filesystem is
@@ -1218,6 +1247,44 @@ spec:
                                   - type
                                   type: object
                                 type: array
+                              currentVolumeAttributesClassName:
+                                description: currentVolumeAttributesClassName is the
+                                  current name of the VolumeAttributesClass the PVC
+                                  is using. When unset, there is no VolumeAttributeClass
+                                  applied to this PersistentVolumeClaim This is an
+                                  alpha field and requires enabling VolumeAttributesClass
+                                  feature.
+                                type: string
+                              modifyVolumeStatus:
+                                description: ModifyVolumeStatus represents the status
+                                  object of ControllerModifyVolume operation. When
+                                  this is unset, there is no ModifyVolume operation
+                                  being attempted. This is an alpha field and requires
+                                  enabling VolumeAttributesClass feature.
+                                properties:
+                                  status:
+                                    description: 'status is the status of the ControllerModifyVolume
+                                      operation. It can be in any of following states:
+                                      - Pending Pending indicates that the PersistentVolumeClaim
+                                      cannot be modified due to unmet requirements,
+                                      such as the specified VolumeAttributesClass
+                                      not existing. - InProgress InProgress indicates
+                                      that the volume is being modified. - Infeasible
+                                      Infeasible indicates that the request has been
+                                      rejected as invalid by the CSI driver. To resolve
+                                      the error, a valid VolumeAttributesClass needs
+                                      to be specified. Note: New statuses can be added
+                                      in the future. Consumers should check for unknown
+                                      statuses and fail appropriately.'
+                                    type: string
+                                  targetVolumeAttributesClassName:
+                                    description: targetVolumeAttributesClassName is
+                                      the name of the VolumeAttributesClass the PVC
+                                      currently being reconciled
+                                    type: string
+                                required:
+                                - status
+                                type: object
                               phase:
                                 description: phase represents the current phase of
                                   PersistentVolumeClaim.
@@ -1438,28 +1505,6 @@ spec:
                           than capacity recorded in the status field of the claim.
                           More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                         properties:
-                          claims:
-                            description: "Claims lists the names of resources, defined
-                              in spec.resourceClaims, that are used by this container.
-                              \n This is an alpha field and requires enabling the
-                              DynamicResourceAllocation feature gate. \n This field
-                              is immutable. It can only be set for containers."
-                            items:
-                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
-                              properties:
-                                name:
-                                  description: Name must match the name of one entry
-                                    in pod.spec.resourceClaims of the Pod where this
-                                    field is used. It makes that resource available
-                                    inside a container.
-                                  type: string
-                              required:
-                              - name
-                              type: object
-                            type: array
-                            x-kubernetes-list-map-keys:
-                            - name
-                            x-kubernetes-list-type: map
                           limits:
                             additionalProperties:
                               anyOf:
@@ -1535,6 +1580,25 @@ spec:
                         description: 'storageClassName is the name of the StorageClass
                           required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                         type: string
+                      volumeAttributesClassName:
+                        description: 'volumeAttributesClassName may be used to set
+                          the VolumeAttributesClass used by this claim. If specified,
+                          the CSI driver will create or update the volume with the
+                          attributes defined in the corresponding VolumeAttributesClass.
+                          This has a different purpose than storageClassName, it can
+                          be changed after the claim is created. An empty string value
+                          means that no VolumeAttributesClass will be applied to the
+                          claim but it''s not allowed to reset this field to empty
+                          string once it is set. If unspecified and the PersistentVolumeClaim
+                          is unbound, the default VolumeAttributesClass will be set
+                          by the persistentvolume controller if it exists. If the
+                          resource referred to by volumeAttributesClass does not exist,
+                          this PersistentVolumeClaim will be set to a Pending state,
+                          as reflected by the modifyVolumeStatus field, until such
+                          as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                          (Alpha) Using this field requires the VolumeAttributesClass
+                          feature gate to be enabled.'
+                        type: string
                       volumeMode:
                         description: volumeMode defines what type of volume is required
                           by the claim. Value of Filesystem is implied when not included
@@ -1679,6 +1743,41 @@ spec:
                           - type
                           type: object
                         type: array
+                      currentVolumeAttributesClassName:
+                        description: currentVolumeAttributesClassName is the current
+                          name of the VolumeAttributesClass the PVC is using. When
+                          unset, there is no VolumeAttributeClass applied to this
+                          PersistentVolumeClaim This is an alpha field and requires
+                          enabling VolumeAttributesClass feature.
+                        type: string
+                      modifyVolumeStatus:
+                        description: ModifyVolumeStatus represents the status object
+                          of ControllerModifyVolume operation. When this is unset,
+                          there is no ModifyVolume operation being attempted. This
+                          is an alpha field and requires enabling VolumeAttributesClass
+                          feature.
+                        properties:
+                          status:
+                            description: 'status is the status of the ControllerModifyVolume
+                              operation. It can be in any of following states: - Pending
+                              Pending indicates that the PersistentVolumeClaim cannot
+                              be modified due to unmet requirements, such as the specified
+                              VolumeAttributesClass not existing. - InProgress InProgress
+                              indicates that the volume is being modified. - Infeasible
+                              Infeasible indicates that the request has been rejected
+                              as invalid by the CSI driver. To resolve the error,
+                              a valid VolumeAttributesClass needs to be specified.
+                              Note: New statuses can be added in the future. Consumers
+                              should check for unknown statuses and fail appropriately.'
+                            type: string
+                          targetVolumeAttributesClassName:
+                            description: targetVolumeAttributesClassName is the name
+                              of the VolumeAttributesClass the PVC currently being
+                              reconciled
+                            type: string
+                        required:
+                        - status
+                        type: object
                       phase:
                         description: phase represents the current phase of PersistentVolumeClaim.
                         type: string
@@ -1887,7 +1986,10 @@ spec:
                       listen on both IPv4 and IPv6
                     type: boolean
                   hostNetwork:
-                    description: HostNetwork to enable host network
+                    description: HostNetwork to enable host network. If host networking
+                      is enabled or disabled on a running cluster, then the operator
+                      will automatically fail over all the mons to apply the new network
+                      settings.
                     type: boolean
                   ipFamily:
                     description: IPFamily is the single stack IPv6 or IPv4 protocol
@@ -1914,7 +2016,10 @@ spec:
                     type: object
                   provider:
                     description: Provider is what provides network connectivity to
-                      the cluster e.g. "host" or "multus"
+                      the cluster e.g. "host" or "multus". If the Provider is updated
+                      from being empty to "host" on a running cluster, then the operator
+                      will automatically fail over all the mons to apply the "host"
+                      network settings.
                     enum:
                     - ""
                     - host
@@ -1956,6 +2061,10 @@ spec:
                     multus
                   rule: '!has(self.provider) || (self.provider != ''multus'' || (self.provider
                     == ''multus'' && size(self.selectors) > 0))'
+                - message: the legacy hostNetwork setting can only be set if the network.provider
+                    is set to the empty string
+                  rule: '!has(self.hostNetwork) || self.hostNetwork == false || !has(self.provider)
+                    || self.provider == ""'
               nfs:
                 description: NFSSpec defines specific nfs configuration options
                 properties:
@@ -2319,7 +2428,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -2369,6 +2479,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -2481,7 +2631,8 @@ spec:
                             properties:
                               labelSelector:
                                 description: A label query over a set of resources,
-                                  in this case pods.
+                                  in this case pods. If it's null, this PodAffinityTerm
+                                  matches with no Pods.
                                 properties:
                                   matchExpressions:
                                     description: matchExpressions is a list of label
@@ -2528,6 +2679,44 @@ spec:
                                     type: object
                                 type: object
                                 x-kubernetes-map-type: atomic
+                              matchLabelKeys:
+                                description: MatchLabelKeys is a set of pod label
+                                  keys to select which pods will be taken into consideration.
+                                  The keys are used to lookup values from the incoming
+                                  pod labels, those key-value labels are merged with
+                                  `LabelSelector` as `key in (value)` to select the
+                                  group of existing pods which pods will be taken
+                                  into consideration for the incoming pod's pod (anti)
+                                  affinity. Keys that don't exist in the incoming
+                                  pod labels will be ignored. The default value is
+                                  empty. The same key is forbidden to exist in both
+                                  MatchLabelKeys and LabelSelector. Also, MatchLabelKeys
+                                  cannot be set when LabelSelector isn't set. This
+                                  is an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                  feature gate.
+                                items:
+                                  type: string
+                                type: array
+                                x-kubernetes-list-type: atomic
+                              mismatchLabelKeys:
+                                description: MismatchLabelKeys is a set of pod label
+                                  keys to select which pods will be taken into consideration.
+                                  The keys are used to lookup values from the incoming
+                                  pod labels, those key-value labels are merged with
+                                  `LabelSelector` as `key notin (value)` to select
+                                  the group of existing pods which pods will be taken
+                                  into consideration for the incoming pod's pod (anti)
+                                  affinity. Keys that don't exist in the incoming
+                                  pod labels will be ignored. The default value is
+                                  empty. The same key is forbidden to exist in both
+                                  MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys
+                                  cannot be set when LabelSelector isn't set. This
+                                  is an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                  feature gate.
+                                items:
+                                  type: string
+                                type: array
+                                x-kubernetes-list-type: atomic
                               namespaceSelector:
                                 description: A label query over the set of namespaces
                                   that the term applies to. The term is applied to
@@ -2634,7 +2823,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -2684,6 +2874,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -2796,7 +3026,8 @@ spec:
                             properties:
                               labelSelector:
                                 description: A label query over a set of resources,
-                                  in this case pods.
+                                  in this case pods. If it's null, this PodAffinityTerm
+                                  matches with no Pods.
                                 properties:
                                   matchExpressions:
                                     description: matchExpressions is a list of label
@@ -2843,6 +3074,44 @@ spec:
                                     type: object
                                 type: object
                                 x-kubernetes-map-type: atomic
+                              matchLabelKeys:
+                                description: MatchLabelKeys is a set of pod label
+                                  keys to select which pods will be taken into consideration.
+                                  The keys are used to lookup values from the incoming
+                                  pod labels, those key-value labels are merged with
+                                  `LabelSelector` as `key in (value)` to select the
+                                  group of existing pods which pods will be taken
+                                  into consideration for the incoming pod's pod (anti)
+                                  affinity. Keys that don't exist in the incoming
+                                  pod labels will be ignored. The default value is
+                                  empty. The same key is forbidden to exist in both
+                                  MatchLabelKeys and LabelSelector. Also, MatchLabelKeys
+                                  cannot be set when LabelSelector isn't set. This
+                                  is an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                  feature gate.
+                                items:
+                                  type: string
+                                type: array
+                                x-kubernetes-list-type: atomic
+                              mismatchLabelKeys:
+                                description: MismatchLabelKeys is a set of pod label
+                                  keys to select which pods will be taken into consideration.
+                                  The keys are used to lookup values from the incoming
+                                  pod labels, those key-value labels are merged with
+                                  `LabelSelector` as `key notin (value)` to select
+                                  the group of existing pods which pods will be taken
+                                  into consideration for the incoming pod's pod (anti)
+                                  affinity. Keys that don't exist in the incoming
+                                  pod labels will be ignored. The default value is
+                                  empty. The same key is forbidden to exist in both
+                                  MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys
+                                  cannot be set when LabelSelector isn't set. This
+                                  is an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                  feature gate.
+                                items:
+                                  type: string
+                                type: array
+                                x-kubernetes-list-type: atomic
                               namespaceSelector:
                                 description: A label query over the set of namespaces
                                   that the term applies to. The term is applied to
@@ -3394,30 +3663,6 @@ spec:
                                 must still be higher than capacity recorded in the
                                 status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                               properties:
-                                claims:
-                                  description: "Claims lists the names of resources,
-                                    defined in spec.resourceClaims, that are used
-                                    by this container. \n This is an alpha field and
-                                    requires enabling the DynamicResourceAllocation
-                                    feature gate. \n This field is immutable. It can
-                                    only be set for containers."
-                                  items:
-                                    description: ResourceClaim references one entry
-                                      in PodSpec.ResourceClaims.
-                                    properties:
-                                      name:
-                                        description: Name must match the name of one
-                                          entry in pod.spec.resourceClaims of the
-                                          Pod where this field is used. It makes that
-                                          resource available inside a container.
-                                        type: string
-                                    required:
-                                    - name
-                                    type: object
-                                  type: array
-                                  x-kubernetes-list-map-keys:
-                                  - name
-                                  x-kubernetes-list-type: map
                                 limits:
                                   additionalProperties:
                                     anyOf:
@@ -3495,6 +3740,27 @@ spec:
                               description: 'storageClassName is the name of the StorageClass
                                 required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                               type: string
+                            volumeAttributesClassName:
+                              description: 'volumeAttributesClassName may be used
+                                to set the VolumeAttributesClass used by this claim.
+                                If specified, the CSI driver will create or update
+                                the volume with the attributes defined in the corresponding
+                                VolumeAttributesClass. This has a different purpose
+                                than storageClassName, it can be changed after the
+                                claim is created. An empty string value means that
+                                no VolumeAttributesClass will be applied to the claim
+                                but it''s not allowed to reset this field to empty
+                                string once it is set. If unspecified and the PersistentVolumeClaim
+                                is unbound, the default VolumeAttributesClass will
+                                be set by the persistentvolume controller if it exists.
+                                If the resource referred to by volumeAttributesClass
+                                does not exist, this PersistentVolumeClaim will be
+                                set to a Pending state, as reflected by the modifyVolumeStatus
+                                field, until such as a resource exists. More info:
+                                https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                                (Alpha) Using this field requires the VolumeAttributesClass
+                                feature gate to be enabled.'
+                              type: string
                             volumeMode:
                               description: volumeMode defines what type of volume
                                 is required by the claim. Value of Filesystem is implied
@@ -3645,6 +3911,44 @@ spec:
                                 - type
                                 type: object
                               type: array
+                            currentVolumeAttributesClassName:
+                              description: currentVolumeAttributesClassName is the
+                                current name of the VolumeAttributesClass the PVC
+                                is using. When unset, there is no VolumeAttributeClass
+                                applied to this PersistentVolumeClaim This is an alpha
+                                field and requires enabling VolumeAttributesClass
+                                feature.
+                              type: string
+                            modifyVolumeStatus:
+                              description: ModifyVolumeStatus represents the status
+                                object of ControllerModifyVolume operation. When this
+                                is unset, there is no ModifyVolume operation being
+                                attempted. This is an alpha field and requires enabling
+                                VolumeAttributesClass feature.
+                              properties:
+                                status:
+                                  description: 'status is the status of the ControllerModifyVolume
+                                    operation. It can be in any of following states:
+                                    - Pending Pending indicates that the PersistentVolumeClaim
+                                    cannot be modified due to unmet requirements,
+                                    such as the specified VolumeAttributesClass not
+                                    existing. - InProgress InProgress indicates that
+                                    the volume is being modified. - Infeasible Infeasible
+                                    indicates that the request has been rejected as
+                                    invalid by the CSI driver. To resolve the error,
+                                    a valid VolumeAttributesClass needs to be specified.
+                                    Note: New statuses can be added in the future.
+                                    Consumers should check for unknown statuses and
+                                    fail appropriately.'
+                                  type: string
+                                targetVolumeAttributesClassName:
+                                  description: targetVolumeAttributesClassName is
+                                    the name of the VolumeAttributesClass the PVC
+                                    currently being reconciled
+                                  type: string
+                              required:
+                              - status
+                              type: object
                             phase:
                               description: phase represents the current phase of PersistentVolumeClaim.
                               type: string
@@ -3821,30 +4125,6 @@ spec:
                                 must still be higher than capacity recorded in the
                                 status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                               properties:
-                                claims:
-                                  description: "Claims lists the names of resources,
-                                    defined in spec.resourceClaims, that are used
-                                    by this container. \n This is an alpha field and
-                                    requires enabling the DynamicResourceAllocation
-                                    feature gate. \n This field is immutable. It can
-                                    only be set for containers."
-                                  items:
-                                    description: ResourceClaim references one entry
-                                      in PodSpec.ResourceClaims.
-                                    properties:
-                                      name:
-                                        description: Name must match the name of one
-                                          entry in pod.spec.resourceClaims of the
-                                          Pod where this field is used. It makes that
-                                          resource available inside a container.
-                                        type: string
-                                    required:
-                                    - name
-                                    type: object
-                                  type: array
-                                  x-kubernetes-list-map-keys:
-                                  - name
-                                  x-kubernetes-list-type: map
                                 limits:
                                   additionalProperties:
                                     anyOf:
@@ -3922,6 +4202,27 @@ spec:
                               description: 'storageClassName is the name of the StorageClass
                                 required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                               type: string
+                            volumeAttributesClassName:
+                              description: 'volumeAttributesClassName may be used
+                                to set the VolumeAttributesClass used by this claim.
+                                If specified, the CSI driver will create or update
+                                the volume with the attributes defined in the corresponding
+                                VolumeAttributesClass. This has a different purpose
+                                than storageClassName, it can be changed after the
+                                claim is created. An empty string value means that
+                                no VolumeAttributesClass will be applied to the claim
+                                but it''s not allowed to reset this field to empty
+                                string once it is set. If unspecified and the PersistentVolumeClaim
+                                is unbound, the default VolumeAttributesClass will
+                                be set by the persistentvolume controller if it exists.
+                                If the resource referred to by volumeAttributesClass
+                                does not exist, this PersistentVolumeClaim will be
+                                set to a Pending state, as reflected by the modifyVolumeStatus
+                                field, until such as a resource exists. More info:
+                                https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                                (Alpha) Using this field requires the VolumeAttributesClass
+                                feature gate to be enabled.'
+                              type: string
                             volumeMode:
                               description: volumeMode defines what type of volume
                                 is required by the claim. Value of Filesystem is implied
@@ -4072,6 +4373,44 @@ spec:
                                 - type
                                 type: object
                               type: array
+                            currentVolumeAttributesClassName:
+                              description: currentVolumeAttributesClassName is the
+                                current name of the VolumeAttributesClass the PVC
+                                is using. When unset, there is no VolumeAttributeClass
+                                applied to this PersistentVolumeClaim This is an alpha
+                                field and requires enabling VolumeAttributesClass
+                                feature.
+                              type: string
+                            modifyVolumeStatus:
+                              description: ModifyVolumeStatus represents the status
+                                object of ControllerModifyVolume operation. When this
+                                is unset, there is no ModifyVolume operation being
+                                attempted. This is an alpha field and requires enabling
+                                VolumeAttributesClass feature.
+                              properties:
+                                status:
+                                  description: 'status is the status of the ControllerModifyVolume
+                                    operation. It can be in any of following states:
+                                    - Pending Pending indicates that the PersistentVolumeClaim
+                                    cannot be modified due to unmet requirements,
+                                    such as the specified VolumeAttributesClass not
+                                    existing. - InProgress InProgress indicates that
+                                    the volume is being modified. - Infeasible Infeasible
+                                    indicates that the request has been rejected as
+                                    invalid by the CSI driver. To resolve the error,
+                                    a valid VolumeAttributesClass needs to be specified.
+                                    Note: New statuses can be added in the future.
+                                    Consumers should check for unknown statuses and
+                                    fail appropriately.'
+                                  type: string
+                                targetVolumeAttributesClassName:
+                                  description: targetVolumeAttributesClassName is
+                                    the name of the VolumeAttributesClass the PVC
+                                    currently being reconciled
+                                  type: string
+                              required:
+                              - status
+                              type: object
                             phase:
                               description: phase represents the current phase of PersistentVolumeClaim.
                               type: string
@@ -4327,7 +4666,8 @@ spec:
                                     properties:
                                       labelSelector:
                                         description: A label query over a set of resources,
-                                          in this case pods.
+                                          in this case pods. If it's null, this PodAffinityTerm
+                                          matches with no Pods.
                                         properties:
                                           matchExpressions:
                                             description: matchExpressions is a list
@@ -4378,6 +4718,49 @@ spec:
                                             type: object
                                         type: object
                                         x-kubernetes-map-type: atomic
+                                      matchLabelKeys:
+                                        description: MatchLabelKeys is a set of pod
+                                          label keys to select which pods will be
+                                          taken into consideration. The keys are used
+                                          to lookup values from the incoming pod labels,
+                                          those key-value labels are merged with `LabelSelector`
+                                          as `key in (value)` to select the group
+                                          of existing pods which pods will be taken
+                                          into consideration for the incoming pod's
+                                          pod (anti) affinity. Keys that don't exist
+                                          in the incoming pod labels will be ignored.
+                                          The default value is empty. The same key
+                                          is forbidden to exist in both MatchLabelKeys
+                                          and LabelSelector. Also, MatchLabelKeys
+                                          cannot be set when LabelSelector isn't set.
+                                          This is an alpha field and requires enabling
+                                          MatchLabelKeysInPodAffinity feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
+                                      mismatchLabelKeys:
+                                        description: MismatchLabelKeys is a set of
+                                          pod label keys to select which pods will
+                                          be taken into consideration. The keys are
+                                          used to lookup values from the incoming
+                                          pod labels, those key-value labels are merged
+                                          with `LabelSelector` as `key notin (value)`
+                                          to select the group of existing pods which
+                                          pods will be taken into consideration for
+                                          the incoming pod's pod (anti) affinity.
+                                          Keys that don't exist in the incoming pod
+                                          labels will be ignored. The default value
+                                          is empty. The same key is forbidden to exist
+                                          in both MismatchLabelKeys and LabelSelector.
+                                          Also, MismatchLabelKeys cannot be set when
+                                          LabelSelector isn't set. This is an alpha
+                                          field and requires enabling MatchLabelKeysInPodAffinity
+                                          feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
                                       namespaceSelector:
                                         description: A label query over the set of
                                           namespaces that the term applies to. The
@@ -4495,7 +4878,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -4545,6 +4929,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -4656,7 +5080,8 @@ spec:
                                     properties:
                                       labelSelector:
                                         description: A label query over a set of resources,
-                                          in this case pods.
+                                          in this case pods. If it's null, this PodAffinityTerm
+                                          matches with no Pods.
                                         properties:
                                           matchExpressions:
                                             description: matchExpressions is a list
@@ -4707,6 +5132,49 @@ spec:
                                             type: object
                                         type: object
                                         x-kubernetes-map-type: atomic
+                                      matchLabelKeys:
+                                        description: MatchLabelKeys is a set of pod
+                                          label keys to select which pods will be
+                                          taken into consideration. The keys are used
+                                          to lookup values from the incoming pod labels,
+                                          those key-value labels are merged with `LabelSelector`
+                                          as `key in (value)` to select the group
+                                          of existing pods which pods will be taken
+                                          into consideration for the incoming pod's
+                                          pod (anti) affinity. Keys that don't exist
+                                          in the incoming pod labels will be ignored.
+                                          The default value is empty. The same key
+                                          is forbidden to exist in both MatchLabelKeys
+                                          and LabelSelector. Also, MatchLabelKeys
+                                          cannot be set when LabelSelector isn't set.
+                                          This is an alpha field and requires enabling
+                                          MatchLabelKeysInPodAffinity feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
+                                      mismatchLabelKeys:
+                                        description: MismatchLabelKeys is a set of
+                                          pod label keys to select which pods will
+                                          be taken into consideration. The keys are
+                                          used to lookup values from the incoming
+                                          pod labels, those key-value labels are merged
+                                          with `LabelSelector` as `key notin (value)`
+                                          to select the group of existing pods which
+                                          pods will be taken into consideration for
+                                          the incoming pod's pod (anti) affinity.
+                                          Keys that don't exist in the incoming pod
+                                          labels will be ignored. The default value
+                                          is empty. The same key is forbidden to exist
+                                          in both MismatchLabelKeys and LabelSelector.
+                                          Also, MismatchLabelKeys cannot be set when
+                                          LabelSelector isn't set. This is an alpha
+                                          field and requires enabling MatchLabelKeysInPodAffinity
+                                          feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
                                       namespaceSelector:
                                         description: A label query over the set of
                                           namespaces that the term applies to. The
@@ -4824,7 +5292,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -4874,6 +5343,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -5450,7 +5959,8 @@ spec:
                                     properties:
                                       labelSelector:
                                         description: A label query over a set of resources,
-                                          in this case pods.
+                                          in this case pods. If it's null, this PodAffinityTerm
+                                          matches with no Pods.
                                         properties:
                                           matchExpressions:
                                             description: matchExpressions is a list
@@ -5501,6 +6011,49 @@ spec:
                                             type: object
                                         type: object
                                         x-kubernetes-map-type: atomic
+                                      matchLabelKeys:
+                                        description: MatchLabelKeys is a set of pod
+                                          label keys to select which pods will be
+                                          taken into consideration. The keys are used
+                                          to lookup values from the incoming pod labels,
+                                          those key-value labels are merged with `LabelSelector`
+                                          as `key in (value)` to select the group
+                                          of existing pods which pods will be taken
+                                          into consideration for the incoming pod's
+                                          pod (anti) affinity. Keys that don't exist
+                                          in the incoming pod labels will be ignored.
+                                          The default value is empty. The same key
+                                          is forbidden to exist in both MatchLabelKeys
+                                          and LabelSelector. Also, MatchLabelKeys
+                                          cannot be set when LabelSelector isn't set.
+                                          This is an alpha field and requires enabling
+                                          MatchLabelKeysInPodAffinity feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
+                                      mismatchLabelKeys:
+                                        description: MismatchLabelKeys is a set of
+                                          pod label keys to select which pods will
+                                          be taken into consideration. The keys are
+                                          used to lookup values from the incoming
+                                          pod labels, those key-value labels are merged
+                                          with `LabelSelector` as `key notin (value)`
+                                          to select the group of existing pods which
+                                          pods will be taken into consideration for
+                                          the incoming pod's pod (anti) affinity.
+                                          Keys that don't exist in the incoming pod
+                                          labels will be ignored. The default value
+                                          is empty. The same key is forbidden to exist
+                                          in both MismatchLabelKeys and LabelSelector.
+                                          Also, MismatchLabelKeys cannot be set when
+                                          LabelSelector isn't set. This is an alpha
+                                          field and requires enabling MatchLabelKeysInPodAffinity
+                                          feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
                                       namespaceSelector:
                                         description: A label query over the set of
                                           namespaces that the term applies to. The
@@ -5618,7 +6171,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -5668,6 +6222,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -5779,7 +6373,8 @@ spec:
                                     properties:
                                       labelSelector:
                                         description: A label query over a set of resources,
-                                          in this case pods.
+                                          in this case pods. If it's null, this PodAffinityTerm
+                                          matches with no Pods.
                                         properties:
                                           matchExpressions:
                                             description: matchExpressions is a list
@@ -5830,6 +6425,49 @@ spec:
                                             type: object
                                         type: object
                                         x-kubernetes-map-type: atomic
+                                      matchLabelKeys:
+                                        description: MatchLabelKeys is a set of pod
+                                          label keys to select which pods will be
+                                          taken into consideration. The keys are used
+                                          to lookup values from the incoming pod labels,
+                                          those key-value labels are merged with `LabelSelector`
+                                          as `key in (value)` to select the group
+                                          of existing pods which pods will be taken
+                                          into consideration for the incoming pod's
+                                          pod (anti) affinity. Keys that don't exist
+                                          in the incoming pod labels will be ignored.
+                                          The default value is empty. The same key
+                                          is forbidden to exist in both MatchLabelKeys
+                                          and LabelSelector. Also, MatchLabelKeys
+                                          cannot be set when LabelSelector isn't set.
+                                          This is an alpha field and requires enabling
+                                          MatchLabelKeysInPodAffinity feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
+                                      mismatchLabelKeys:
+                                        description: MismatchLabelKeys is a set of
+                                          pod label keys to select which pods will
+                                          be taken into consideration. The keys are
+                                          used to lookup values from the incoming
+                                          pod labels, those key-value labels are merged
+                                          with `LabelSelector` as `key notin (value)`
+                                          to select the group of existing pods which
+                                          pods will be taken into consideration for
+                                          the incoming pod's pod (anti) affinity.
+                                          Keys that don't exist in the incoming pod
+                                          labels will be ignored. The default value
+                                          is empty. The same key is forbidden to exist
+                                          in both MismatchLabelKeys and LabelSelector.
+                                          Also, MismatchLabelKeys cannot be set when
+                                          LabelSelector isn't set. This is an alpha
+                                          field and requires enabling MatchLabelKeysInPodAffinity
+                                          feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
                                       namespaceSelector:
                                         description: A label query over the set of
                                           namespaces that the term applies to. The
@@ -5947,7 +6585,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -5997,6 +6636,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -6533,30 +7212,6 @@ spec:
                                 must still be higher than capacity recorded in the
                                 status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                               properties:
-                                claims:
-                                  description: "Claims lists the names of resources,
-                                    defined in spec.resourceClaims, that are used
-                                    by this container. \n This is an alpha field and
-                                    requires enabling the DynamicResourceAllocation
-                                    feature gate. \n This field is immutable. It can
-                                    only be set for containers."
-                                  items:
-                                    description: ResourceClaim references one entry
-                                      in PodSpec.ResourceClaims.
-                                    properties:
-                                      name:
-                                        description: Name must match the name of one
-                                          entry in pod.spec.resourceClaims of the
-                                          Pod where this field is used. It makes that
-                                          resource available inside a container.
-                                        type: string
-                                    required:
-                                    - name
-                                    type: object
-                                  type: array
-                                  x-kubernetes-list-map-keys:
-                                  - name
-                                  x-kubernetes-list-type: map
                                 limits:
                                   additionalProperties:
                                     anyOf:
@@ -6634,6 +7289,27 @@ spec:
                               description: 'storageClassName is the name of the StorageClass
                                 required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                               type: string
+                            volumeAttributesClassName:
+                              description: 'volumeAttributesClassName may be used
+                                to set the VolumeAttributesClass used by this claim.
+                                If specified, the CSI driver will create or update
+                                the volume with the attributes defined in the corresponding
+                                VolumeAttributesClass. This has a different purpose
+                                than storageClassName, it can be changed after the
+                                claim is created. An empty string value means that
+                                no VolumeAttributesClass will be applied to the claim
+                                but it''s not allowed to reset this field to empty
+                                string once it is set. If unspecified and the PersistentVolumeClaim
+                                is unbound, the default VolumeAttributesClass will
+                                be set by the persistentvolume controller if it exists.
+                                If the resource referred to by volumeAttributesClass
+                                does not exist, this PersistentVolumeClaim will be
+                                set to a Pending state, as reflected by the modifyVolumeStatus
+                                field, until such as a resource exists. More info:
+                                https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                                (Alpha) Using this field requires the VolumeAttributesClass
+                                feature gate to be enabled.'
+                              type: string
                             volumeMode:
                               description: volumeMode defines what type of volume
                                 is required by the claim. Value of Filesystem is implied
@@ -6784,6 +7460,44 @@ spec:
                                 - type
                                 type: object
                               type: array
+                            currentVolumeAttributesClassName:
+                              description: currentVolumeAttributesClassName is the
+                                current name of the VolumeAttributesClass the PVC
+                                is using. When unset, there is no VolumeAttributeClass
+                                applied to this PersistentVolumeClaim This is an alpha
+                                field and requires enabling VolumeAttributesClass
+                                feature.
+                              type: string
+                            modifyVolumeStatus:
+                              description: ModifyVolumeStatus represents the status
+                                object of ControllerModifyVolume operation. When this
+                                is unset, there is no ModifyVolume operation being
+                                attempted. This is an alpha field and requires enabling
+                                VolumeAttributesClass feature.
+                              properties:
+                                status:
+                                  description: 'status is the status of the ControllerModifyVolume
+                                    operation. It can be in any of following states:
+                                    - Pending Pending indicates that the PersistentVolumeClaim
+                                    cannot be modified due to unmet requirements,
+                                    such as the specified VolumeAttributesClass not
+                                    existing. - InProgress InProgress indicates that
+                                    the volume is being modified. - Infeasible Infeasible
+                                    indicates that the request has been rejected as
+                                    invalid by the CSI driver. To resolve the error,
+                                    a valid VolumeAttributesClass needs to be specified.
+                                    Note: New statuses can be added in the future.
+                                    Consumers should check for unknown statuses and
+                                    fail appropriately.'
+                                  type: string
+                                targetVolumeAttributesClassName:
+                                  description: targetVolumeAttributesClassName is
+                                    the name of the VolumeAttributesClass the PVC
+                                    currently being reconciled
+                                  type: string
+                              required:
+                              - status
+                              type: object
                             phase:
                               description: phase represents the current phase of PersistentVolumeClaim.
                               type: string
diff --git a/deploy/ocs-operator/manifests/storagecluster.crd.yaml b/deploy/ocs-operator/manifests/storagecluster.crd.yaml
index db3d44c436..acf33c7356 100644
--- a/deploy/ocs-operator/manifests/storagecluster.crd.yaml
+++ b/deploy/ocs-operator/manifests/storagecluster.crd.yaml
@@ -204,30 +204,6 @@ spec:
                               must still be higher than capacity recorded in the status
                               field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                             properties:
-                              claims:
-                                description: "Claims lists the names of resources,
-                                  defined in spec.resourceClaims, that are used by
-                                  this container. \n This is an alpha field and requires
-                                  enabling the DynamicResourceAllocation feature gate.
-                                  \n This field is immutable. It can only be set for
-                                  containers."
-                                items:
-                                  description: ResourceClaim references one entry
-                                    in PodSpec.ResourceClaims.
-                                  properties:
-                                    name:
-                                      description: Name must match the name of one
-                                        entry in pod.spec.resourceClaims of the Pod
-                                        where this field is used. It makes that resource
-                                        available inside a container.
-                                      type: string
-                                  required:
-                                  - name
-                                  type: object
-                                type: array
-                                x-kubernetes-list-map-keys:
-                                - name
-                                x-kubernetes-list-type: map
                               limits:
                                 additionalProperties:
                                   anyOf:
@@ -304,6 +280,26 @@ spec:
                             description: 'storageClassName is the name of the StorageClass
                               required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                             type: string
+                          volumeAttributesClassName:
+                            description: 'volumeAttributesClassName may be used to
+                              set the VolumeAttributesClass used by this claim. If
+                              specified, the CSI driver will create or update the
+                              volume with the attributes defined in the corresponding
+                              VolumeAttributesClass. This has a different purpose
+                              than storageClassName, it can be changed after the claim
+                              is created. An empty string value means that no VolumeAttributesClass
+                              will be applied to the claim but it''s not allowed to
+                              reset this field to empty string once it is set. If
+                              unspecified and the PersistentVolumeClaim is unbound,
+                              the default VolumeAttributesClass will be set by the
+                              persistentvolume controller if it exists. If the resource
+                              referred to by volumeAttributesClass does not exist,
+                              this PersistentVolumeClaim will be set to a Pending
+                              state, as reflected by the modifyVolumeStatus field,
+                              until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                              (Alpha) Using this field requires the VolumeAttributesClass
+                              feature gate to be enabled.'
+                            type: string
                           volumeMode:
                             description: volumeMode defines what type of volume is
                               required by the claim. Value of Filesystem is implied
@@ -452,6 +448,42 @@ spec:
                               - type
                               type: object
                             type: array
+                          currentVolumeAttributesClassName:
+                            description: currentVolumeAttributesClassName is the current
+                              name of the VolumeAttributesClass the PVC is using.
+                              When unset, there is no VolumeAttributeClass applied
+                              to this PersistentVolumeClaim This is an alpha field
+                              and requires enabling VolumeAttributesClass feature.
+                            type: string
+                          modifyVolumeStatus:
+                            description: ModifyVolumeStatus represents the status
+                              object of ControllerModifyVolume operation. When this
+                              is unset, there is no ModifyVolume operation being attempted.
+                              This is an alpha field and requires enabling VolumeAttributesClass
+                              feature.
+                            properties:
+                              status:
+                                description: 'status is the status of the ControllerModifyVolume
+                                  operation. It can be in any of following states:
+                                  - Pending Pending indicates that the PersistentVolumeClaim
+                                  cannot be modified due to unmet requirements, such
+                                  as the specified VolumeAttributesClass not existing.
+                                  - InProgress InProgress indicates that the volume
+                                  is being modified. - Infeasible Infeasible indicates
+                                  that the request has been rejected as invalid by
+                                  the CSI driver. To resolve the error, a valid VolumeAttributesClass
+                                  needs to be specified. Note: New statuses can be
+                                  added in the future. Consumers should check for
+                                  unknown statuses and fail appropriately.'
+                                type: string
+                              targetVolumeAttributesClassName:
+                                description: targetVolumeAttributesClassName is the
+                                  name of the VolumeAttributesClass the PVC currently
+                                  being reconciled
+                                type: string
+                            required:
+                            - status
+                            type: object
                           phase:
                             description: phase represents the current phase of PersistentVolumeClaim.
                             type: string
@@ -957,30 +989,6 @@ spec:
                                   value but must still be higher than capacity recorded
                                   in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                                 properties:
-                                  claims:
-                                    description: "Claims lists the names of resources,
-                                      defined in spec.resourceClaims, that are used
-                                      by this container. \n This is an alpha field
-                                      and requires enabling the DynamicResourceAllocation
-                                      feature gate. \n This field is immutable. It
-                                      can only be set for containers."
-                                    items:
-                                      description: ResourceClaim references one entry
-                                        in PodSpec.ResourceClaims.
-                                      properties:
-                                        name:
-                                          description: Name must match the name of
-                                            one entry in pod.spec.resourceClaims of
-                                            the Pod where this field is used. It makes
-                                            that resource available inside a container.
-                                          type: string
-                                      required:
-                                      - name
-                                      type: object
-                                    type: array
-                                    x-kubernetes-list-map-keys:
-                                    - name
-                                    x-kubernetes-list-type: map
                                   limits:
                                     additionalProperties:
                                       anyOf:
@@ -1059,6 +1067,27 @@ spec:
                                 description: 'storageClassName is the name of the
                                   StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                                 type: string
+                              volumeAttributesClassName:
+                                description: 'volumeAttributesClassName may be used
+                                  to set the VolumeAttributesClass used by this claim.
+                                  If specified, the CSI driver will create or update
+                                  the volume with the attributes defined in the corresponding
+                                  VolumeAttributesClass. This has a different purpose
+                                  than storageClassName, it can be changed after the
+                                  claim is created. An empty string value means that
+                                  no VolumeAttributesClass will be applied to the
+                                  claim but it''s not allowed to reset this field
+                                  to empty string once it is set. If unspecified and
+                                  the PersistentVolumeClaim is unbound, the default
+                                  VolumeAttributesClass will be set by the persistentvolume
+                                  controller if it exists. If the resource referred
+                                  to by volumeAttributesClass does not exist, this
+                                  PersistentVolumeClaim will be set to a Pending state,
+                                  as reflected by the modifyVolumeStatus field, until
+                                  such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                                  (Alpha) Using this field requires the VolumeAttributesClass
+                                  feature gate to be enabled.'
+                                type: string
                               volumeMode:
                                 description: volumeMode defines what type of volume
                                   is required by the claim. Value of Filesystem is
@@ -1217,6 +1246,44 @@ spec:
                                   - type
                                   type: object
                                 type: array
+                              currentVolumeAttributesClassName:
+                                description: currentVolumeAttributesClassName is the
+                                  current name of the VolumeAttributesClass the PVC
+                                  is using. When unset, there is no VolumeAttributeClass
+                                  applied to this PersistentVolumeClaim This is an
+                                  alpha field and requires enabling VolumeAttributesClass
+                                  feature.
+                                type: string
+                              modifyVolumeStatus:
+                                description: ModifyVolumeStatus represents the status
+                                  object of ControllerModifyVolume operation. When
+                                  this is unset, there is no ModifyVolume operation
+                                  being attempted. This is an alpha field and requires
+                                  enabling VolumeAttributesClass feature.
+                                properties:
+                                  status:
+                                    description: 'status is the status of the ControllerModifyVolume
+                                      operation. It can be in any of following states:
+                                      - Pending Pending indicates that the PersistentVolumeClaim
+                                      cannot be modified due to unmet requirements,
+                                      such as the specified VolumeAttributesClass
+                                      not existing. - InProgress InProgress indicates
+                                      that the volume is being modified. - Infeasible
+                                      Infeasible indicates that the request has been
+                                      rejected as invalid by the CSI driver. To resolve
+                                      the error, a valid VolumeAttributesClass needs
+                                      to be specified. Note: New statuses can be added
+                                      in the future. Consumers should check for unknown
+                                      statuses and fail appropriately.'
+                                    type: string
+                                  targetVolumeAttributesClassName:
+                                    description: targetVolumeAttributesClassName is
+                                      the name of the VolumeAttributesClass the PVC
+                                      currently being reconciled
+                                    type: string
+                                required:
+                                - status
+                                type: object
                               phase:
                                 description: phase represents the current phase of
                                   PersistentVolumeClaim.
@@ -1437,28 +1504,6 @@ spec:
                           than capacity recorded in the status field of the claim.
                           More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                         properties:
-                          claims:
-                            description: "Claims lists the names of resources, defined
-                              in spec.resourceClaims, that are used by this container.
-                              \n This is an alpha field and requires enabling the
-                              DynamicResourceAllocation feature gate. \n This field
-                              is immutable. It can only be set for containers."
-                            items:
-                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
-                              properties:
-                                name:
-                                  description: Name must match the name of one entry
-                                    in pod.spec.resourceClaims of the Pod where this
-                                    field is used. It makes that resource available
-                                    inside a container.
-                                  type: string
-                              required:
-                              - name
-                              type: object
-                            type: array
-                            x-kubernetes-list-map-keys:
-                            - name
-                            x-kubernetes-list-type: map
                           limits:
                             additionalProperties:
                               anyOf:
@@ -1534,6 +1579,25 @@ spec:
                         description: 'storageClassName is the name of the StorageClass
                           required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                         type: string
+                      volumeAttributesClassName:
+                        description: 'volumeAttributesClassName may be used to set
+                          the VolumeAttributesClass used by this claim. If specified,
+                          the CSI driver will create or update the volume with the
+                          attributes defined in the corresponding VolumeAttributesClass.
+                          This has a different purpose than storageClassName, it can
+                          be changed after the claim is created. An empty string value
+                          means that no VolumeAttributesClass will be applied to the
+                          claim but it''s not allowed to reset this field to empty
+                          string once it is set. If unspecified and the PersistentVolumeClaim
+                          is unbound, the default VolumeAttributesClass will be set
+                          by the persistentvolume controller if it exists. If the
+                          resource referred to by volumeAttributesClass does not exist,
+                          this PersistentVolumeClaim will be set to a Pending state,
+                          as reflected by the modifyVolumeStatus field, until such
+                          as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                          (Alpha) Using this field requires the VolumeAttributesClass
+                          feature gate to be enabled.'
+                        type: string
                       volumeMode:
                         description: volumeMode defines what type of volume is required
                           by the claim. Value of Filesystem is implied when not included
@@ -1678,6 +1742,41 @@ spec:
                           - type
                           type: object
                         type: array
+                      currentVolumeAttributesClassName:
+                        description: currentVolumeAttributesClassName is the current
+                          name of the VolumeAttributesClass the PVC is using. When
+                          unset, there is no VolumeAttributeClass applied to this
+                          PersistentVolumeClaim This is an alpha field and requires
+                          enabling VolumeAttributesClass feature.
+                        type: string
+                      modifyVolumeStatus:
+                        description: ModifyVolumeStatus represents the status object
+                          of ControllerModifyVolume operation. When this is unset,
+                          there is no ModifyVolume operation being attempted. This
+                          is an alpha field and requires enabling VolumeAttributesClass
+                          feature.
+                        properties:
+                          status:
+                            description: 'status is the status of the ControllerModifyVolume
+                              operation. It can be in any of following states: - Pending
+                              Pending indicates that the PersistentVolumeClaim cannot
+                              be modified due to unmet requirements, such as the specified
+                              VolumeAttributesClass not existing. - InProgress InProgress
+                              indicates that the volume is being modified. - Infeasible
+                              Infeasible indicates that the request has been rejected
+                              as invalid by the CSI driver. To resolve the error,
+                              a valid VolumeAttributesClass needs to be specified.
+                              Note: New statuses can be added in the future. Consumers
+                              should check for unknown statuses and fail appropriately.'
+                            type: string
+                          targetVolumeAttributesClassName:
+                            description: targetVolumeAttributesClassName is the name
+                              of the VolumeAttributesClass the PVC currently being
+                              reconciled
+                            type: string
+                        required:
+                        - status
+                        type: object
                       phase:
                         description: phase represents the current phase of PersistentVolumeClaim.
                         type: string
@@ -1886,7 +1985,10 @@ spec:
                       listen on both IPv4 and IPv6
                     type: boolean
                   hostNetwork:
-                    description: HostNetwork to enable host network
+                    description: HostNetwork to enable host network. If host networking
+                      is enabled or disabled on a running cluster, then the operator
+                      will automatically fail over all the mons to apply the new network
+                      settings.
                     type: boolean
                   ipFamily:
                     description: IPFamily is the single stack IPv6 or IPv4 protocol
@@ -1913,7 +2015,10 @@ spec:
                     type: object
                   provider:
                     description: Provider is what provides network connectivity to
-                      the cluster e.g. "host" or "multus"
+                      the cluster e.g. "host" or "multus". If the Provider is updated
+                      from being empty to "host" on a running cluster, then the operator
+                      will automatically fail over all the mons to apply the "host"
+                      network settings.
                     enum:
                     - ""
                     - host
@@ -1955,6 +2060,10 @@ spec:
                     multus
                   rule: '!has(self.provider) || (self.provider != ''multus'' || (self.provider
                     == ''multus'' && size(self.selectors) > 0))'
+                - message: the legacy hostNetwork setting can only be set if the network.provider
+                    is set to the empty string
+                  rule: '!has(self.hostNetwork) || self.hostNetwork == false || !has(self.provider)
+                    || self.provider == ""'
               nfs:
                 description: NFSSpec defines specific nfs configuration options
                 properties:
@@ -2318,7 +2427,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -2368,6 +2478,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -2480,7 +2630,8 @@ spec:
                             properties:
                               labelSelector:
                                 description: A label query over a set of resources,
-                                  in this case pods.
+                                  in this case pods. If it's null, this PodAffinityTerm
+                                  matches with no Pods.
                                 properties:
                                   matchExpressions:
                                     description: matchExpressions is a list of label
@@ -2527,6 +2678,44 @@ spec:
                                     type: object
                                 type: object
                                 x-kubernetes-map-type: atomic
+                              matchLabelKeys:
+                                description: MatchLabelKeys is a set of pod label
+                                  keys to select which pods will be taken into consideration.
+                                  The keys are used to lookup values from the incoming
+                                  pod labels, those key-value labels are merged with
+                                  `LabelSelector` as `key in (value)` to select the
+                                  group of existing pods which pods will be taken
+                                  into consideration for the incoming pod's pod (anti)
+                                  affinity. Keys that don't exist in the incoming
+                                  pod labels will be ignored. The default value is
+                                  empty. The same key is forbidden to exist in both
+                                  MatchLabelKeys and LabelSelector. Also, MatchLabelKeys
+                                  cannot be set when LabelSelector isn't set. This
+                                  is an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                  feature gate.
+                                items:
+                                  type: string
+                                type: array
+                                x-kubernetes-list-type: atomic
+                              mismatchLabelKeys:
+                                description: MismatchLabelKeys is a set of pod label
+                                  keys to select which pods will be taken into consideration.
+                                  The keys are used to lookup values from the incoming
+                                  pod labels, those key-value labels are merged with
+                                  `LabelSelector` as `key notin (value)` to select
+                                  the group of existing pods which pods will be taken
+                                  into consideration for the incoming pod's pod (anti)
+                                  affinity. Keys that don't exist in the incoming
+                                  pod labels will be ignored. The default value is
+                                  empty. The same key is forbidden to exist in both
+                                  MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys
+                                  cannot be set when LabelSelector isn't set. This
+                                  is an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                  feature gate.
+                                items:
+                                  type: string
+                                type: array
+                                x-kubernetes-list-type: atomic
                               namespaceSelector:
                                 description: A label query over the set of namespaces
                                   that the term applies to. The term is applied to
@@ -2633,7 +2822,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -2683,6 +2873,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -2795,7 +3025,8 @@ spec:
                             properties:
                               labelSelector:
                                 description: A label query over a set of resources,
-                                  in this case pods.
+                                  in this case pods. If it's null, this PodAffinityTerm
+                                  matches with no Pods.
                                 properties:
                                   matchExpressions:
                                     description: matchExpressions is a list of label
@@ -2842,6 +3073,44 @@ spec:
                                     type: object
                                 type: object
                                 x-kubernetes-map-type: atomic
+                              matchLabelKeys:
+                                description: MatchLabelKeys is a set of pod label
+                                  keys to select which pods will be taken into consideration.
+                                  The keys are used to lookup values from the incoming
+                                  pod labels, those key-value labels are merged with
+                                  `LabelSelector` as `key in (value)` to select the
+                                  group of existing pods which pods will be taken
+                                  into consideration for the incoming pod's pod (anti)
+                                  affinity. Keys that don't exist in the incoming
+                                  pod labels will be ignored. The default value is
+                                  empty. The same key is forbidden to exist in both
+                                  MatchLabelKeys and LabelSelector. Also, MatchLabelKeys
+                                  cannot be set when LabelSelector isn't set. This
+                                  is an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                  feature gate.
+                                items:
+                                  type: string
+                                type: array
+                                x-kubernetes-list-type: atomic
+                              mismatchLabelKeys:
+                                description: MismatchLabelKeys is a set of pod label
+                                  keys to select which pods will be taken into consideration.
+                                  The keys are used to lookup values from the incoming
+                                  pod labels, those key-value labels are merged with
+                                  `LabelSelector` as `key notin (value)` to select
+                                  the group of existing pods which pods will be taken
+                                  into consideration for the incoming pod's pod (anti)
+                                  affinity. Keys that don't exist in the incoming
+                                  pod labels will be ignored. The default value is
+                                  empty. The same key is forbidden to exist in both
+                                  MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys
+                                  cannot be set when LabelSelector isn't set. This
+                                  is an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                  feature gate.
+                                items:
+                                  type: string
+                                type: array
+                                x-kubernetes-list-type: atomic
                               namespaceSelector:
                                 description: A label query over the set of namespaces
                                   that the term applies to. The term is applied to
@@ -3393,30 +3662,6 @@ spec:
                                 must still be higher than capacity recorded in the
                                 status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                               properties:
-                                claims:
-                                  description: "Claims lists the names of resources,
-                                    defined in spec.resourceClaims, that are used
-                                    by this container. \n This is an alpha field and
-                                    requires enabling the DynamicResourceAllocation
-                                    feature gate. \n This field is immutable. It can
-                                    only be set for containers."
-                                  items:
-                                    description: ResourceClaim references one entry
-                                      in PodSpec.ResourceClaims.
-                                    properties:
-                                      name:
-                                        description: Name must match the name of one
-                                          entry in pod.spec.resourceClaims of the
-                                          Pod where this field is used. It makes that
-                                          resource available inside a container.
-                                        type: string
-                                    required:
-                                    - name
-                                    type: object
-                                  type: array
-                                  x-kubernetes-list-map-keys:
-                                  - name
-                                  x-kubernetes-list-type: map
                                 limits:
                                   additionalProperties:
                                     anyOf:
@@ -3494,6 +3739,27 @@ spec:
                               description: 'storageClassName is the name of the StorageClass
                                 required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                               type: string
+                            volumeAttributesClassName:
+                              description: 'volumeAttributesClassName may be used
+                                to set the VolumeAttributesClass used by this claim.
+                                If specified, the CSI driver will create or update
+                                the volume with the attributes defined in the corresponding
+                                VolumeAttributesClass. This has a different purpose
+                                than storageClassName, it can be changed after the
+                                claim is created. An empty string value means that
+                                no VolumeAttributesClass will be applied to the claim
+                                but it''s not allowed to reset this field to empty
+                                string once it is set. If unspecified and the PersistentVolumeClaim
+                                is unbound, the default VolumeAttributesClass will
+                                be set by the persistentvolume controller if it exists.
+                                If the resource referred to by volumeAttributesClass
+                                does not exist, this PersistentVolumeClaim will be
+                                set to a Pending state, as reflected by the modifyVolumeStatus
+                                field, until such as a resource exists. More info:
+                                https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                                (Alpha) Using this field requires the VolumeAttributesClass
+                                feature gate to be enabled.'
+                              type: string
                             volumeMode:
                               description: volumeMode defines what type of volume
                                 is required by the claim. Value of Filesystem is implied
@@ -3644,6 +3910,44 @@ spec:
                                 - type
                                 type: object
                               type: array
+                            currentVolumeAttributesClassName:
+                              description: currentVolumeAttributesClassName is the
+                                current name of the VolumeAttributesClass the PVC
+                                is using. When unset, there is no VolumeAttributeClass
+                                applied to this PersistentVolumeClaim This is an alpha
+                                field and requires enabling VolumeAttributesClass
+                                feature.
+                              type: string
+                            modifyVolumeStatus:
+                              description: ModifyVolumeStatus represents the status
+                                object of ControllerModifyVolume operation. When this
+                                is unset, there is no ModifyVolume operation being
+                                attempted. This is an alpha field and requires enabling
+                                VolumeAttributesClass feature.
+                              properties:
+                                status:
+                                  description: 'status is the status of the ControllerModifyVolume
+                                    operation. It can be in any of following states:
+                                    - Pending Pending indicates that the PersistentVolumeClaim
+                                    cannot be modified due to unmet requirements,
+                                    such as the specified VolumeAttributesClass not
+                                    existing. - InProgress InProgress indicates that
+                                    the volume is being modified. - Infeasible Infeasible
+                                    indicates that the request has been rejected as
+                                    invalid by the CSI driver. To resolve the error,
+                                    a valid VolumeAttributesClass needs to be specified.
+                                    Note: New statuses can be added in the future.
+                                    Consumers should check for unknown statuses and
+                                    fail appropriately.'
+                                  type: string
+                                targetVolumeAttributesClassName:
+                                  description: targetVolumeAttributesClassName is
+                                    the name of the VolumeAttributesClass the PVC
+                                    currently being reconciled
+                                  type: string
+                              required:
+                              - status
+                              type: object
                             phase:
                               description: phase represents the current phase of PersistentVolumeClaim.
                               type: string
@@ -3820,30 +4124,6 @@ spec:
                                 must still be higher than capacity recorded in the
                                 status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                               properties:
-                                claims:
-                                  description: "Claims lists the names of resources,
-                                    defined in spec.resourceClaims, that are used
-                                    by this container. \n This is an alpha field and
-                                    requires enabling the DynamicResourceAllocation
-                                    feature gate. \n This field is immutable. It can
-                                    only be set for containers."
-                                  items:
-                                    description: ResourceClaim references one entry
-                                      in PodSpec.ResourceClaims.
-                                    properties:
-                                      name:
-                                        description: Name must match the name of one
-                                          entry in pod.spec.resourceClaims of the
-                                          Pod where this field is used. It makes that
-                                          resource available inside a container.
-                                        type: string
-                                    required:
-                                    - name
-                                    type: object
-                                  type: array
-                                  x-kubernetes-list-map-keys:
-                                  - name
-                                  x-kubernetes-list-type: map
                                 limits:
                                   additionalProperties:
                                     anyOf:
@@ -3921,6 +4201,27 @@ spec:
                               description: 'storageClassName is the name of the StorageClass
                                 required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                               type: string
+                            volumeAttributesClassName:
+                              description: 'volumeAttributesClassName may be used
+                                to set the VolumeAttributesClass used by this claim.
+                                If specified, the CSI driver will create or update
+                                the volume with the attributes defined in the corresponding
+                                VolumeAttributesClass. This has a different purpose
+                                than storageClassName, it can be changed after the
+                                claim is created. An empty string value means that
+                                no VolumeAttributesClass will be applied to the claim
+                                but it''s not allowed to reset this field to empty
+                                string once it is set. If unspecified and the PersistentVolumeClaim
+                                is unbound, the default VolumeAttributesClass will
+                                be set by the persistentvolume controller if it exists.
+                                If the resource referred to by volumeAttributesClass
+                                does not exist, this PersistentVolumeClaim will be
+                                set to a Pending state, as reflected by the modifyVolumeStatus
+                                field, until such as a resource exists. More info:
+                                https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                                (Alpha) Using this field requires the VolumeAttributesClass
+                                feature gate to be enabled.'
+                              type: string
                             volumeMode:
                               description: volumeMode defines what type of volume
                                 is required by the claim. Value of Filesystem is implied
@@ -4071,6 +4372,44 @@ spec:
                                 - type
                                 type: object
                               type: array
+                            currentVolumeAttributesClassName:
+                              description: currentVolumeAttributesClassName is the
+                                current name of the VolumeAttributesClass the PVC
+                                is using. When unset, there is no VolumeAttributeClass
+                                applied to this PersistentVolumeClaim This is an alpha
+                                field and requires enabling VolumeAttributesClass
+                                feature.
+                              type: string
+                            modifyVolumeStatus:
+                              description: ModifyVolumeStatus represents the status
+                                object of ControllerModifyVolume operation. When this
+                                is unset, there is no ModifyVolume operation being
+                                attempted. This is an alpha field and requires enabling
+                                VolumeAttributesClass feature.
+                              properties:
+                                status:
+                                  description: 'status is the status of the ControllerModifyVolume
+                                    operation. It can be in any of following states:
+                                    - Pending Pending indicates that the PersistentVolumeClaim
+                                    cannot be modified due to unmet requirements,
+                                    such as the specified VolumeAttributesClass not
+                                    existing. - InProgress InProgress indicates that
+                                    the volume is being modified. - Infeasible Infeasible
+                                    indicates that the request has been rejected as
+                                    invalid by the CSI driver. To resolve the error,
+                                    a valid VolumeAttributesClass needs to be specified.
+                                    Note: New statuses can be added in the future.
+                                    Consumers should check for unknown statuses and
+                                    fail appropriately.'
+                                  type: string
+                                targetVolumeAttributesClassName:
+                                  description: targetVolumeAttributesClassName is
+                                    the name of the VolumeAttributesClass the PVC
+                                    currently being reconciled
+                                  type: string
+                              required:
+                              - status
+                              type: object
                             phase:
                               description: phase represents the current phase of PersistentVolumeClaim.
                               type: string
@@ -4326,7 +4665,8 @@ spec:
                                     properties:
                                       labelSelector:
                                         description: A label query over a set of resources,
-                                          in this case pods.
+                                          in this case pods. If it's null, this PodAffinityTerm
+                                          matches with no Pods.
                                         properties:
                                           matchExpressions:
                                             description: matchExpressions is a list
@@ -4377,6 +4717,49 @@ spec:
                                             type: object
                                         type: object
                                         x-kubernetes-map-type: atomic
+                                      matchLabelKeys:
+                                        description: MatchLabelKeys is a set of pod
+                                          label keys to select which pods will be
+                                          taken into consideration. The keys are used
+                                          to lookup values from the incoming pod labels,
+                                          those key-value labels are merged with `LabelSelector`
+                                          as `key in (value)` to select the group
+                                          of existing pods which pods will be taken
+                                          into consideration for the incoming pod's
+                                          pod (anti) affinity. Keys that don't exist
+                                          in the incoming pod labels will be ignored.
+                                          The default value is empty. The same key
+                                          is forbidden to exist in both MatchLabelKeys
+                                          and LabelSelector. Also, MatchLabelKeys
+                                          cannot be set when LabelSelector isn't set.
+                                          This is an alpha field and requires enabling
+                                          MatchLabelKeysInPodAffinity feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
+                                      mismatchLabelKeys:
+                                        description: MismatchLabelKeys is a set of
+                                          pod label keys to select which pods will
+                                          be taken into consideration. The keys are
+                                          used to lookup values from the incoming
+                                          pod labels, those key-value labels are merged
+                                          with `LabelSelector` as `key notin (value)`
+                                          to select the group of existing pods which
+                                          pods will be taken into consideration for
+                                          the incoming pod's pod (anti) affinity.
+                                          Keys that don't exist in the incoming pod
+                                          labels will be ignored. The default value
+                                          is empty. The same key is forbidden to exist
+                                          in both MismatchLabelKeys and LabelSelector.
+                                          Also, MismatchLabelKeys cannot be set when
+                                          LabelSelector isn't set. This is an alpha
+                                          field and requires enabling MatchLabelKeysInPodAffinity
+                                          feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
                                       namespaceSelector:
                                         description: A label query over the set of
                                           namespaces that the term applies to. The
@@ -4494,7 +4877,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -4544,6 +4928,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -4655,7 +5079,8 @@ spec:
                                     properties:
                                       labelSelector:
                                         description: A label query over a set of resources,
-                                          in this case pods.
+                                          in this case pods. If it's null, this PodAffinityTerm
+                                          matches with no Pods.
                                         properties:
                                           matchExpressions:
                                             description: matchExpressions is a list
@@ -4706,6 +5131,49 @@ spec:
                                             type: object
                                         type: object
                                         x-kubernetes-map-type: atomic
+                                      matchLabelKeys:
+                                        description: MatchLabelKeys is a set of pod
+                                          label keys to select which pods will be
+                                          taken into consideration. The keys are used
+                                          to lookup values from the incoming pod labels,
+                                          those key-value labels are merged with `LabelSelector`
+                                          as `key in (value)` to select the group
+                                          of existing pods which pods will be taken
+                                          into consideration for the incoming pod's
+                                          pod (anti) affinity. Keys that don't exist
+                                          in the incoming pod labels will be ignored.
+                                          The default value is empty. The same key
+                                          is forbidden to exist in both MatchLabelKeys
+                                          and LabelSelector. Also, MatchLabelKeys
+                                          cannot be set when LabelSelector isn't set.
+                                          This is an alpha field and requires enabling
+                                          MatchLabelKeysInPodAffinity feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
+                                      mismatchLabelKeys:
+                                        description: MismatchLabelKeys is a set of
+                                          pod label keys to select which pods will
+                                          be taken into consideration. The keys are
+                                          used to lookup values from the incoming
+                                          pod labels, those key-value labels are merged
+                                          with `LabelSelector` as `key notin (value)`
+                                          to select the group of existing pods which
+                                          pods will be taken into consideration for
+                                          the incoming pod's pod (anti) affinity.
+                                          Keys that don't exist in the incoming pod
+                                          labels will be ignored. The default value
+                                          is empty. The same key is forbidden to exist
+                                          in both MismatchLabelKeys and LabelSelector.
+                                          Also, MismatchLabelKeys cannot be set when
+                                          LabelSelector isn't set. This is an alpha
+                                          field and requires enabling MatchLabelKeysInPodAffinity
+                                          feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
                                       namespaceSelector:
                                         description: A label query over the set of
                                           namespaces that the term applies to. The
@@ -4823,7 +5291,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -4873,6 +5342,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -5449,7 +5958,8 @@ spec:
                                     properties:
                                       labelSelector:
                                         description: A label query over a set of resources,
-                                          in this case pods.
+                                          in this case pods. If it's null, this PodAffinityTerm
+                                          matches with no Pods.
                                         properties:
                                           matchExpressions:
                                             description: matchExpressions is a list
@@ -5500,6 +6010,49 @@ spec:
                                             type: object
                                         type: object
                                         x-kubernetes-map-type: atomic
+                                      matchLabelKeys:
+                                        description: MatchLabelKeys is a set of pod
+                                          label keys to select which pods will be
+                                          taken into consideration. The keys are used
+                                          to lookup values from the incoming pod labels,
+                                          those key-value labels are merged with `LabelSelector`
+                                          as `key in (value)` to select the group
+                                          of existing pods which pods will be taken
+                                          into consideration for the incoming pod's
+                                          pod (anti) affinity. Keys that don't exist
+                                          in the incoming pod labels will be ignored.
+                                          The default value is empty. The same key
+                                          is forbidden to exist in both MatchLabelKeys
+                                          and LabelSelector. Also, MatchLabelKeys
+                                          cannot be set when LabelSelector isn't set.
+                                          This is an alpha field and requires enabling
+                                          MatchLabelKeysInPodAffinity feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
+                                      mismatchLabelKeys:
+                                        description: MismatchLabelKeys is a set of
+                                          pod label keys to select which pods will
+                                          be taken into consideration. The keys are
+                                          used to lookup values from the incoming
+                                          pod labels, those key-value labels are merged
+                                          with `LabelSelector` as `key notin (value)`
+                                          to select the group of existing pods which
+                                          pods will be taken into consideration for
+                                          the incoming pod's pod (anti) affinity.
+                                          Keys that don't exist in the incoming pod
+                                          labels will be ignored. The default value
+                                          is empty. The same key is forbidden to exist
+                                          in both MismatchLabelKeys and LabelSelector.
+                                          Also, MismatchLabelKeys cannot be set when
+                                          LabelSelector isn't set. This is an alpha
+                                          field and requires enabling MatchLabelKeysInPodAffinity
+                                          feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
                                       namespaceSelector:
                                         description: A label query over the set of
                                           namespaces that the term applies to. The
@@ -5617,7 +6170,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -5667,6 +6221,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -5778,7 +6372,8 @@ spec:
                                     properties:
                                       labelSelector:
                                         description: A label query over a set of resources,
-                                          in this case pods.
+                                          in this case pods. If it's null, this PodAffinityTerm
+                                          matches with no Pods.
                                         properties:
                                           matchExpressions:
                                             description: matchExpressions is a list
@@ -5829,6 +6424,49 @@ spec:
                                             type: object
                                         type: object
                                         x-kubernetes-map-type: atomic
+                                      matchLabelKeys:
+                                        description: MatchLabelKeys is a set of pod
+                                          label keys to select which pods will be
+                                          taken into consideration. The keys are used
+                                          to lookup values from the incoming pod labels,
+                                          those key-value labels are merged with `LabelSelector`
+                                          as `key in (value)` to select the group
+                                          of existing pods which pods will be taken
+                                          into consideration for the incoming pod's
+                                          pod (anti) affinity. Keys that don't exist
+                                          in the incoming pod labels will be ignored.
+                                          The default value is empty. The same key
+                                          is forbidden to exist in both MatchLabelKeys
+                                          and LabelSelector. Also, MatchLabelKeys
+                                          cannot be set when LabelSelector isn't set.
+                                          This is an alpha field and requires enabling
+                                          MatchLabelKeysInPodAffinity feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
+                                      mismatchLabelKeys:
+                                        description: MismatchLabelKeys is a set of
+                                          pod label keys to select which pods will
+                                          be taken into consideration. The keys are
+                                          used to lookup values from the incoming
+                                          pod labels, those key-value labels are merged
+                                          with `LabelSelector` as `key notin (value)`
+                                          to select the group of existing pods which
+                                          pods will be taken into consideration for
+                                          the incoming pod's pod (anti) affinity.
+                                          Keys that don't exist in the incoming pod
+                                          labels will be ignored. The default value
+                                          is empty. The same key is forbidden to exist
+                                          in both MismatchLabelKeys and LabelSelector.
+                                          Also, MismatchLabelKeys cannot be set when
+                                          LabelSelector isn't set. This is an alpha
+                                          field and requires enabling MatchLabelKeysInPodAffinity
+                                          feature gate.
+                                        items:
+                                          type: string
+                                        type: array
+                                        x-kubernetes-list-type: atomic
                                       namespaceSelector:
                                         description: A label query over the set of
                                           namespaces that the term applies to. The
@@ -5946,7 +6584,8 @@ spec:
                                 properties:
                                   labelSelector:
                                     description: A label query over a set of resources,
-                                      in this case pods.
+                                      in this case pods. If it's null, this PodAffinityTerm
+                                      matches with no Pods.
                                     properties:
                                       matchExpressions:
                                         description: matchExpressions is a list of
@@ -5996,6 +6635,46 @@ spec:
                                         type: object
                                     type: object
                                     x-kubernetes-map-type: atomic
+                                  matchLabelKeys:
+                                    description: MatchLabelKeys is a set of pod label
+                                      keys to select which pods will be taken into
+                                      consideration. The keys are used to lookup values
+                                      from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      in (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MatchLabelKeys
+                                      and LabelSelector. Also, MatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
+                                  mismatchLabelKeys:
+                                    description: MismatchLabelKeys is a set of pod
+                                      label keys to select which pods will be taken
+                                      into consideration. The keys are used to lookup
+                                      values from the incoming pod labels, those key-value
+                                      labels are merged with `LabelSelector` as `key
+                                      notin (value)` to select the group of existing
+                                      pods which pods will be taken into consideration
+                                      for the incoming pod's pod (anti) affinity.
+                                      Keys that don't exist in the incoming pod labels
+                                      will be ignored. The default value is empty.
+                                      The same key is forbidden to exist in both MismatchLabelKeys
+                                      and LabelSelector. Also, MismatchLabelKeys cannot
+                                      be set when LabelSelector isn't set. This is
+                                      an alpha field and requires enabling MatchLabelKeysInPodAffinity
+                                      feature gate.
+                                    items:
+                                      type: string
+                                    type: array
+                                    x-kubernetes-list-type: atomic
                                   namespaceSelector:
                                     description: A label query over the set of namespaces
                                       that the term applies to. The term is applied
@@ -6532,30 +7211,6 @@ spec:
                                 must still be higher than capacity recorded in the
                                 status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                               properties:
-                                claims:
-                                  description: "Claims lists the names of resources,
-                                    defined in spec.resourceClaims, that are used
-                                    by this container. \n This is an alpha field and
-                                    requires enabling the DynamicResourceAllocation
-                                    feature gate. \n This field is immutable. It can
-                                    only be set for containers."
-                                  items:
-                                    description: ResourceClaim references one entry
-                                      in PodSpec.ResourceClaims.
-                                    properties:
-                                      name:
-                                        description: Name must match the name of one
-                                          entry in pod.spec.resourceClaims of the
-                                          Pod where this field is used. It makes that
-                                          resource available inside a container.
-                                        type: string
-                                    required:
-                                    - name
-                                    type: object
-                                  type: array
-                                  x-kubernetes-list-map-keys:
-                                  - name
-                                  x-kubernetes-list-type: map
                                 limits:
                                   additionalProperties:
                                     anyOf:
@@ -6633,6 +7288,27 @@ spec:
                               description: 'storageClassName is the name of the StorageClass
                                 required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                               type: string
+                            volumeAttributesClassName:
+                              description: 'volumeAttributesClassName may be used
+                                to set the VolumeAttributesClass used by this claim.
+                                If specified, the CSI driver will create or update
+                                the volume with the attributes defined in the corresponding
+                                VolumeAttributesClass. This has a different purpose
+                                than storageClassName, it can be changed after the
+                                claim is created. An empty string value means that
+                                no VolumeAttributesClass will be applied to the claim
+                                but it''s not allowed to reset this field to empty
+                                string once it is set. If unspecified and the PersistentVolumeClaim
+                                is unbound, the default VolumeAttributesClass will
+                                be set by the persistentvolume controller if it exists.
+                                If the resource referred to by volumeAttributesClass
+                                does not exist, this PersistentVolumeClaim will be
+                                set to a Pending state, as reflected by the modifyVolumeStatus
+                                field, until such as a resource exists. More info:
+                                https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
+                                (Alpha) Using this field requires the VolumeAttributesClass
+                                feature gate to be enabled.'
+                              type: string
                             volumeMode:
                               description: volumeMode defines what type of volume
                                 is required by the claim. Value of Filesystem is implied
@@ -6783,6 +7459,44 @@ spec:
                                 - type
                                 type: object
                               type: array
+                            currentVolumeAttributesClassName:
+                              description: currentVolumeAttributesClassName is the
+                                current name of the VolumeAttributesClass the PVC
+                                is using. When unset, there is no VolumeAttributeClass
+                                applied to this PersistentVolumeClaim This is an alpha
+                                field and requires enabling VolumeAttributesClass
+                                feature.
+                              type: string
+                            modifyVolumeStatus:
+                              description: ModifyVolumeStatus represents the status
+                                object of ControllerModifyVolume operation. When this
+                                is unset, there is no ModifyVolume operation being
+                                attempted. This is an alpha field and requires enabling
+                                VolumeAttributesClass feature.
+                              properties:
+                                status:
+                                  description: 'status is the status of the ControllerModifyVolume
+                                    operation. It can be in any of following states:
+                                    - Pending Pending indicates that the PersistentVolumeClaim
+                                    cannot be modified due to unmet requirements,
+                                    such as the specified VolumeAttributesClass not
+                                    existing. - InProgress InProgress indicates that
+                                    the volume is being modified. - Infeasible Infeasible
+                                    indicates that the request has been rejected as
+                                    invalid by the CSI driver. To resolve the error,
+                                    a valid VolumeAttributesClass needs to be specified.
+                                    Note: New statuses can be added in the future.
+                                    Consumers should check for unknown statuses and
+                                    fail appropriately.'
+                                  type: string
+                                targetVolumeAttributesClassName:
+                                  description: targetVolumeAttributesClassName is
+                                    the name of the VolumeAttributesClass the PVC
+                                    currently being reconciled
+                                  type: string
+                              required:
+                              - status
+                              type: object
                             phase:
                               description: phase represents the current phase of PersistentVolumeClaim.
                               type: string