Class V1.TopologySpreadConstraint

java.lang.Object
com.google.protobuf.AbstractMessageLite
com.google.protobuf.AbstractMessage
com.google.protobuf.GeneratedMessageV3
io.kubernetes.client.proto.V1.TopologySpreadConstraint
All Implemented Interfaces:
com.google.protobuf.Message, com.google.protobuf.MessageLite, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, V1.TopologySpreadConstraintOrBuilder, Serializable
Enclosing class:
V1

public static final class V1.TopologySpreadConstraint extends com.google.protobuf.GeneratedMessageV3 implements V1.TopologySpreadConstraintOrBuilder
 TopologySpreadConstraint specifies how to spread matching pods among the given topology.
 
Protobuf type k8s.io.api.core.v1.TopologySpreadConstraint
See Also:
  • Field Details

  • Method Details

    • getUnknownFields

      public final com.google.protobuf.UnknownFieldSet getUnknownFields()
      Specified by:
      getUnknownFields in interface com.google.protobuf.MessageOrBuilder
      Overrides:
      getUnknownFields in class com.google.protobuf.GeneratedMessageV3
    • 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
    • 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.
       For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
       labelSelector spread as 1/1/0:
       +-------+-------+-------+
       | zone1 | zone2 | zone3 |
       +-------+-------+-------+
       |   P   |   P   |       |
       +-------+-------+-------+
       - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1;
       scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2)
       violate MaxSkew(1).
       - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
       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 V1.TopologySpreadConstraintOrBuilder
    • 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.
       For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
       labelSelector spread as 1/1/0:
       +-------+-------+-------+
       | zone1 | zone2 | zone3 |
       +-------+-------+-------+
       |   P   |   P   |       |
       +-------+-------+-------+
       - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1;
       scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2)
       violate MaxSkew(1).
       - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
       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 V1.TopologySpreadConstraintOrBuilder
    • 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.
       It's a required field.
       
      optional string topologyKey = 2;
      Specified by:
      hasTopologyKey in interface V1.TopologySpreadConstraintOrBuilder
    • 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.
       It's a required field.
       
      optional string topologyKey = 2;
      Specified by:
      getTopologyKey in interface V1.TopologySpreadConstraintOrBuilder
    • 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.
       It's a required field.
       
      optional string topologyKey = 2;
      Specified by:
      getTopologyKeyBytes in interface V1.TopologySpreadConstraintOrBuilder
    • 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 V1.TopologySpreadConstraintOrBuilder
    • 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 V1.TopologySpreadConstraintOrBuilder
    • 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 V1.TopologySpreadConstraintOrBuilder
    • 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 V1.TopologySpreadConstraintOrBuilder
    • getLabelSelector

      public Meta.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 V1.TopologySpreadConstraintOrBuilder
    • getLabelSelectorOrBuilder

      public Meta.LabelSelectorOrBuilder getLabelSelectorOrBuilder()
       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:
      getLabelSelectorOrBuilder in interface V1.TopologySpreadConstraintOrBuilder
    • isInitialized

      public final boolean isInitialized()
      Specified by:
      isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
      Overrides:
      isInitialized in class com.google.protobuf.GeneratedMessageV3
    • writeTo

      public void writeTo(com.google.protobuf.CodedOutputStream output) throws IOException
      Specified by:
      writeTo in interface com.google.protobuf.MessageLite
      Overrides:
      writeTo in class com.google.protobuf.GeneratedMessageV3
      Throws:
      IOException
    • getSerializedSize

      public int getSerializedSize()
      Specified by:
      getSerializedSize in interface com.google.protobuf.MessageLite
      Overrides:
      getSerializedSize in class com.google.protobuf.GeneratedMessageV3
    • equals

      public boolean equals(Object obj)
      Specified by:
      equals in interface com.google.protobuf.Message
      Overrides:
      equals in class com.google.protobuf.AbstractMessage
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface com.google.protobuf.Message
      Overrides:
      hashCode in class com.google.protobuf.AbstractMessage
    • parseFrom

      public static V1.TopologySpreadConstraint parseFrom(ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static V1.TopologySpreadConstraint parseFrom(ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static V1.TopologySpreadConstraint parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static V1.TopologySpreadConstraint parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static V1.TopologySpreadConstraint parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static V1.TopologySpreadConstraint parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static V1.TopologySpreadConstraint parseFrom(InputStream input) throws IOException
      Throws:
      IOException
    • parseFrom

      public static V1.TopologySpreadConstraint parseFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • parseDelimitedFrom

      public static V1.TopologySpreadConstraint parseDelimitedFrom(InputStream input) throws IOException
      Throws:
      IOException
    • parseDelimitedFrom

      public static V1.TopologySpreadConstraint parseDelimitedFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • parseFrom

      public static V1.TopologySpreadConstraint parseFrom(com.google.protobuf.CodedInputStream input) throws IOException
      Throws:
      IOException
    • parseFrom

      public static V1.TopologySpreadConstraint parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • newBuilderForType

      public V1.TopologySpreadConstraint.Builder newBuilderForType()
      Specified by:
      newBuilderForType in interface com.google.protobuf.Message
      Specified by:
      newBuilderForType in interface com.google.protobuf.MessageLite
    • newBuilder

      public static V1.TopologySpreadConstraint.Builder newBuilder()
    • newBuilder

    • toBuilder

      Specified by:
      toBuilder in interface com.google.protobuf.Message
      Specified by:
      toBuilder in interface com.google.protobuf.MessageLite
    • newBuilderForType

      protected V1.TopologySpreadConstraint.Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
      Specified by:
      newBuilderForType in class com.google.protobuf.GeneratedMessageV3
    • getDefaultInstance

      public static V1.TopologySpreadConstraint getDefaultInstance()
    • parser

      public static com.google.protobuf.Parser<V1.TopologySpreadConstraint> parser()
    • getParserForType

      public com.google.protobuf.Parser<V1.TopologySpreadConstraint> getParserForType()
      Specified by:
      getParserForType in interface com.google.protobuf.Message
      Specified by:
      getParserForType in interface com.google.protobuf.MessageLite
      Overrides:
      getParserForType in class com.google.protobuf.GeneratedMessageV3
    • getDefaultInstanceForType

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