kubernetes

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Mar 27, 2017 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	GetLogs   = "kubernetes_get_logs"
	DeletePod = "kubernetes_delete_pod"
	ScaleUp   = "kubernetes_scale_up"
	ScaleDown = "kubernetes_scale_down"
)

Control IDs used by the kubernetes integration.

View Source
const (
	UpdatedReplicas     = "kubernetes_updated_replicas"
	AvailableReplicas   = "kubernetes_available_replicas"
	UnavailableReplicas = "kubernetes_unavailable_replicas"
	Strategy            = "kubernetes_strategy"
)

These constants are keys used in node metadata

View Source
const (
	Name        = "kubernetes_name"
	Namespace   = "kubernetes_namespace"
	Created     = "kubernetes_created"
	LabelPrefix = "kubernetes_labels_"
)

These constants are keys used in node metadata

View Source
const (
	State           = "kubernetes_state"
	IsInHostNetwork = "kubernetes_is_in_host_network"

	StateDeleted = "deleted"
)

These constants are keys used in node metadata

View Source
const (
	IP                 = "kubernetes_ip"
	ObservedGeneration = "kubernetes_observed_generation"
	Replicas           = "kubernetes_replicas"
	DesiredReplicas    = "kubernetes_desired_replicas"
)

These constants are keys used in node metadata

View Source
const (
	FullyLabeledReplicas = "kubernetes_fully_labeled_replicas"
)

These constants are keys used in node metadata

View Source
const (
	PublicIP = "kubernetes_public_ip"
)

These constants are keys used in node metadata

Variables

View Source
var (
	PodMetadataTemplates = report.MetadataTemplates{
		State:            {ID: State, Label: "State", From: report.FromLatest, Priority: 2},
		IP:               {ID: IP, Label: "IP", From: report.FromLatest, Datatype: "ip", Priority: 3},
		report.Container: {ID: report.Container, Label: "# Containers", From: report.FromCounters, Datatype: "number", Priority: 4},
		Namespace:        {ID: Namespace, Label: "Namespace", From: report.FromLatest, Priority: 5},
		Created:          {ID: Created, Label: "Created", From: report.FromLatest, Datatype: "datetime", Priority: 6},
	}

	PodMetricTemplates = docker.ContainerMetricTemplates

	ServiceMetadataTemplates = report.MetadataTemplates{
		Namespace:  {ID: Namespace, Label: "Namespace", From: report.FromLatest, Priority: 2},
		Created:    {ID: Created, Label: "Created", From: report.FromLatest, Datatype: "datetime", Priority: 3},
		PublicIP:   {ID: PublicIP, Label: "Public IP", From: report.FromLatest, Datatype: "ip", Priority: 4},
		IP:         {ID: IP, Label: "Internal IP", From: report.FromLatest, Datatype: "ip", Priority: 5},
		report.Pod: {ID: report.Pod, Label: "# Pods", From: report.FromCounters, Datatype: "number", Priority: 6},
	}

	ServiceMetricTemplates = PodMetricTemplates

	DeploymentMetadataTemplates = report.MetadataTemplates{
		Namespace:          {ID: Namespace, Label: "Namespace", From: report.FromLatest, Priority: 2},
		Created:            {ID: Created, Label: "Created", From: report.FromLatest, Datatype: "datetime", Priority: 3},
		ObservedGeneration: {ID: ObservedGeneration, Label: "Observed Gen.", From: report.FromLatest, Priority: 4},
		DesiredReplicas:    {ID: DesiredReplicas, Label: "Desired Replicas", From: report.FromLatest, Datatype: "number", Priority: 5},
		report.Pod:         {ID: report.Pod, Label: "# Pods", From: report.FromCounters, Datatype: "number", Priority: 6},
		Strategy:           {ID: Strategy, Label: "Strategy", From: report.FromLatest, Priority: 7},
	}

	DeploymentMetricTemplates = ReplicaSetMetricTemplates

	ReplicaSetMetadataTemplates = report.MetadataTemplates{
		Namespace:          {ID: Namespace, Label: "Namespace", From: report.FromLatest, Priority: 2},
		Created:            {ID: Created, Label: "Created", From: report.FromLatest, Datatype: "datetime", Priority: 3},
		ObservedGeneration: {ID: ObservedGeneration, Label: "Observed Gen.", From: report.FromLatest, Priority: 4},
		DesiredReplicas:    {ID: DesiredReplicas, Label: "Desired Replicas", From: report.FromLatest, Datatype: "number", Priority: 5},
		report.Pod:         {ID: report.Pod, Label: "# Pods", From: report.FromCounters, Datatype: "number", Priority: 6},
	}

	ReplicaSetMetricTemplates = PodMetricTemplates

	TableTemplates = report.TableTemplates{
		LabelPrefix: {
			ID:     LabelPrefix,
			Label:  "Kubernetes Labels",
			Type:   report.PropertyListType,
			Prefix: LabelPrefix,
		},
	}

	ScalingControls = []report.Control{
		{
			ID:    ScaleDown,
			Human: "Scale Down",
			Icon:  "fa-minus",
			Rank:  0,
		},
		{
			ID:    ScaleUp,
			Human: "Scale Up",
			Icon:  "fa-plus",
			Rank:  1,
		},
	}
)

Exposed for testing

View Source
var GetLocalPodUIDs = func(kubeletHost string) (map[string]struct{}, error) {
	url := fmt.Sprintf("http://%s/pods/", kubeletHost)
	resp, err := http.Get(url)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()
	var localPods podList
	if err := codec.NewDecoder(resp.Body, &codec.JsonHandle{}).Decode(&localPods); err != nil {
		return nil, err
	}
	result := make(map[string]struct{}, len(localPods.Items))
	for _, pod := range localPods.Items {
		result[pod.Metadata.UID] = struct{}{}
	}
	return result, nil
}

GetLocalPodUIDs obtains the UID of the pods run locally (it's just exported for testing)

Functions

func IsPauseImageName added in v0.17.0

func IsPauseImageName(imageName string) bool

IsPauseImageName indicates whether an image name corresponds to a kubernetes pause container image.

func NewEventStore added in v0.15.0

func NewEventStore(watch Watch, keyFunc cache.KeyFunc) cache.Store

NewEventStore creates a new Store which triggers watch whenever an object is added, removed or updated.

Types

type Client

type Client interface {
	Stop()
	WalkPods(f func(Pod) error) error
	WalkServices(f func(Service) error) error
	WalkDeployments(f func(Deployment) error) error
	WalkReplicaSets(f func(ReplicaSet) error) error
	WalkReplicationControllers(f func(ReplicationController) error) error
	WalkNodes(f func(*api.Node) error) error

	WatchPods(f func(Event, Pod))

	GetLogs(namespaceID, podID string) (io.ReadCloser, error)
	DeletePod(namespaceID, podID string) error
	ScaleUp(resource, namespaceID, id string) error
	ScaleDown(resource, namespaceID, id string) error
}

Client keeps track of running kubernetes pods and services

func NewClient

func NewClient(config ClientConfig) (Client, error)

NewClient returns a usable Client. Don't forget to Stop it.

type ClientConfig added in v0.17.1

type ClientConfig struct {
	Interval             time.Duration
	CertificateAuthority string
	ClientCertificate    string
	ClientKey            string
	Cluster              string
	Context              string
	Insecure             bool
	Kubeconfig           string
	Password             string
	Server               string
	Token                string
	User                 string
	Username             string
}

ClientConfig establishes the configuration for the kubernetes client

type Deployment added in v0.15.0

type Deployment interface {
	Meta
	Selector() labels.Selector
	GetNode(probeID string) report.Node
}

Deployment represents a Kubernetes deployment

func NewDeployment added in v0.15.0

func NewDeployment(d *extensions.Deployment) Deployment

NewDeployment creates a new Deployment

type Event added in v0.15.0

type Event int

Event type is an enum of ADD, UPDATE and DELETE

const (
	ADD Event = iota
	UPDATE
	DELETE
)

Event enum values.

type Meta added in v0.15.0

type Meta interface {
	UID() string
	Name() string
	Namespace() string
	Created() string
	Labels() map[string]string
	MetaNode(id string) report.Node
}

Meta represents a metadata information about a Kubernetes object

type Pod

type Pod interface {
	Meta
	AddParent(topology, id string)
	NodeName() string
	GetNode(probeID string) report.Node
}

Pod represents a Kubernetes pod

func NewPod

func NewPod(p *api.Pod) Pod

NewPod creates a new Pod

type ReplicaSet added in v0.15.0

type ReplicaSet interface {
	Meta
	Selector() labels.Selector
	AddParent(topology, id string)
	GetNode(probeID string) report.Node
}

ReplicaSet represents a Kubernetes replica set

func NewReplicaSet added in v0.15.0

func NewReplicaSet(r *extensions.ReplicaSet) ReplicaSet

NewReplicaSet creates a new ReplicaSet

type ReplicationController added in v0.15.0

type ReplicationController interface {
	Meta
	Selector() labels.Selector
	AddParent(topology, id string)
	GetNode(probeID string) report.Node
}

ReplicationController represents a Kubernetes replication controller

func NewReplicationController added in v0.15.0

func NewReplicationController(r *api.ReplicationController) ReplicationController

NewReplicationController creates a new ReplicationController

type Reporter

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

Reporter generate Reports containing Container and ContainerImage topologies

func NewReporter

func NewReporter(client Client, pipes controls.PipeClient, probeID string, hostID string, probe *probe.Probe, handlerRegistry *controls.HandlerRegistry, kubeletPort uint) *Reporter

NewReporter makes a new Reporter

func (*Reporter) CapturePod added in v0.15.0

func (r *Reporter) CapturePod(f func(xfer.Request, string, string) xfer.Response) func(xfer.Request) xfer.Response

CapturePod is exported for testing

func (*Reporter) CaptureResource added in v0.15.0

func (r *Reporter) CaptureResource(f func(xfer.Request, string, string, string) xfer.Response) func(xfer.Request) xfer.Response

CaptureResource is exported for testing

func (*Reporter) GetLogs added in v0.15.0

func (r *Reporter) GetLogs(req xfer.Request, namespaceID, podID string) xfer.Response

GetLogs is the control to get the logs for a kubernetes pod

func (Reporter) Name added in v0.10.0

func (Reporter) Name() string

Name of this reporter, for metrics gathering

func (*Reporter) Report

func (r *Reporter) Report() (report.Report, error)

Report generates a Report containing Container and ContainerImage topologies

func (*Reporter) ScaleDown added in v0.15.0

func (r *Reporter) ScaleDown(req xfer.Request, resource, namespace, id string) xfer.Response

ScaleDown is the control to scale up a deployment

func (*Reporter) ScaleUp added in v0.15.0

func (r *Reporter) ScaleUp(req xfer.Request, resource, namespace, id string) xfer.Response

ScaleUp is the control to scale up a deployment

func (*Reporter) Stop added in v0.15.0

func (r *Reporter) Stop()

Stop unregisters controls.

func (*Reporter) Tag added in v0.15.0

func (r *Reporter) Tag(rpt report.Report) (report.Report, error)

Tag adds pod parents to container nodes.

type Service

type Service interface {
	Meta
	GetNode() report.Node
	Selector() labels.Selector
	ClusterIP() string
}

Service represents a Kubernetes service

func NewService

func NewService(s *api.Service) Service

NewService creates a new Service

type Watch added in v0.15.0

type Watch func(Event, interface{})

Watch type is for callbacks when somethings happens to the store.

Jump to

Keyboard shortcuts

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