Documentation ¶
Index ¶
- Constants
- Variables
- func IsPauseImageName(imageName string) bool
- func NewEventStore(watch Watch, keyFunc cache.KeyFunc) cache.Store
- type Client
- type ClientConfig
- type DaemonSet
- type Deployment
- type Event
- type Meta
- type Pod
- type ReplicaSet
- type ReplicationController
- type Reporter
- func (r *Reporter) CapturePod(f func(xfer.Request, string, string) xfer.Response) func(xfer.Request) xfer.Response
- func (r *Reporter) CaptureResource(f func(xfer.Request, string, string, string) xfer.Response) func(xfer.Request) xfer.Response
- func (r *Reporter) GetLogs(req xfer.Request, namespaceID, podID string) xfer.Response
- func (Reporter) Name() string
- func (r *Reporter) Report() (report.Report, error)
- func (r *Reporter) ScaleDown(req xfer.Request, resource, namespace, id string) xfer.Response
- func (r *Reporter) ScaleUp(req xfer.Request, resource, namespace, id string) xfer.Response
- func (r *Reporter) Stop()
- func (r *Reporter) Tag(rpt report.Report) (report.Report, error)
- type Service
- type Watch
Constants ¶
const ( GetLogs = "kubernetes_get_logs" DeletePod = "kubernetes_delete_pod" ScaleUp = "kubernetes_scale_up" ScaleDown = "kubernetes_scale_down" )
Control IDs used by the kubernetes integration.
const ( UpdatedReplicas = "kubernetes_updated_replicas" AvailableReplicas = "kubernetes_available_replicas" Strategy = "kubernetes_strategy" )
These constants are keys used in node metadata
const ( Name = "kubernetes_name" Namespace = "kubernetes_namespace" Created = "kubernetes_created" LabelPrefix = "kubernetes_labels_" )
These constants are keys used in node metadata
const ( State = "kubernetes_state" IsInHostNetwork = "kubernetes_is_in_host_network" StateDeleted = "deleted" )
These constants are keys used in node metadata
const ( IP = "kubernetes_ip" ObservedGeneration = "kubernetes_observed_generation" Replicas = "kubernetes_replicas" DesiredReplicas = "kubernetes_desired_replicas" )
These constants are keys used in node metadata
const (
FullyLabeledReplicas = "kubernetes_fully_labeled_replicas"
)
These constants are keys used in node metadata
const (
MisscheduledReplicas = "kubernetes_misscheduled_replicas"
)
These constants are keys used in node metadata
const (
PublicIP = "kubernetes_public_ip"
)
These constants are keys used in node metadata
Variables ¶
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, Datatype: "number", 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, Datatype: "number", 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 DaemonSetMetadataTemplates = report.MetadataTemplates{ Namespace: {ID: Namespace, Label: "Namespace", From: report.FromLatest, Priority: 2}, Created: {ID: Created, Label: "Created", From: report.FromLatest, Datatype: "datetime", Priority: 3}, DesiredReplicas: {ID: DesiredReplicas, Label: "Desired Replicas", From: report.FromLatest, Datatype: "number", Priority: 4}, report.Pod: {ID: report.Pod, Label: "# Pods", From: report.FromCounters, Datatype: "number", Priority: 5}, } DaemonSetMetricTemplates = 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
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
IsPauseImageName indicates whether an image name corresponds to a kubernetes pause container image.
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 WalkDaemonSets(f func(DaemonSet) 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 DaemonSet ¶ added in v1.4.0
DaemonSet represents a Kubernetes daemonset
func NewDaemonSet ¶ added in v1.4.0
func NewDaemonSet(d *extensions.DaemonSet) DaemonSet
NewDaemonSet creates a new daemonset
type Deployment ¶ added in v0.15.0
type Deployment interface { Meta Selector() (labels.Selector, error) 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 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
type ReplicaSet ¶ added in v0.15.0
type ReplicaSet interface { Meta Selector() (labels.Selector, error) 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, error) 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
GetLogs is the control to get the logs for a kubernetes pod
func (*Reporter) Report ¶
Report generates a Report containing Container and ContainerImage topologies