gameservers

package
v1.39.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 12, 2024 License: Apache-2.0 Imports: 44 Imported by: 6

Documentation

Overview

Package gameservers handles management of the GameServer Custom Resource Definition

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Controller

type Controller struct {
	// contains filtered or unexported fields
}

Controller is a the main GameServer crd controller

func NewController

func NewController(
	controllerHooks cloudproduct.ControllerHooksInterface,
	health healthcheck.Handler,
	minPort, maxPort int32,
	sidecarImage string,
	alwaysPullSidecarImage bool,
	sidecarCPURequest resource.Quantity,
	sidecarCPULimit resource.Quantity,
	sidecarMemoryRequest resource.Quantity,
	sidecarMemoryLimit resource.Quantity,
	sdkServiceAccount string,
	kubeClient kubernetes.Interface,
	kubeInformerFactory informers.SharedInformerFactory,
	extClient extclientset.Interface,
	agonesClient versioned.Interface,
	agonesInformerFactory externalversions.SharedInformerFactory,
) *Controller

NewController returns a new gameserver crd controller

func (*Controller) Run

func (c *Controller) Run(ctx context.Context, workers int) error

Run the GameServer controller. Will block until stop is closed. Runs threadiness number workers to process the rate limited queue

type Extensions added in v1.29.0

type Extensions struct {
	// contains filtered or unexported fields
}

Extensions struct contains what is needed to bind webhook handlers

func NewExtensions added in v1.29.0

func NewExtensions(apiHooks agonesv1.APIHooks, wh *webhooks.WebHook) *Extensions

NewExtensions binds the handlers to the webhook outside the initialization of the controller initializes a new logger for extensions.

type HealthController

type HealthController struct {
	// contains filtered or unexported fields
}

HealthController watches Pods, and applies an Unhealthy state if certain pods crash, or can't be assigned a port, and other similar type conditions.

func NewHealthController

func NewHealthController(
	health healthcheck.Handler,
	kubeClient kubernetes.Interface,
	agonesClient versioned.Interface,
	kubeInformerFactory informers.SharedInformerFactory,
	agonesInformerFactory externalversions.SharedInformerFactory,
	waitOnFreePorts bool) *HealthController

NewHealthController returns a HealthController

func (*HealthController) Run

func (hc *HealthController) Run(ctx context.Context, workers int) error

Run processes the rate limited queue. Will block until stop is closed

type MigrationController added in v1.3.0

type MigrationController struct {
	// contains filtered or unexported fields
}

MigrationController watches for if a Pod is migrated/a maintenance event happens on a node, and a Pod is recreated with a new Address for a GameServer

func NewMigrationController added in v1.3.0

func NewMigrationController(health healthcheck.Handler,
	kubeClient kubernetes.Interface,
	agonesClient versioned.Interface,
	kubeInformerFactory informers.SharedInformerFactory,
	agonesInformerFactory externalversions.SharedInformerFactory,
	syncPodPortsToGameServer func(*agonesv1.GameServer, *corev1.Pod) error,
) *MigrationController

NewMigrationController returns a MigrationController

func (*MigrationController) Run added in v1.3.0

func (mc *MigrationController) Run(ctx context.Context, workers int) error

Run processes the rate limited queue. Will block until stop is closed

type MissingPodController added in v1.4.0

type MissingPodController struct {
	// contains filtered or unexported fields
}

MissingPodController makes sure that any GameServer that isn't in a Scheduled or Unhealthy state and is missing a Pod is moved to Unhealthy.

It's possible that a GameServer is missing its associated pod due to unexpected controller downtime or if the Pod is deleted with no subsequent Delete event.

Since resync on the controller is every 30 seconds, even if there is some time in which a GameServer is in a broken state, it will eventually move to Unhealthy, and get replaced (if in a Fleet).

func NewMissingPodController added in v1.4.0

func NewMissingPodController(health healthcheck.Handler,
	kubeClient kubernetes.Interface,
	agonesClient versioned.Interface,
	kubeInformerFactory informers.SharedInformerFactory,
	agonesInformerFactory externalversions.SharedInformerFactory) *MissingPodController

NewMissingPodController returns a MissingPodController

func (*MissingPodController) Run added in v1.4.0

func (c *MissingPodController) Run(ctx context.Context, workers int) error

Run processes the rate limited queue. Will block until stop is closed

type NodeCount added in v0.9.0

type NodeCount struct {
	// Ready is ready count
	Ready int64
	// Allocated is allocated out
	Allocated int64
}

NodeCount is just a convenience data structure for keeping relevant GameServer counts about Nodes

type PerNodeCounter added in v0.9.0

type PerNodeCounter struct {
	// contains filtered or unexported fields
}

PerNodeCounter counts how many Allocated and Ready GameServers currently exist on each node. This is useful for scheduling allocations, fleet management mostly under a Packed strategy

func NewPerNodeCounter added in v0.9.0

func NewPerNodeCounter(
	kubeInformerFactory informers.SharedInformerFactory,
	agonesInformerFactory externalversions.SharedInformerFactory) *PerNodeCounter

NewPerNodeCounter returns a new PerNodeCounter

func (*PerNodeCounter) Counts added in v0.9.0

func (pnc *PerNodeCounter) Counts() map[string]NodeCount

Counts returns the NodeCount map in a thread safe way

func (*PerNodeCounter) Run added in v0.9.0

func (pnc *PerNodeCounter) Run(ctx context.Context, _ int) error

Run sets up the current state GameServer counts across nodes non blocking Run function.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL