# GameServerAllocation Specification

> A `GameServerAllocation` is used to atomically allocate a GameServer out of a set of GameServers. This could be a single Fleet, multiple Fleets, or a self managed group of GameServers.

---

LLMS index: [llms.txt](/site/llms.txt)

---

Allocation is the process of selecting the optimal `GameServer` that matches the filters defined in the `GameServerAllocation` specification below, and returning its details.

A successful Alloction moves the `GameServer` to the `Allocated` state, which indicates that it is currently active, likely with players on it, and should not be removed until SDK.Shutdown() is called, or it is explicitly manually deleted.

A full `GameServerAllocation` specification is available below and in the

<a href="https://github.com/agones-dev/agones/blob/release-1.58.0//examples/gameserverallocation.yaml" target="_blank" data-proofer-ignore>example folder</a>
 for reference:



  
  
<ul class="nav nav-tabs" id="tabs-1" role="tablist">
  <li class="nav-item">
      <button class="nav-link active"
          id="tabs-01-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-01-00" role="tab"
          data-td-tp-persist="selectors" aria-controls="tabs-01-00" aria-selected="true">
        selectors
      </button>
    </li><li class="nav-item">
      <button class="nav-link"
          id="tabs-01-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-01-01" role="tab"
          data-td-tp-persist="required & preferred (deprecated)" aria-controls="tabs-01-01" aria-selected="false">
        required &amp; preferred (deprecated)
      </button>
    </li>
</ul>

<div class="tab-content" id="tabs-1-content">
    <div class="tab-pane fade show active"
        id="tabs-01-00" role="tabpanel" aria-labelled-by="tabs-01-00-tab" tabindex="1">
        <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">apiVersion</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#4e9a06">&#34;allocation.agones.dev/v1&#34;</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">kind</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">GameServerAllocation</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">spec</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># GameServer selector from which to choose GameServers from.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># Defaults to all GameServers.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># matchLabels, matchExpressions, gameServerState and player filters can be used for filtering.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># See: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more details on label selectors.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># An ordered list of GameServer label selectors.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># If the first selector is not matched, the selection attempts the second selector, and so on.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># This is useful for things like smoke testing of new game servers.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#204a87;font-weight:bold">selectors</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span>- <span style="color:#204a87;font-weight:bold">matchLabels</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#204a87;font-weight:bold">agones.dev/fleet</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">green-fleet</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#8f5902;font-style:italic"># [Stage:Alpha]</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#8f5902;font-style:italic"># [FeatureFlag:PlayerAllocationFilter]</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">players</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#204a87;font-weight:bold">minAvailable</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">0</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#204a87;font-weight:bold">maxAvailable</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">99</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span>- <span style="color:#204a87;font-weight:bold">matchLabels</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#204a87;font-weight:bold">agones.dev/fleet</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">blue-fleet</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span>- <span style="color:#204a87;font-weight:bold">matchLabels</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#204a87;font-weight:bold">game</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">my-game</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">matchExpressions</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span>- {<span style="color:#204a87;font-weight:bold">key: tier, operator: In, values</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">cache]}</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#8f5902;font-style:italic"># Specifies which State is the filter to be used when attempting to retrieve a GameServer</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#8f5902;font-style:italic"># via Allocation. Defaults to &#34;Ready&#34;. The only other option is &#34;Allocated&#34;, which can be used in conjunction with</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#8f5902;font-style:italic"># label/annotation/player selectors to retrieve an already Allocated GameServer.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">gameServerState</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">Ready</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#8f5902;font-style:italic"># [Stage:Beta]</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#8f5902;font-style:italic"># [FeatureFlag:CountsAndLists]</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">counters</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># selector for counter current values of a GameServer count</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#204a87;font-weight:bold">rooms</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">          </span><span style="color:#204a87;font-weight:bold">minCount</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># minimum value. Defaults to 0.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">          </span><span style="color:#204a87;font-weight:bold">maxCount</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">5</span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># maximum value. Defaults to max(int64)</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">          </span><span style="color:#204a87;font-weight:bold">minAvailable</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># minimum available (current capacity - current count). Defaults to 0.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">          </span><span style="color:#204a87;font-weight:bold">maxAvailable</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">10</span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># maximum available (current capacity - current count) Defaults to max(int64)</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">lists</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#204a87;font-weight:bold">players</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">          </span><span style="color:#204a87;font-weight:bold">containsValue</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#4e9a06">&#34;x6k8z&#34;</span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># only match GameServers who has this value in the list. Defaults to &#34;&#34;, which is all.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">          </span><span style="color:#204a87;font-weight:bold">minAvailable</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># minimum available (current capacity - current count). Defaults to 0.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">          </span><span style="color:#204a87;font-weight:bold">maxAvailable</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">10</span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># maximum available (current capacity - current count) Defaults to 0, which translates to max(int64)</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#8f5902;font-style:italic"># [Stage:Alpha]</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#8f5902;font-style:italic"># [FeatureFlag:PlayerAllocationFilter]</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#8f5902;font-style:italic"># Provides a filter on minimum and maximum values for player capacity when retrieving a GameServer</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#8f5902;font-style:italic"># through Allocation. Defaults to no limits.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">players</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#204a87;font-weight:bold">minAvailable</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">0</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#204a87;font-weight:bold">maxAvailable</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">99</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># defines how GameServers are organised across the cluster.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># Options include:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># &#34;Packed&#34; (default) is aimed at dynamic Kubernetes clusters, such as cloud providers, wherein we want to bin pack</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># resources</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># &#34;Distributed&#34; is aimed at static Kubernetes clusters, wherein we want to distribute resources across the entire</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># cluster</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#204a87;font-weight:bold">scheduling</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">Packed</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># Optional custom metadata that is added to the game server at allocation</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># You can use this to tell the server necessary session data</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#204a87;font-weight:bold">metadata</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#204a87;font-weight:bold">labels</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">mode</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">deathmatch</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#204a87;font-weight:bold">annotations</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">map</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">  </span><span style="color:#000">garden22</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># [Stage: Beta]</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># [FeatureFlag:CountsAndLists]</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># `Priorities` configuration alters the order in which `GameServers` are searched for matches to the configured `selectors`.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic">#</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># Priority of sorting is in descending importance. I.e. The position 0 `priority` entry is checked first.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic">#</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># For `Packed` strategy sorting, this priority list will be the tie-breaker within the least utilised infrastructure, to ensure optimal</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># infrastructure usage while also allowing some custom prioritisation of `GameServers`.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic">#</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># For `Distributed` strategy sorting, the entire selection of `GameServers` will be sorted by this priority list to provide the</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># order that `GameServers` will be allocated by.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># Optional.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#204a87;font-weight:bold">priorities</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span>- <span style="color:#204a87;font-weight:bold">type</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">Counter </span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># Whether a Counter or a List.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#204a87;font-weight:bold">key</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">rooms </span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># The name of the Counter or List.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#204a87;font-weight:bold">order</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">Ascending </span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># &#34;Ascending&#34; lists smaller available capacity first.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># [Stage: Beta]</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># [FeatureFlag:CountsAndLists]</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># Counter actions to perform during allocation. Optional.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#204a87;font-weight:bold">counters</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#204a87;font-weight:bold">rooms</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">action</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">Increment</span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># Either &#34;Increment&#34; or &#34;Decrement&#34; the Counter’s Count.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">amount</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">1</span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># Amount is the amount to increment or decrement the Count. Must be a positive integer.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">capacity</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">5</span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># Amount to update the maximum capacity of the Counter to this number. Min 0, Max int64.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># List actions to perform during allocation. Optional.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#204a87;font-weight:bold">lists</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#204a87;font-weight:bold">players</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">addValues</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># appends values to a List’s Values array. Any duplicate values will be ignored</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span>- <span style="color:#000">x7un</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span>- <span style="color:#000">8inz</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">capacity</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">40</span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># Updates the maximum capacity of the Counter to this number. Min 0, Max 1000.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">deleteValues</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#8f5902;font-style:italic"># removes values from a List&#39;s Values array. Any nonexistant values are ignored.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span>- <span style="color:#000">alice</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span>- <span style="color:#000">bob</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span></span></span></code></pre></div>
    </div>
    <div class="tab-pane fade"
        id="tabs-01-01" role="tabpanel" aria-labelled-by="tabs-01-01-tab" tabindex="1">
        <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">apiVersion</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#4e9a06">&#34;allocation.agones.dev/v1&#34;</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">kind</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">GameServerAllocation</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">spec</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># Deprecated, use field selectors instead.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># GameServer selector from which to choose GameServers from.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># Defaults to all GameServers.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># matchLabels, matchExpressions, gameServerState and player filters can be used for filtering.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># See: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more details on label selectors.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># Deprecated, use field selectors instead.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#204a87;font-weight:bold">required</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#204a87;font-weight:bold">matchLabels</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">game</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">my-game</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#204a87;font-weight:bold">matchExpressions</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span>- {<span style="color:#204a87;font-weight:bold">key: tier, operator: In, values</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#000">cache]}</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#8f5902;font-style:italic"># Specifies which State is the filter to be used when attempting to retrieve a GameServer</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#8f5902;font-style:italic"># via Allocation. Defaults to &#34;Ready&#34;. The only other option is &#34;Allocated&#34;, which can be used in conjunction with</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#8f5902;font-style:italic"># label/annotation/player selectors to retrieve an already Allocated GameServer.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#204a87;font-weight:bold">gameServerState</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">Ready</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#8f5902;font-style:italic"># [Stage:Alpha]</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#8f5902;font-style:italic"># [FeatureFlag:PlayerAllocationFilter]</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#8f5902;font-style:italic"># Provides a filter on minimum and maximum values for player capacity when retrieving a GameServer</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#8f5902;font-style:italic"># through Allocation. Defaults to no limits.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#204a87;font-weight:bold">players</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">minAvailable</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">0</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">maxAvailable</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">99</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># Deprecated, use field selectors instead.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># An ordered list of preferred GameServer label selectors</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># that are optional to be fulfilled, but will be searched before the `required` selector.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># If the first selector is not matched, the selection attempts the second selector, and so on.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># If any of the preferred selectors are matched, the required selector is not considered.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># This is useful for things like smoke testing of new game servers.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># This also support matchExpressions, gameServerState and player filters.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#204a87;font-weight:bold">preferred</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span>- <span style="color:#204a87;font-weight:bold">matchLabels</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#204a87;font-weight:bold">agones.dev/fleet</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">green-fleet</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#8f5902;font-style:italic"># [Stage:Alpha]</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#8f5902;font-style:italic"># [FeatureFlag:PlayerAllocationFilter]</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">players</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#204a87;font-weight:bold">minAvailable</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">0</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#204a87;font-weight:bold">maxAvailable</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#0000cf;font-weight:bold">99</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span>- <span style="color:#204a87;font-weight:bold">matchLabels</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">        </span><span style="color:#204a87;font-weight:bold">agones.dev/fleet</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">blue-fleet</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># defines how GameServers are organised across the cluster.</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># Options include:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># &#34;Packed&#34; (default) is aimed at dynamic Kubernetes clusters, such as cloud providers, wherein we want to bin pack</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># resources</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># &#34;Distributed&#34; is aimed at static Kubernetes clusters, wherein we want to distribute resources across the entire</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># cluster</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#204a87;font-weight:bold">scheduling</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">Packed</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># Optional custom metadata that is added to the game server at allocation</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#8f5902;font-style:italic"># You can use this to tell the server necessary session data</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span><span style="color:#204a87;font-weight:bold">metadata</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#204a87;font-weight:bold">labels</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">mode</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8"> </span><span style="color:#000">deathmatch</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">    </span><span style="color:#204a87;font-weight:bold">annotations</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">      </span><span style="color:#204a87;font-weight:bold">map</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8">  </span><span style="color:#000">garden22</span><span style="color:#f8f8f8">
</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8">  </span></span></span></code></pre></div>
    </div>
</div>


The `spec` field is the actual `GameServerAllocation` specification, and it is composed as follows:

- Deprecated, use `selectors` instead. If `selectors` is set, this field will be ignored.
  `required` is a [GameServerSelector][gameserverselector]
  (matchLabels. matchExpressions, gameServerState and player filters) from which to choose GameServers from.
- Deprecated, use `selectors` instead. If `selectors` is set, this field will be ignored.
  `preferred` is an ordered list of preferred [GameServerSelector][gameserverselector]
  that are _optional_ to be fulfilled, but will be searched before the `required` selector.
  If the first selector is not matched, the selection attempts the second selector, and so on.
  If any of the `preferred` selectors are matched, the `required` selector is not considered.
  This is useful for things like smoke testing of new game servers.
- `selectors` is an ordered list of [GameServerSelector][gameserverselector].
  If the first selector is not matched, the selection attempts the second selector, and so on.
  This is useful for things like smoke testing of new game servers.
- `matchLabels` is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element
  of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value".
  The requirements are ANDed. Optional.
- `matchExpressions` is a list of label selector requirements. The requirements are ANDed. Optional.
- `gameServerState` GameServerState specifies which State is the filter to be used when attempting to retrieve a
  GameServer via Allocation. Defaults to "Ready". The only other option is "Allocated", which can be used in
  conjunction with label/annotation/player selectors to retrieve an already Allocated GameServer.
- `counters` (Beta, "CountsAndLists" feature flag) enables filtering based on game server Counter status, such as
  the minimum and maximum number of active rooms. This helps in selecting game servers based on their current activity
  or capacity. Optional.
- `lists` (Beta, "CountsAndLists" feature flag) enables filtering based on game server List status, such as allowing
    for inclusion or exclusion of specific players. Optional.
- `scheduling` defines how GameServers are organised across the cluster, in this case specifically when allocating
  `GameServers` for usage.
  "Packed" (default) is aimed at dynamic Kubernetes clusters, such as cloud providers, wherein we want to bin pack
  resources. "Distributed" is aimed at static Kubernetes clusters, wherein we want to distribute resources across the entire
  cluster. See [Scheduling and Autoscaling](/site/docs/advanced/scheduling-and-autoscaling/) for more details.
- `metadata` is an optional list of custom labels and/or annotations that will be used to patch
  the game server's metadata in the moment of allocation. This can be used to tell the server necessary session data
- `priorities` (Beta, requires `CountsAndLists` feature flag) alters the priority by which game `GameServers` are allocated by available capacity.
- `counters` (Beta, "CountsAndLists" feature flag) Counter actions to perform during allocation.
- `lists` (Beta, "CountsAndLists" feature flag) List actions to perform during allocation.

Once created the `GameServerAllocation` will have a `status` field consisting of the following:

- `State` is the current state of a GameServerAllocation, e.g. `Allocated`, or `UnAllocated`
- `GameServerName` is the name of the game server attached to this allocation, once the `state` is `Allocated`
- `Ports` is a list of the ports that the game server makes available. See [the GameServer Reference](/site/docs/reference/gameserver/) for more details.
- `Address` is the primary network address where the game server can be reached.
- `Addresses` is an array of all network addresses where the game server can be reached. It is a copy of the [`Node.Status.addresses`][addresses] field for the node the `GameServer` is scheduled on.
- `NodeName` is the name of the node that the gameserver is running on.
- `Source` is "local" unless this allocation is from a remote cluster, in which case `Source` is the endpoint of the remote agones-allocator. See [Multi-cluster Allocation](/site/docs/advanced/multi-cluster-allocation/) for more details.
- `Metadata` conststs of:
  - `Labels` containing the labels of the game server at allocation time.
  - `Annotations` containing the annotations of the underlying game server at allocation time.
- `Counters` (Beta, "CountsAndLists" feature flag) is a map of [CounterStatus][counterstatus] of the game server at allocation time.
- `Lists` (Beta, "CountsAndLists" feature flag) is a map of [ListStatus][liststatus] of the game server at allocation time.

<div class="alert alert-info" role="alert"><div class="h4 alert-heading" role="heading">Info</div>



For performance reasons, the query cache for a `GameServerAllocation` is _eventually consistent_.

Usually, the cache is populated practically immediately on `GameServer` change, but under high load of the Kubernetes
control plane, it may take some time for updates to `GameServer` selectable features to be populated into the cache
(although this doesn't affect the atomicity of the Allocation operation).

</div>


## Allocation Batching

To provide high throughput for allocation requests, Agones batches allocations together. This allows Agones to perform multiple allocations without having to wait for each one to be committed to the Kubernetes API server before starting the next one.

The batching process works as follows:

1. When an allocation request is received, it is added to a pending queue.
2. The allocator waits for a short period (`500ms` by default) to allow more requests to arrive and be processed as a batch.
3. The allocator then processes the batch of requests by selecting available `GameServers` from its local cache.
4. Each selected `GameServer` is immediately removed from the local cache to ensure it is not allocated multiple times within the same batch.
5. The actual update to the `GameServer` status in the Kubernetes API is performed concurrently by a pool of workers.

### Configuration

You can configure the batching behavior using the following Helm configuration options:

- `agones.controller.allocationBatchWaitTime`: The wait time between each allocation batch when performing allocations in controller mode (default `500ms`).
- `agones.allocator.allocationBatchWaitTime`: The wait time between each allocation batch when performing allocations via the [Allocator Service](/site/docs/advanced/allocator-service/) (default `500ms`).

### Trade-offs

- Higher `allocationBatchWaitTime`:
  - **Pros**: Potentially higher throughput under very high load, as more requests are processed in a single batch, reducing the frequency of cache refreshes.
  - **Cons**: Increases the minimum latency for each allocation request, as it will always wait for at least this period before being processed.
- Lower `allocationBatchWaitTime`:
  - **Pros**: Lower latency for allocation requests.
  - **Cons**: Higher CPU usage for the Agones controller/allocator due to more frequent batch processing loops and cache refreshes under load.

While Agones will do a small series of retries when an allocatable `GameServer` is not available in its cache,
depending on your game requirements, it may be worth implementing your own more extend retry mechanism for
Allocation requests for high load scenarios.

Each `GameServerAllocation` will allocate from a single [namespace][namespace]. The namespace can be specified outside of
the spec, either with the `--namespace` flag when using the command line / `kubectl` or
[in the url](/site/docs/guides/access-api/#allocate-a-gameserver-from-a-fleet-named-simple-game-server-with-gameserverallocation)
when using an API call. If not specified when using the command line, the [namespace][namespace] will be automatically set to `default`.

## Next Steps:

- Check out the [Allocator Service](/site/docs/advanced/allocator-service/) as a richer alternative to `GameServerAllocation`.

[gameserverselector]: /site/docs/reference/agones_crd_api_reference/#allocation.agones.dev/v1.GameServerSelector
[namespace]: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces
[addresses]: https://v1-34.docs.kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#nodeaddress-v1-core
[counterstatus]: /site/docs/reference/agones_crd_api_reference/#agones.dev/v1.CounterStatus
[liststatus]: /site/docs/reference/agones_crd_api_reference/#agones.dev/v1.ListStatus
