Class Generated.TopologySpreadConstraint.Builder

    • Method Detail

      • getDescriptor

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
      • internalGetFieldAccessorTable

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
        Specified by:
        internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessageV3.Builder<Generated.TopologySpreadConstraint.Builder>
      • getDescriptorForType

        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType()
        Specified by:
        getDescriptorForType in interface com.google.protobuf.Message.Builder
        Specified by:
        getDescriptorForType in interface com.google.protobuf.MessageOrBuilder
        Overrides:
        getDescriptorForType in class com.google.protobuf.GeneratedMessageV3.Builder<Generated.TopologySpreadConstraint.Builder>
      • getDefaultInstanceForType

        public Generated.TopologySpreadConstraint getDefaultInstanceForType()
        Specified by:
        getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
        Specified by:
        getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder
      • build

        public Generated.TopologySpreadConstraint build()
        Specified by:
        build in interface com.google.protobuf.Message.Builder
        Specified by:
        build in interface com.google.protobuf.MessageLite.Builder
      • buildPartial

        public Generated.TopologySpreadConstraint buildPartial()
        Specified by:
        buildPartial in interface com.google.protobuf.Message.Builder
        Specified by:
        buildPartial in interface com.google.protobuf.MessageLite.Builder
      • isInitialized

        public final boolean isInitialized()
        Specified by:
        isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
        Overrides:
        isInitialized in class com.google.protobuf.GeneratedMessageV3.Builder<Generated.TopologySpreadConstraint.Builder>
      • hasMaxSkew

        public boolean hasMaxSkew()
         MaxSkew describes the degree to which pods may be unevenly distributed.
         When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
         between the number of matching pods in the target topology and the global minimum.
         The global minimum is the minimum number of matching pods in an eligible domain
         or zero if the number of eligible domains is less than MinDomains.
         For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
         labelSelector spread as 2/2/1:
         In this case, the global minimum is 1.
         +-------+-------+-------+
         | zone1 | zone2 | zone3 |
         +-------+-------+-------+
         |  P P  |  P P  |   P   |
         +-------+-------+-------+
         - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
         scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
         violate MaxSkew(1).
         - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
         When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
         to topologies that satisfy it.
         It's a required field. Default value is 1 and 0 is not allowed.
         
        optional int32 maxSkew = 1;
        Specified by:
        hasMaxSkew in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        Whether the maxSkew field is set.
      • getMaxSkew

        public int getMaxSkew()
         MaxSkew describes the degree to which pods may be unevenly distributed.
         When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
         between the number of matching pods in the target topology and the global minimum.
         The global minimum is the minimum number of matching pods in an eligible domain
         or zero if the number of eligible domains is less than MinDomains.
         For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
         labelSelector spread as 2/2/1:
         In this case, the global minimum is 1.
         +-------+-------+-------+
         | zone1 | zone2 | zone3 |
         +-------+-------+-------+
         |  P P  |  P P  |   P   |
         +-------+-------+-------+
         - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
         scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
         violate MaxSkew(1).
         - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
         When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
         to topologies that satisfy it.
         It's a required field. Default value is 1 and 0 is not allowed.
         
        optional int32 maxSkew = 1;
        Specified by:
        getMaxSkew in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        The maxSkew.
      • setMaxSkew

        public Generated.TopologySpreadConstraint.Builder setMaxSkew​(int value)
         MaxSkew describes the degree to which pods may be unevenly distributed.
         When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
         between the number of matching pods in the target topology and the global minimum.
         The global minimum is the minimum number of matching pods in an eligible domain
         or zero if the number of eligible domains is less than MinDomains.
         For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
         labelSelector spread as 2/2/1:
         In this case, the global minimum is 1.
         +-------+-------+-------+
         | zone1 | zone2 | zone3 |
         +-------+-------+-------+
         |  P P  |  P P  |   P   |
         +-------+-------+-------+
         - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
         scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
         violate MaxSkew(1).
         - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
         When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
         to topologies that satisfy it.
         It's a required field. Default value is 1 and 0 is not allowed.
         
        optional int32 maxSkew = 1;
        Parameters:
        value - The maxSkew to set.
        Returns:
        This builder for chaining.
      • clearMaxSkew

        public Generated.TopologySpreadConstraint.Builder clearMaxSkew()
         MaxSkew describes the degree to which pods may be unevenly distributed.
         When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
         between the number of matching pods in the target topology and the global minimum.
         The global minimum is the minimum number of matching pods in an eligible domain
         or zero if the number of eligible domains is less than MinDomains.
         For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
         labelSelector spread as 2/2/1:
         In this case, the global minimum is 1.
         +-------+-------+-------+
         | zone1 | zone2 | zone3 |
         +-------+-------+-------+
         |  P P  |  P P  |   P   |
         +-------+-------+-------+
         - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
         scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
         violate MaxSkew(1).
         - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
         When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
         to topologies that satisfy it.
         It's a required field. Default value is 1 and 0 is not allowed.
         
        optional int32 maxSkew = 1;
        Returns:
        This builder for chaining.
      • hasTopologyKey

        public boolean hasTopologyKey()
         TopologyKey is the key of node labels. Nodes that have a label with this key
         and identical values are considered to be in the same topology.
         We consider each <key, value> as a "bucket", and try to put balanced number
         of pods into each bucket.
         We define a domain as a particular instance of a topology.
         Also, we define an eligible domain as a domain whose nodes meet the requirements of
         nodeAffinityPolicy and nodeTaintsPolicy.
         e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
         And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
         It's a required field.
         
        optional string topologyKey = 2;
        Specified by:
        hasTopologyKey in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        Whether the topologyKey field is set.
      • getTopologyKey

        public String getTopologyKey()
         TopologyKey is the key of node labels. Nodes that have a label with this key
         and identical values are considered to be in the same topology.
         We consider each <key, value> as a "bucket", and try to put balanced number
         of pods into each bucket.
         We define a domain as a particular instance of a topology.
         Also, we define an eligible domain as a domain whose nodes meet the requirements of
         nodeAffinityPolicy and nodeTaintsPolicy.
         e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
         And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
         It's a required field.
         
        optional string topologyKey = 2;
        Specified by:
        getTopologyKey in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        The topologyKey.
      • getTopologyKeyBytes

        public com.google.protobuf.ByteString getTopologyKeyBytes()
         TopologyKey is the key of node labels. Nodes that have a label with this key
         and identical values are considered to be in the same topology.
         We consider each <key, value> as a "bucket", and try to put balanced number
         of pods into each bucket.
         We define a domain as a particular instance of a topology.
         Also, we define an eligible domain as a domain whose nodes meet the requirements of
         nodeAffinityPolicy and nodeTaintsPolicy.
         e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
         And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
         It's a required field.
         
        optional string topologyKey = 2;
        Specified by:
        getTopologyKeyBytes in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        The bytes for topologyKey.
      • setTopologyKey

        public Generated.TopologySpreadConstraint.Builder setTopologyKey​(String value)
         TopologyKey is the key of node labels. Nodes that have a label with this key
         and identical values are considered to be in the same topology.
         We consider each <key, value> as a "bucket", and try to put balanced number
         of pods into each bucket.
         We define a domain as a particular instance of a topology.
         Also, we define an eligible domain as a domain whose nodes meet the requirements of
         nodeAffinityPolicy and nodeTaintsPolicy.
         e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
         And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
         It's a required field.
         
        optional string topologyKey = 2;
        Parameters:
        value - The topologyKey to set.
        Returns:
        This builder for chaining.
      • clearTopologyKey

        public Generated.TopologySpreadConstraint.Builder clearTopologyKey()
         TopologyKey is the key of node labels. Nodes that have a label with this key
         and identical values are considered to be in the same topology.
         We consider each <key, value> as a "bucket", and try to put balanced number
         of pods into each bucket.
         We define a domain as a particular instance of a topology.
         Also, we define an eligible domain as a domain whose nodes meet the requirements of
         nodeAffinityPolicy and nodeTaintsPolicy.
         e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
         And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
         It's a required field.
         
        optional string topologyKey = 2;
        Returns:
        This builder for chaining.
      • setTopologyKeyBytes

        public Generated.TopologySpreadConstraint.Builder setTopologyKeyBytes​(com.google.protobuf.ByteString value)
         TopologyKey is the key of node labels. Nodes that have a label with this key
         and identical values are considered to be in the same topology.
         We consider each <key, value> as a "bucket", and try to put balanced number
         of pods into each bucket.
         We define a domain as a particular instance of a topology.
         Also, we define an eligible domain as a domain whose nodes meet the requirements of
         nodeAffinityPolicy and nodeTaintsPolicy.
         e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
         And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
         It's a required field.
         
        optional string topologyKey = 2;
        Parameters:
        value - The bytes for topologyKey to set.
        Returns:
        This builder for chaining.
      • hasWhenUnsatisfiable

        public boolean hasWhenUnsatisfiable()
         WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
         the spread constraint.
         - DoNotSchedule (default) tells the scheduler not to schedule it.
         - ScheduleAnyway tells the scheduler to schedule the pod in any location,
           but giving higher precedence to topologies that would help reduce the
           skew.
         A constraint is considered "Unsatisfiable" for an incoming pod
         if and only if every possible node assignment for that pod would violate
         "MaxSkew" on some topology.
         For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
         labelSelector spread as 3/1/1:
         +-------+-------+-------+
         | zone1 | zone2 | zone3 |
         +-------+-------+-------+
         | P P P |   P   |   P   |
         +-------+-------+-------+
         If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
         to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
         MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
         won't make it *more* imbalanced.
         It's a required field.
         
        optional string whenUnsatisfiable = 3;
        Specified by:
        hasWhenUnsatisfiable in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        Whether the whenUnsatisfiable field is set.
      • getWhenUnsatisfiable

        public String getWhenUnsatisfiable()
         WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
         the spread constraint.
         - DoNotSchedule (default) tells the scheduler not to schedule it.
         - ScheduleAnyway tells the scheduler to schedule the pod in any location,
           but giving higher precedence to topologies that would help reduce the
           skew.
         A constraint is considered "Unsatisfiable" for an incoming pod
         if and only if every possible node assignment for that pod would violate
         "MaxSkew" on some topology.
         For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
         labelSelector spread as 3/1/1:
         +-------+-------+-------+
         | zone1 | zone2 | zone3 |
         +-------+-------+-------+
         | P P P |   P   |   P   |
         +-------+-------+-------+
         If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
         to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
         MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
         won't make it *more* imbalanced.
         It's a required field.
         
        optional string whenUnsatisfiable = 3;
        Specified by:
        getWhenUnsatisfiable in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        The whenUnsatisfiable.
      • getWhenUnsatisfiableBytes

        public com.google.protobuf.ByteString getWhenUnsatisfiableBytes()
         WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
         the spread constraint.
         - DoNotSchedule (default) tells the scheduler not to schedule it.
         - ScheduleAnyway tells the scheduler to schedule the pod in any location,
           but giving higher precedence to topologies that would help reduce the
           skew.
         A constraint is considered "Unsatisfiable" for an incoming pod
         if and only if every possible node assignment for that pod would violate
         "MaxSkew" on some topology.
         For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
         labelSelector spread as 3/1/1:
         +-------+-------+-------+
         | zone1 | zone2 | zone3 |
         +-------+-------+-------+
         | P P P |   P   |   P   |
         +-------+-------+-------+
         If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
         to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
         MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
         won't make it *more* imbalanced.
         It's a required field.
         
        optional string whenUnsatisfiable = 3;
        Specified by:
        getWhenUnsatisfiableBytes in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        The bytes for whenUnsatisfiable.
      • setWhenUnsatisfiable

        public Generated.TopologySpreadConstraint.Builder setWhenUnsatisfiable​(String value)
         WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
         the spread constraint.
         - DoNotSchedule (default) tells the scheduler not to schedule it.
         - ScheduleAnyway tells the scheduler to schedule the pod in any location,
           but giving higher precedence to topologies that would help reduce the
           skew.
         A constraint is considered "Unsatisfiable" for an incoming pod
         if and only if every possible node assignment for that pod would violate
         "MaxSkew" on some topology.
         For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
         labelSelector spread as 3/1/1:
         +-------+-------+-------+
         | zone1 | zone2 | zone3 |
         +-------+-------+-------+
         | P P P |   P   |   P   |
         +-------+-------+-------+
         If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
         to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
         MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
         won't make it *more* imbalanced.
         It's a required field.
         
        optional string whenUnsatisfiable = 3;
        Parameters:
        value - The whenUnsatisfiable to set.
        Returns:
        This builder for chaining.
      • clearWhenUnsatisfiable

        public Generated.TopologySpreadConstraint.Builder clearWhenUnsatisfiable()
         WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
         the spread constraint.
         - DoNotSchedule (default) tells the scheduler not to schedule it.
         - ScheduleAnyway tells the scheduler to schedule the pod in any location,
           but giving higher precedence to topologies that would help reduce the
           skew.
         A constraint is considered "Unsatisfiable" for an incoming pod
         if and only if every possible node assignment for that pod would violate
         "MaxSkew" on some topology.
         For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
         labelSelector spread as 3/1/1:
         +-------+-------+-------+
         | zone1 | zone2 | zone3 |
         +-------+-------+-------+
         | P P P |   P   |   P   |
         +-------+-------+-------+
         If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
         to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
         MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
         won't make it *more* imbalanced.
         It's a required field.
         
        optional string whenUnsatisfiable = 3;
        Returns:
        This builder for chaining.
      • setWhenUnsatisfiableBytes

        public Generated.TopologySpreadConstraint.Builder setWhenUnsatisfiableBytes​(com.google.protobuf.ByteString value)
         WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
         the spread constraint.
         - DoNotSchedule (default) tells the scheduler not to schedule it.
         - ScheduleAnyway tells the scheduler to schedule the pod in any location,
           but giving higher precedence to topologies that would help reduce the
           skew.
         A constraint is considered "Unsatisfiable" for an incoming pod
         if and only if every possible node assignment for that pod would violate
         "MaxSkew" on some topology.
         For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
         labelSelector spread as 3/1/1:
         +-------+-------+-------+
         | zone1 | zone2 | zone3 |
         +-------+-------+-------+
         | P P P |   P   |   P   |
         +-------+-------+-------+
         If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
         to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
         MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
         won't make it *more* imbalanced.
         It's a required field.
         
        optional string whenUnsatisfiable = 3;
        Parameters:
        value - The bytes for whenUnsatisfiable to set.
        Returns:
        This builder for chaining.
      • hasLabelSelector

        public boolean hasLabelSelector()
         LabelSelector is used to find matching pods.
         Pods that match this label selector are counted to determine the number of pods
         in their corresponding topology domain.
         +optional
         
        optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;
        Specified by:
        hasLabelSelector in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        Whether the labelSelector field is set.
      • getLabelSelector

        public Generated.LabelSelector getLabelSelector()
         LabelSelector is used to find matching pods.
         Pods that match this label selector are counted to determine the number of pods
         in their corresponding topology domain.
         +optional
         
        optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;
        Specified by:
        getLabelSelector in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        The labelSelector.
      • setLabelSelector

        public Generated.TopologySpreadConstraint.Builder setLabelSelector​(Generated.LabelSelector value)
         LabelSelector is used to find matching pods.
         Pods that match this label selector are counted to determine the number of pods
         in their corresponding topology domain.
         +optional
         
        optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;
      • setLabelSelector

        public Generated.TopologySpreadConstraint.Builder setLabelSelector​(Generated.LabelSelector.Builder builderForValue)
         LabelSelector is used to find matching pods.
         Pods that match this label selector are counted to determine the number of pods
         in their corresponding topology domain.
         +optional
         
        optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;
      • mergeLabelSelector

        public Generated.TopologySpreadConstraint.Builder mergeLabelSelector​(Generated.LabelSelector value)
         LabelSelector is used to find matching pods.
         Pods that match this label selector are counted to determine the number of pods
         in their corresponding topology domain.
         +optional
         
        optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;
      • clearLabelSelector

        public Generated.TopologySpreadConstraint.Builder clearLabelSelector()
         LabelSelector is used to find matching pods.
         Pods that match this label selector are counted to determine the number of pods
         in their corresponding topology domain.
         +optional
         
        optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;
      • getLabelSelectorBuilder

        public Generated.LabelSelector.Builder getLabelSelectorBuilder()
         LabelSelector is used to find matching pods.
         Pods that match this label selector are counted to determine the number of pods
         in their corresponding topology domain.
         +optional
         
        optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 4;
      • hasMinDomains

        public boolean hasMinDomains()
         MinDomains indicates a minimum number of eligible domains.
         When the number of eligible domains with matching topology keys is less than minDomains,
         Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
         And when the number of eligible domains with matching topology keys equals or greater than minDomains,
         this value has no effect on scheduling.
         As a result, when the number of eligible domains is less than minDomains,
         scheduler won't schedule more than maxSkew Pods to those domains.
         If value is nil, the constraint behaves as if MinDomains is equal to 1.
         Valid values are integers greater than 0.
         When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
        
         For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
         labelSelector spread as 2/2/2:
         +-------+-------+-------+
         | zone1 | zone2 | zone3 |
         +-------+-------+-------+
         |  P P  |  P P  |  P P  |
         +-------+-------+-------+
         The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
         In this situation, new pod with the same labelSelector cannot be scheduled,
         because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
         it will violate MaxSkew.
         +optional
         
        optional int32 minDomains = 5;
        Specified by:
        hasMinDomains in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        Whether the minDomains field is set.
      • getMinDomains

        public int getMinDomains()
         MinDomains indicates a minimum number of eligible domains.
         When the number of eligible domains with matching topology keys is less than minDomains,
         Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
         And when the number of eligible domains with matching topology keys equals or greater than minDomains,
         this value has no effect on scheduling.
         As a result, when the number of eligible domains is less than minDomains,
         scheduler won't schedule more than maxSkew Pods to those domains.
         If value is nil, the constraint behaves as if MinDomains is equal to 1.
         Valid values are integers greater than 0.
         When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
        
         For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
         labelSelector spread as 2/2/2:
         +-------+-------+-------+
         | zone1 | zone2 | zone3 |
         +-------+-------+-------+
         |  P P  |  P P  |  P P  |
         +-------+-------+-------+
         The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
         In this situation, new pod with the same labelSelector cannot be scheduled,
         because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
         it will violate MaxSkew.
         +optional
         
        optional int32 minDomains = 5;
        Specified by:
        getMinDomains in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        The minDomains.
      • setMinDomains

        public Generated.TopologySpreadConstraint.Builder setMinDomains​(int value)
         MinDomains indicates a minimum number of eligible domains.
         When the number of eligible domains with matching topology keys is less than minDomains,
         Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
         And when the number of eligible domains with matching topology keys equals or greater than minDomains,
         this value has no effect on scheduling.
         As a result, when the number of eligible domains is less than minDomains,
         scheduler won't schedule more than maxSkew Pods to those domains.
         If value is nil, the constraint behaves as if MinDomains is equal to 1.
         Valid values are integers greater than 0.
         When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
        
         For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
         labelSelector spread as 2/2/2:
         +-------+-------+-------+
         | zone1 | zone2 | zone3 |
         +-------+-------+-------+
         |  P P  |  P P  |  P P  |
         +-------+-------+-------+
         The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
         In this situation, new pod with the same labelSelector cannot be scheduled,
         because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
         it will violate MaxSkew.
         +optional
         
        optional int32 minDomains = 5;
        Parameters:
        value - The minDomains to set.
        Returns:
        This builder for chaining.
      • clearMinDomains

        public Generated.TopologySpreadConstraint.Builder clearMinDomains()
         MinDomains indicates a minimum number of eligible domains.
         When the number of eligible domains with matching topology keys is less than minDomains,
         Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
         And when the number of eligible domains with matching topology keys equals or greater than minDomains,
         this value has no effect on scheduling.
         As a result, when the number of eligible domains is less than minDomains,
         scheduler won't schedule more than maxSkew Pods to those domains.
         If value is nil, the constraint behaves as if MinDomains is equal to 1.
         Valid values are integers greater than 0.
         When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
        
         For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
         labelSelector spread as 2/2/2:
         +-------+-------+-------+
         | zone1 | zone2 | zone3 |
         +-------+-------+-------+
         |  P P  |  P P  |  P P  |
         +-------+-------+-------+
         The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
         In this situation, new pod with the same labelSelector cannot be scheduled,
         because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
         it will violate MaxSkew.
         +optional
         
        optional int32 minDomains = 5;
        Returns:
        This builder for chaining.
      • hasNodeAffinityPolicy

        public boolean hasNodeAffinityPolicy()
         NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
         when calculating pod topology spread skew. Options are:
         - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
         - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
        
         If this value is nil, the behavior is equivalent to the Honor policy.
         This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
         +optional
         
        optional string nodeAffinityPolicy = 6;
        Specified by:
        hasNodeAffinityPolicy in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        Whether the nodeAffinityPolicy field is set.
      • getNodeAffinityPolicy

        public String getNodeAffinityPolicy()
         NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
         when calculating pod topology spread skew. Options are:
         - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
         - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
        
         If this value is nil, the behavior is equivalent to the Honor policy.
         This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
         +optional
         
        optional string nodeAffinityPolicy = 6;
        Specified by:
        getNodeAffinityPolicy in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        The nodeAffinityPolicy.
      • getNodeAffinityPolicyBytes

        public com.google.protobuf.ByteString getNodeAffinityPolicyBytes()
         NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
         when calculating pod topology spread skew. Options are:
         - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
         - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
        
         If this value is nil, the behavior is equivalent to the Honor policy.
         This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
         +optional
         
        optional string nodeAffinityPolicy = 6;
        Specified by:
        getNodeAffinityPolicyBytes in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        The bytes for nodeAffinityPolicy.
      • setNodeAffinityPolicy

        public Generated.TopologySpreadConstraint.Builder setNodeAffinityPolicy​(String value)
         NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
         when calculating pod topology spread skew. Options are:
         - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
         - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
        
         If this value is nil, the behavior is equivalent to the Honor policy.
         This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
         +optional
         
        optional string nodeAffinityPolicy = 6;
        Parameters:
        value - The nodeAffinityPolicy to set.
        Returns:
        This builder for chaining.
      • clearNodeAffinityPolicy

        public Generated.TopologySpreadConstraint.Builder clearNodeAffinityPolicy()
         NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
         when calculating pod topology spread skew. Options are:
         - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
         - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
        
         If this value is nil, the behavior is equivalent to the Honor policy.
         This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
         +optional
         
        optional string nodeAffinityPolicy = 6;
        Returns:
        This builder for chaining.
      • setNodeAffinityPolicyBytes

        public Generated.TopologySpreadConstraint.Builder setNodeAffinityPolicyBytes​(com.google.protobuf.ByteString value)
         NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
         when calculating pod topology spread skew. Options are:
         - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
         - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
        
         If this value is nil, the behavior is equivalent to the Honor policy.
         This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
         +optional
         
        optional string nodeAffinityPolicy = 6;
        Parameters:
        value - The bytes for nodeAffinityPolicy to set.
        Returns:
        This builder for chaining.
      • hasNodeTaintsPolicy

        public boolean hasNodeTaintsPolicy()
         NodeTaintsPolicy indicates how we will treat node taints when calculating
         pod topology spread skew. Options are:
         - Honor: nodes without taints, along with tainted nodes for which the incoming pod
         has a toleration, are included.
         - Ignore: node taints are ignored. All nodes are included.
        
         If this value is nil, the behavior is equivalent to the Ignore policy.
         This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
         +optional
         
        optional string nodeTaintsPolicy = 7;
        Specified by:
        hasNodeTaintsPolicy in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        Whether the nodeTaintsPolicy field is set.
      • getNodeTaintsPolicy

        public String getNodeTaintsPolicy()
         NodeTaintsPolicy indicates how we will treat node taints when calculating
         pod topology spread skew. Options are:
         - Honor: nodes without taints, along with tainted nodes for which the incoming pod
         has a toleration, are included.
         - Ignore: node taints are ignored. All nodes are included.
        
         If this value is nil, the behavior is equivalent to the Ignore policy.
         This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
         +optional
         
        optional string nodeTaintsPolicy = 7;
        Specified by:
        getNodeTaintsPolicy in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        The nodeTaintsPolicy.
      • getNodeTaintsPolicyBytes

        public com.google.protobuf.ByteString getNodeTaintsPolicyBytes()
         NodeTaintsPolicy indicates how we will treat node taints when calculating
         pod topology spread skew. Options are:
         - Honor: nodes without taints, along with tainted nodes for which the incoming pod
         has a toleration, are included.
         - Ignore: node taints are ignored. All nodes are included.
        
         If this value is nil, the behavior is equivalent to the Ignore policy.
         This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
         +optional
         
        optional string nodeTaintsPolicy = 7;
        Specified by:
        getNodeTaintsPolicyBytes in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        The bytes for nodeTaintsPolicy.
      • setNodeTaintsPolicy

        public Generated.TopologySpreadConstraint.Builder setNodeTaintsPolicy​(String value)
         NodeTaintsPolicy indicates how we will treat node taints when calculating
         pod topology spread skew. Options are:
         - Honor: nodes without taints, along with tainted nodes for which the incoming pod
         has a toleration, are included.
         - Ignore: node taints are ignored. All nodes are included.
        
         If this value is nil, the behavior is equivalent to the Ignore policy.
         This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
         +optional
         
        optional string nodeTaintsPolicy = 7;
        Parameters:
        value - The nodeTaintsPolicy to set.
        Returns:
        This builder for chaining.
      • clearNodeTaintsPolicy

        public Generated.TopologySpreadConstraint.Builder clearNodeTaintsPolicy()
         NodeTaintsPolicy indicates how we will treat node taints when calculating
         pod topology spread skew. Options are:
         - Honor: nodes without taints, along with tainted nodes for which the incoming pod
         has a toleration, are included.
         - Ignore: node taints are ignored. All nodes are included.
        
         If this value is nil, the behavior is equivalent to the Ignore policy.
         This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
         +optional
         
        optional string nodeTaintsPolicy = 7;
        Returns:
        This builder for chaining.
      • setNodeTaintsPolicyBytes

        public Generated.TopologySpreadConstraint.Builder setNodeTaintsPolicyBytes​(com.google.protobuf.ByteString value)
         NodeTaintsPolicy indicates how we will treat node taints when calculating
         pod topology spread skew. Options are:
         - Honor: nodes without taints, along with tainted nodes for which the incoming pod
         has a toleration, are included.
         - Ignore: node taints are ignored. All nodes are included.
        
         If this value is nil, the behavior is equivalent to the Ignore policy.
         This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
         +optional
         
        optional string nodeTaintsPolicy = 7;
        Parameters:
        value - The bytes for nodeTaintsPolicy to set.
        Returns:
        This builder for chaining.
      • getMatchLabelKeysList

        public com.google.protobuf.ProtocolStringList getMatchLabelKeysList()
         MatchLabelKeys is a set of pod label keys to select the pods over which
         spreading will be calculated. The keys are used to lookup values from the
         incoming pod labels, those key-value labels are ANDed with labelSelector
         to select the group of existing pods over which spreading will be calculated
         for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
         MatchLabelKeys cannot be set when LabelSelector isn't set.
         Keys that don't exist in the incoming pod labels will
         be ignored. A null or empty list means only match against labelSelector.
        
         This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
         +listType=atomic
         +optional
         
        repeated string matchLabelKeys = 8;
        Specified by:
        getMatchLabelKeysList in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        A list containing the matchLabelKeys.
      • getMatchLabelKeysCount

        public int getMatchLabelKeysCount()
         MatchLabelKeys is a set of pod label keys to select the pods over which
         spreading will be calculated. The keys are used to lookup values from the
         incoming pod labels, those key-value labels are ANDed with labelSelector
         to select the group of existing pods over which spreading will be calculated
         for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
         MatchLabelKeys cannot be set when LabelSelector isn't set.
         Keys that don't exist in the incoming pod labels will
         be ignored. A null or empty list means only match against labelSelector.
        
         This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
         +listType=atomic
         +optional
         
        repeated string matchLabelKeys = 8;
        Specified by:
        getMatchLabelKeysCount in interface Generated.TopologySpreadConstraintOrBuilder
        Returns:
        The count of matchLabelKeys.
      • getMatchLabelKeys

        public String getMatchLabelKeys​(int index)
         MatchLabelKeys is a set of pod label keys to select the pods over which
         spreading will be calculated. The keys are used to lookup values from the
         incoming pod labels, those key-value labels are ANDed with labelSelector
         to select the group of existing pods over which spreading will be calculated
         for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
         MatchLabelKeys cannot be set when LabelSelector isn't set.
         Keys that don't exist in the incoming pod labels will
         be ignored. A null or empty list means only match against labelSelector.
        
         This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
         +listType=atomic
         +optional
         
        repeated string matchLabelKeys = 8;
        Specified by:
        getMatchLabelKeys in interface Generated.TopologySpreadConstraintOrBuilder
        Parameters:
        index - The index of the element to return.
        Returns:
        The matchLabelKeys at the given index.
      • getMatchLabelKeysBytes

        public com.google.protobuf.ByteString getMatchLabelKeysBytes​(int index)
         MatchLabelKeys is a set of pod label keys to select the pods over which
         spreading will be calculated. The keys are used to lookup values from the
         incoming pod labels, those key-value labels are ANDed with labelSelector
         to select the group of existing pods over which spreading will be calculated
         for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
         MatchLabelKeys cannot be set when LabelSelector isn't set.
         Keys that don't exist in the incoming pod labels will
         be ignored. A null or empty list means only match against labelSelector.
        
         This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
         +listType=atomic
         +optional
         
        repeated string matchLabelKeys = 8;
        Specified by:
        getMatchLabelKeysBytes in interface Generated.TopologySpreadConstraintOrBuilder
        Parameters:
        index - The index of the value to return.
        Returns:
        The bytes of the matchLabelKeys at the given index.
      • setMatchLabelKeys

        public Generated.TopologySpreadConstraint.Builder setMatchLabelKeys​(int index,
                                                                            String value)
         MatchLabelKeys is a set of pod label keys to select the pods over which
         spreading will be calculated. The keys are used to lookup values from the
         incoming pod labels, those key-value labels are ANDed with labelSelector
         to select the group of existing pods over which spreading will be calculated
         for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
         MatchLabelKeys cannot be set when LabelSelector isn't set.
         Keys that don't exist in the incoming pod labels will
         be ignored. A null or empty list means only match against labelSelector.
        
         This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
         +listType=atomic
         +optional
         
        repeated string matchLabelKeys = 8;
        Parameters:
        index - The index to set the value at.
        value - The matchLabelKeys to set.
        Returns:
        This builder for chaining.
      • addMatchLabelKeys

        public Generated.TopologySpreadConstraint.Builder addMatchLabelKeys​(String value)
         MatchLabelKeys is a set of pod label keys to select the pods over which
         spreading will be calculated. The keys are used to lookup values from the
         incoming pod labels, those key-value labels are ANDed with labelSelector
         to select the group of existing pods over which spreading will be calculated
         for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
         MatchLabelKeys cannot be set when LabelSelector isn't set.
         Keys that don't exist in the incoming pod labels will
         be ignored. A null or empty list means only match against labelSelector.
        
         This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
         +listType=atomic
         +optional
         
        repeated string matchLabelKeys = 8;
        Parameters:
        value - The matchLabelKeys to add.
        Returns:
        This builder for chaining.
      • addAllMatchLabelKeys

        public Generated.TopologySpreadConstraint.Builder addAllMatchLabelKeys​(Iterable<String> values)
         MatchLabelKeys is a set of pod label keys to select the pods over which
         spreading will be calculated. The keys are used to lookup values from the
         incoming pod labels, those key-value labels are ANDed with labelSelector
         to select the group of existing pods over which spreading will be calculated
         for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
         MatchLabelKeys cannot be set when LabelSelector isn't set.
         Keys that don't exist in the incoming pod labels will
         be ignored. A null or empty list means only match against labelSelector.
        
         This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
         +listType=atomic
         +optional
         
        repeated string matchLabelKeys = 8;
        Parameters:
        values - The matchLabelKeys to add.
        Returns:
        This builder for chaining.
      • clearMatchLabelKeys

        public Generated.TopologySpreadConstraint.Builder clearMatchLabelKeys()
         MatchLabelKeys is a set of pod label keys to select the pods over which
         spreading will be calculated. The keys are used to lookup values from the
         incoming pod labels, those key-value labels are ANDed with labelSelector
         to select the group of existing pods over which spreading will be calculated
         for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
         MatchLabelKeys cannot be set when LabelSelector isn't set.
         Keys that don't exist in the incoming pod labels will
         be ignored. A null or empty list means only match against labelSelector.
        
         This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
         +listType=atomic
         +optional
         
        repeated string matchLabelKeys = 8;
        Returns:
        This builder for chaining.
      • addMatchLabelKeysBytes

        public Generated.TopologySpreadConstraint.Builder addMatchLabelKeysBytes​(com.google.protobuf.ByteString value)
         MatchLabelKeys is a set of pod label keys to select the pods over which
         spreading will be calculated. The keys are used to lookup values from the
         incoming pod labels, those key-value labels are ANDed with labelSelector
         to select the group of existing pods over which spreading will be calculated
         for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
         MatchLabelKeys cannot be set when LabelSelector isn't set.
         Keys that don't exist in the incoming pod labels will
         be ignored. A null or empty list means only match against labelSelector.
        
         This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
         +listType=atomic
         +optional
         
        repeated string matchLabelKeys = 8;
        Parameters:
        value - The bytes of the matchLabelKeys to add.
        Returns:
        This builder for chaining.