@@ -1054,6 +1054,10 @@ spec:
1054
1054
type : string
1055
1055
description : (Optional) Labels to add to the Dragonfly pods.
1056
1056
type : object
1057
+ memcachedPort :
1058
+ description : (Optional) Dragonfly memcached port
1059
+ format : int32
1060
+ type : integer
1057
1061
nodeSelector :
1058
1062
additionalProperties :
1059
1063
type : string
@@ -1413,98 +1417,169 @@ spec:
1413
1417
topologySpreadConstraints :
1414
1418
description : (Optional) Dragonfly pod topologySpreadConstraints
1415
1419
items :
1416
- description : The pod this TopologySpreadConstraints is attached
1420
+ description : TopologySpreadConstraint specifies how to spread matching
1421
+ pods among the given topology.
1417
1422
properties :
1418
- maxSkew :
1419
- description : the degree to which Pods may be unevenly distributed.
1420
- You must specify this field and the number must be greater than zero.
1421
- Its semantics differ according to the value of whenUnsatisfiable
1422
- format : int32
1423
- type : integer
1424
- minDomains :
1425
- description : (Optional) indicates a minimum number of eligible domains.
1426
- This field is optional. A domain is a particular instance of a topology.
1427
- An eligible domain is a domain whose nodes match the node selector
1428
- format : int32
1429
- type : integer
1430
- topologyKey :
1431
- description : the key of node labels. Nodes that have a label with this key and
1432
- identical values are considered to be in the same topology. We call each
1433
- instance of a topology (in other words, a <key, value> pair) a domain.
1434
- The scheduler will try to put a balanced number of pods into each domain.
1435
- Also, we define an eligible domain as a domain whose nodes meet the
1436
- requirements of nodeAffinityPolicy and nodeTaintsPolicy.
1437
- type : string
1438
- whenUnsatisfiable :
1439
- description : DoNotSchedule (default) tells the scheduler not to schedule it.
1440
- ScheduleAnyway tells the scheduler to still schedule it while prioritizing
1441
- nodes that minimize the skew.
1442
- type : string
1443
1423
labelSelector :
1444
- description : A label query over a set of resources,
1445
- in this case pods.
1424
+ description : LabelSelector is used to find matching pods. Pods
1425
+ that match this label selector are counted to determine the
1426
+ number of pods in their corresponding topology domain.
1446
1427
properties :
1447
1428
matchExpressions :
1448
- description : matchExpressions is a list of label
1449
- selector requirements. The requirements are
1450
- ANDed.
1429
+ description : matchExpressions is a list of label selector
1430
+ requirements. The requirements are ANDed.
1451
1431
items :
1452
- description : A label selector requirement
1453
- is a selector that contains values, a key,
1454
- and an operator that relates the key and
1455
- values.
1432
+ description : A label selector requirement is a selector
1433
+ that contains values, a key, and an operator that relates
1434
+ the key and values.
1456
1435
properties :
1457
1436
key :
1458
- description : key is the label key that
1459
- the selector applies to.
1437
+ description : key is the label key that the selector
1438
+ applies to.
1460
1439
type : string
1461
1440
operator :
1462
- description : operator represents a key's
1463
- relationship to a set of values. Valid
1464
- operators are In, NotIn, Exists and
1465
- DoesNotExist.
1441
+ description : operator represents a key's relationship
1442
+ to a set of values. Valid operators are In, NotIn,
1443
+ Exists and DoesNotExist.
1466
1444
type : string
1467
1445
values :
1468
- description : values is an array of string
1469
- values. If the operator is In or NotIn,
1470
- the values array must be non-empty.
1471
- If the operator is Exists or DoesNotExist,
1472
- the values array must be empty. This
1473
- array is replaced during a strategic
1474
- merge patch.
1446
+ description : values is an array of string values.
1447
+ If the operator is In or NotIn, the values array
1448
+ must be non-empty. If the operator is Exists or
1449
+ DoesNotExist, the values array must be empty. This
1450
+ array is replaced during a strategic merge patch.
1475
1451
items :
1476
1452
type : string
1477
1453
type : array
1478
1454
required :
1479
- - key
1480
- - operator
1455
+ - key
1456
+ - operator
1481
1457
type : object
1482
1458
type : array
1483
1459
matchLabels :
1484
1460
additionalProperties :
1485
1461
type : string
1486
- description : matchLabels is a map of {key,value}
1487
- pairs. A single {key,value} in the matchLabels
1488
- map is equivalent to an element of matchExpressions,
1489
- whose key field is "key", the operator is
1490
- " In" , and the values array contains only "value".
1491
- The requirements are ANDed.
1462
+ description : matchLabels is a map of {key,value} pairs.
1463
+ A single {key,value} in the matchLabels map is equivalent
1464
+ to an element of matchExpressions, whose key field is
1465
+ " key" , the operator is "In", and the values array contains
1466
+ only "value". The requirements are ANDed.
1492
1467
type : object
1493
1468
type : object
1494
1469
x-kubernetes-map-type : atomic
1495
1470
matchLabelKeys :
1496
- description : field is a beta-level field and enabled by default in 1.27.
1497
- You can disable it by disabling the MatchLabelKeysInPodTopologySpread
1471
+ description : MatchLabelKeys is a set of pod label keys to select
1472
+ the pods over which spreading will be calculated. The keys
1473
+ are used to lookup values from the incoming pod labels, those
1474
+ key-value labels are ANDed with labelSelector to select the
1475
+ group of existing pods over which spreading will be calculated
1476
+ for the incoming pod. Keys that don't exist in the incoming
1477
+ pod labels will be ignored. A null or empty list means only
1478
+ match against labelSelector.
1498
1479
items :
1499
1480
type : string
1500
1481
type : array
1482
+ x-kubernetes-list-type : atomic
1483
+ maxSkew :
1484
+ description : ' MaxSkew describes the degree to which pods may
1485
+ be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,
1486
+ it is the maximum permitted difference between the number
1487
+ of matching pods in the target topology and the global minimum.
1488
+ The global minimum is the minimum number of matching pods
1489
+ in an eligible domain or zero if the number of eligible domains
1490
+ is less than MinDomains. For example, in a 3-zone cluster,
1491
+ MaxSkew is set to 1, and pods with the same labelSelector
1492
+ spread as 2/2/1: In this case, the global minimum is 1. |
1493
+ zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew
1494
+ is 1, incoming pod can only be scheduled to zone3 to become
1495
+ 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1)
1496
+ on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming
1497
+ pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`,
1498
+ it is used to give higher precedence to topologies that satisfy
1499
+ it. It'' s a required field. Default value is 1 and 0 is not
1500
+ allowed.'
1501
+ format : int32
1502
+ type : integer
1503
+ minDomains :
1504
+ description : " MinDomains indicates a minimum number of eligible
1505
+ domains. When the number of eligible domains with matching
1506
+ topology keys is less than minDomains, Pod Topology Spread
1507
+ treats \" global minimum\" as 0, and then the calculation of
1508
+ Skew is performed. And when the number of eligible domains
1509
+ with matching topology keys equals or greater than minDomains,
1510
+ this value has no effect on scheduling. As a result, when
1511
+ the number of eligible domains is less than minDomains, scheduler
1512
+ won't schedule more than maxSkew Pods to those domains. If
1513
+ value is nil, the constraint behaves as if MinDomains is equal
1514
+ to 1. Valid values are integers greater than 0. When value
1515
+ is not nil, WhenUnsatisfiable must be DoNotSchedule. \n For
1516
+ example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains
1517
+ is set to 5 and pods with the same labelSelector spread as
1518
+ 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P |
1519
+ The number of domains is less than 5(MinDomains), so \" global
1520
+ minimum\" is treated as 0. In this situation, new pod with
1521
+ the same labelSelector cannot be scheduled, because computed
1522
+ skew will be 3(3 - 0) if new Pod is scheduled to any of the
1523
+ three zones, it will violate MaxSkew. \n This is a beta field
1524
+ and requires the MinDomainsInPodTopologySpread feature gate
1525
+ to be enabled (enabled by default)."
1526
+ format : int32
1527
+ type : integer
1501
1528
nodeAffinityPolicy :
1502
- description : indicates how we will treat Pod's nodeAffinity/nodeSelector
1503
- when calculating pod topology spread skew. Options are Honor or Ignore
1529
+ description : " NodeAffinityPolicy indicates how we will treat
1530
+ Pod's nodeAffinity/nodeSelector when calculating pod topology
1531
+ spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector
1532
+ are included in the calculations. - Ignore: nodeAffinity/nodeSelector
1533
+ are ignored. All nodes are included in the calculations. \n
1534
+ If this value is nil, the behavior is equivalent to the Honor
1535
+ policy. This is a beta-level feature default enabled by the
1536
+ NodeInclusionPolicyInPodTopologySpread feature flag."
1504
1537
type : string
1505
1538
nodeTaintsPolicy :
1506
- description : indicates how we will treat node taints when calculating pod topology spread skew. Honor or Ignore
1539
+ description : " NodeTaintsPolicy indicates how we will treat node
1540
+ taints when calculating pod topology spread skew. Options
1541
+ are: - Honor: nodes without taints, along with tainted nodes
1542
+ for which the incoming pod has a toleration, are included.
1543
+ - Ignore: node taints are ignored. All nodes are included.
1544
+ \n If this value is nil, the behavior is equivalent to the
1545
+ Ignore policy. This is a beta-level feature default enabled
1546
+ by the NodeInclusionPolicyInPodTopologySpread feature flag."
1547
+ type : string
1548
+ topologyKey :
1549
+ description : TopologyKey is the key of node labels. Nodes that
1550
+ have a label with this key and identical values are considered
1551
+ to be in the same topology. We consider each <key, value>
1552
+ as a "bucket", and try to put balanced number of pods into
1553
+ each bucket. We define a domain as a particular instance of
1554
+ a topology. Also, we define an eligible domain as a domain
1555
+ whose nodes meet the requirements of nodeAffinityPolicy and
1556
+ nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname",
1557
+ each Node is a domain of that topology. And, if TopologyKey
1558
+ is "topology.kubernetes.io/zone", each zone is a domain of
1559
+ that topology. It's a required field.
1507
1560
type : string
1561
+ whenUnsatisfiable :
1562
+ description : ' WhenUnsatisfiable indicates how to deal with a
1563
+ pod if it doesn'' t satisfy the spread constraint. - DoNotSchedule
1564
+ (default) tells the scheduler not to schedule it. - ScheduleAnyway
1565
+ tells the scheduler to schedule the pod in any location, but
1566
+ giving higher precedence to topologies that would help reduce
1567
+ the skew. A constraint is considered "Unsatisfiable" for an
1568
+ incoming pod if and only if every possible node assignment
1569
+ for that pod would violate "MaxSkew" on some topology. For
1570
+ example, in a 3-zone cluster, MaxSkew is set to 1, and pods
1571
+ with the same labelSelector spread as 3/1/1: | zone1 | zone2
1572
+ | zone3 | | P P P | P | P | If WhenUnsatisfiable is
1573
+ set to DoNotSchedule, incoming pod can only be scheduled to
1574
+ zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on
1575
+ zone2(zone3) satisfies MaxSkew(1). In other words, the cluster
1576
+ can still be imbalanced, but scheduler won'' t make it *more*
1577
+ imbalanced. It'' s a required field.'
1578
+ type : string
1579
+ required :
1580
+ - maxSkew
1581
+ - topologyKey
1582
+ - whenUnsatisfiable
1508
1583
type : object
1509
1584
type : array
1510
1585
type : object
0 commit comments