keepalived-vip

command
v0.0.0-...-45802e4 Latest Latest
Warning

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

Go to latest
Published: Mar 25, 2016 License: Apache-2.0 Imports: 31 Imported by: 0

README

kube-keepalived-vip

Kubernetes Virtual IP address/es using keepalived

AKA "how to set up virtual IP addresses in kubernetes using IPVS - The Linux Virtual Server Project".

Disclaimer:

  • This is a work in progress.

Overview

There are 2 ways to expose a service in the current kubernetes service model:

  • Create a cloud load balancer.
  • Allocate a port (the same port) on every node in your cluster and proxy traffic through that port to the endpoints.

This just works. What's the issue then?

The issue is that it does not provide High Availability because beforehand is required to know the IP addresss of the node where is running and in case of a failure the pod can be be moved to a different node. Here is where ipvs could help. The idea is to define an IP address per service to expose it outside the Kubernetes cluster and use vrrp to announce this "mapping" in the local network. With 2 or more instance of the pod running in the cluster is possible to provide high availabity using a single IP address.

What is the difference between this and service-loadbalancer or nginx-alpha to expose one or more services?

This should be considered a complement, not a replacement for HAProxy or nginx. The goal using keepalived is to provide high availability and to bring certainty about how an exposed service can be reached (beforehand we know the ip address independently of the node where is running). For instance keepalived can use used to expose the service-loadbalancer or nginx ingress controller in the LAN using one IP address.

Requirements

Daemonsets enabled is the only requirement. Check this guide with the required flags in kube-apiserver.

Configuration

To expose a service add the annotation k8s.io/public-vip in the service with the IP address to be use. This IP must be routable inside the LAN and must be available. By default the IP address of the pods are used to route the traffic. This means that is one pod dies or a new one is created by a scale event the keepalived configuration file will be updated and reloaded.

Example

First we create a new replication controller and service

$ kubectl create -f examples/echoheaders.yaml
replicationcontroller "echoheaders" created
You have exposed your service on an external port on all nodes in your
cluster.  If you want to expose this service to the external internet, you may
need to set up firewall rules for the service port(s) (tcp:30302) to serve traffic.

See http://releases.k8s.io/HEAD/docs/user-guide/services-firewalls.md for more details.
service "echoheaders" created

Next add the required annotation to expose the service using a local IP

$ kubectl annotate svc echoheaders "k8s.io/public-vip=10.4.0.50"
service "echoheaders" annotated

$ kubectl get svc echoheaders -o yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    k8s.io/public-vip: 10.4.0.50
  creationTimestamp: 2015-12-30T19:15:32Z
  labels:
    app: echoheaders
  name: echoheaders
  namespace: default
  resourceVersion: "50811"
  selfLink: /api/v1/namespaces/default/services/echoheaders
  uid: b26d82b8-af29-11e5-a436-b8aeed77f611
spec:
  clusterIP: 10.3.0.118
  ports:
  - name: http
    nodePort: 30302
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: echoheaders
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}

Now the creation of the daemonset

$ kubectl create -f vip-daemonset.yaml
daemonset "kube-keepalived-vip" created
$ kubectl get daemonset
NAME                  CONTAINER(S)          IMAGE(S)                         SELECTOR                        NODE-SELECTOR
kube-keepalived-vip   kube-keepalived-vip   gcr.io/google_containers/kube-keepalived-vip:0.1   name in (kube-keepalived-vip)   type=worker

Note: the daemonset yaml file contains a node selector. This is not required, is just an example to show how is possible to limit the nodes where keepalived can run

To verify if everything is working we should check if a kube-keepalived-vip pod is in each node of the cluster

$ kubectl get nodes
NAME       LABELS                                        STATUS    AGE
10.4.0.3   kubernetes.io/hostname=10.4.0.3,type=worker   Ready     1d
10.4.0.4   kubernetes.io/hostname=10.4.0.4,type=worker   Ready     1d
10.4.0.5   kubernetes.io/hostname=10.4.0.5,type=worker   Ready     1d
$ kubectl get pods
NAME                        READY     STATUS    RESTARTS   AGE
echoheaders-co4g4           1/1       Running   0          5m
kube-keepalived-vip-a90bt   1/1       Running   0          53s
kube-keepalived-vip-g3nku   1/1       Running   0          52s
kube-keepalived-vip-gd18l   1/1       Running   0          54s
$ kubectl logs kube-keepalived-vip-a90bt
I1230 19:52:24.790134       1 main.go:74] starting LVS configuration
I1230 19:52:24.873084       1 controller.go:166] Sync triggered by service default/echoheaders
I1230 19:52:24.973776       1 controller.go:168] Requeuing default/echoheaders because of error: deferring sync till endpoints controller has synced
I1230 19:52:24.973861       1 controller.go:166] Sync triggered by service default/kubernetes
I1230 19:52:24.973974       1 controller.go:134] Found service: echoheaders
I1230 19:52:24.975492       1 keepalived.go:110] {"authPass":"166ee42274df2b6b2fd2f23b1aed43df552d88ad","iface":"enp3s0","myIP":"10.4.0.4","netmask":24,"nodes":["10.4.0.3","10.4.0.5"],"priority":101,"svcs":[{"Name":"default/echoheaders","Ip":"10.4.0.50","Port":80,"Protocol":"TCP","Backends":[{"Ip":"10.2.48.2","Port":8080}]}]}
I1230 19:52:24.976034       1 keepalived.go:135] reloading keepalived
E1230 19:52:24.978096       1 controller.go:155] error reloading keepalived: exit status 1
I1230 19:52:24.978149       1 controller.go:166] Sync triggered by service default/echoheaders
I1230 19:52:24.978220       1 controller.go:134] Found service: echoheaders
I1230 19:52:24.978981       1 keepalived.go:110] {"authPass":"166ee42274df2b6b2fd2f23b1aed43df552d88ad","iface":"enp3s0","myIP":"10.4.0.4","netmask":24,"nodes":["10.4.0.3","10.4.0.5"],"priority":101,"svcs":[{"Name":"default/echoheaders","Ip":"10.4.0.50","Port":80,"Protocol":"TCP","Backends":[{"Ip":"10.2.48.2","Port":8080}]}]}
I1230 19:52:24.979647       1 keepalived.go:135] reloading keepalived
E1230 19:52:24.981501       1 controller.go:155] error reloading keepalived: exit status 1
I1230 19:52:29.867940       1 main.go:81] starting keepalived to announce VIPs
Starting Healthcheck child process, pid=18
Starting VRRP child process, pid=19
Initializing ipvs 2.6
Netlink reflector reports IP 10.4.0.4 added
Netlink reflector reports IP 10.4.0.50 added
Netlink reflector reports IP 10.2.48.0 added
Netlink reflector reports IP 10.2.48.1 added
Netlink reflector reports IP fe80::baae:edff:fe77:ef88 added
Netlink reflector reports IP fe80::f455:a1ff:fecc:3fc2 added
Netlink reflector reports IP fe80::42:e9ff:fec1:a2ad added
Netlink reflector reports IP fe80::609e:77ff:feae:ba7d added
Registering Kernel netlink reflector
Netlink reflector reports IP 10.4.0.4 added
Registering Kernel netlink command channel
Netlink reflector reports IP 10.4.0.50 added
Registering gratuitous ARP shared channel
Netlink reflector reports IP 10.2.48.0 added
Netlink reflector reports IP 10.2.48.1 added
Netlink reflector reports IP fe80::baae:edff:fe77:ef88 added
Netlink reflector reports IP fe80::f455:a1ff:fecc:3fc2 added
Netlink reflector reports IP fe80::42:e9ff:fec1:a2ad added
Netlink reflector reports IP fe80::609e:77ff:feae:ba7d added
Opening file '/etc/keepalived/keepalived.conf'.
Registering Kernel netlink reflector
Registering Kernel netlink command channel
Truncating auth_pass to 8 characters
Opening file '/etc/keepalived/keepalived.conf'.
Configuration is using : 68505 Bytes
Using LinkWatch kernel netlink reflector...
VRRP_Instance(vips) Entering BACKUP STATE
VRRP sockpool: [ifindex(2), proto(51), unicast(0), fd(10,11)]
Configuration is using : 14226 Bytes
Using LinkWatch kernel netlink reflector...
Activating healthchecker for service [10.2.48.2]:8080
TCP connection to [10.2.48.2]:8080 success.
Adding service [10.2.48.2]:8080 to VS [10.4.0.50]:80
Gained quorum 1+0=1 <= 1 for VS [10.4.0.50]:80
VRRP_Instance(vips) Transition to MASTER STATE
VRRP_Group(VG_1) Syncing instances to MASTER state
VRRP_Instance(vips) Entering MASTER STATE
VRRP_Instance(vips) setting protocol VIPs.
VRRP_Instance(vips) Sending gratuitous ARPs on enp3s0 for 10.4.0.50
$ kubectl exec kube-keepalived-vip-a90bt cat /etc/keepalived/keepalived.conf

vrrp_sync_group VG_1
  group {
    vips
  }
}

vrrp_instance vips {
  state BACKUP
  interface enp3s0
  virtual_router_id 50
  priority 100
  nopreempt
  advert_int 1

  track_interface {
    enp3s0
  }

  virtual_ipaddress {
    10.4.0.50
  }

  authentication {
    auth_type AH
    auth_pass 166ee42274df2b6b2fd2f23b1aed43df552d88ad
  }
}


virtual_server 10.4.0.50 80 {
  delay_loop 5
  lvs_sched wlc
  lvs_method NAT
  persistence_timeout 1800
  protocol TCP
  #TCP
  alpha


  real_server 10.2.48.2 8080 {
    weight 1
    TCP_CHECK {
      connect_port 8080
      connect_timeout 3
    }
  }

}
$ curl -v 10.4.0.50
* Rebuilt URL to: 10.4.0.50/
*   Trying 10.4.0.50...
* Connected to 10.4.0.50 (10.4.0.50) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.4.0.50
> User-Agent: curl/7.43.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Server: BaseHTTP/0.6 Python/3.5.0
< Date: Wed, 30 Dec 2015 19:52:39 GMT
<
CLIENT VALUES:
client_address=('10.4.0.148', 52178) (10.4.0.148)
command=GET
path=/
real path=/
query=
request_version=HTTP/1.1

SERVER VALUES:
server_version=BaseHTTP/0.6
sys_version=Python/3.5.0
protocol_version=HTTP/1.0

HEADERS RECEIVED:
Accept=*/*
Host=10.4.0.50
User-Agent=curl/7.43.0
* Closing connection 0

Scaling the replication controller should update and reload keepalived

$ kubectl scale --replicas=5 replicationcontroller echoheaders
replicationcontroller "echoheaders" scaled
$ kubectl exec kube-keepalived-vip-a90bt cat /etc/keepalived/keepalived.conf

vrrp_sync_group VG_1
  group {
    vips
  }
}

vrrp_instance vips {
  state BACKUP
  interface enp3s0
  virtual_router_id 50
  priority 101
  nopreempt
  advert_int 1

  track_interface {
    enp3s0
  }

  virtual_ipaddress {
    10.4.0.50
  }

  authentication {
    auth_type AH
    auth_pass 166ee42274df2b6b2fd2f23b1aed43df552d88ad
  }
}


virtual_server 10.4.0.50 80 {
  delay_loop 5
  lvs_sched wlc
  lvs_method NAT
  persistence_timeout 1800
  protocol TCP
  #TCP
  alpha


  real_server 10.2.16.2 8080 {
    weight 1
    TCP_CHECK {
      connect_port 8080
      connect_timeout 3
    }
  }

  real_server 10.2.16.3 8080 {
    weight 1
    TCP_CHECK {
      connect_port 8080
      connect_timeout 3
    }
  }

  real_server 10.2.224.2 8080 {
    weight 1
    TCP_CHECK {
      connect_port 8080
      connect_timeout 3
    }
  }

  real_server 10.2.224.3 8080 {
    weight 1
    TCP_CHECK {
      connect_port 8080
      connect_timeout 3
    }
  }

  real_server 10.2.48.2 8080 {
    weight 1
    TCP_CHECK {
      connect_port 8080
      connect_timeout 3
    }
  }

}
```


## TODO
- option to choose wich IP should be used (kubernetes VIP or pod IP)
- custom weight?
- quorum rules

## Related projects

- https://github.com/kobolog/gorb
- https://github.com/qmsk/clusterf
- https://github.com/osrg/gobgp

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Godeps
_workspace/src/bitbucket.org/ww/goautoneg
HTTP Content-Type Autonegotiation.
HTTP Content-Type Autonegotiation.
_workspace/src/github.com/beorn7/perks/quantile
Package quantile computes approximate quantiles over an unbounded data stream within low memory and CPU bounds.
Package quantile computes approximate quantiles over an unbounded data stream within low memory and CPU bounds.
_workspace/src/github.com/davecgh/go-spew/spew
Package spew implements a deep pretty printer for Go data structures to aid in debugging.
Package spew implements a deep pretty printer for Go data structures to aid in debugging.
_workspace/src/github.com/docker/go-units
Package units provides helper function to parse and print size and time units in human-readable format.
Package units provides helper function to parse and print size and time units in human-readable format.
_workspace/src/github.com/emicklei/go-restful
Package restful, a lean package for creating REST-style WebServices without magic.
Package restful, a lean package for creating REST-style WebServices without magic.
_workspace/src/github.com/emicklei/go-restful/swagger
Package swagger implements the structures of the Swagger https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md
Package swagger implements the structures of the Swagger https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md
_workspace/src/github.com/fsouza/go-dockerclient
Package docker provides a client for the Docker remote API.
Package docker provides a client for the Docker remote API.
_workspace/src/github.com/fsouza/go-dockerclient/external/github.com/Sirupsen/logrus
Package logrus is a structured logger for Go, completely API compatible with the standard library logger.
Package logrus is a structured logger for Go, completely API compatible with the standard library logger.
_workspace/src/github.com/fsouza/go-dockerclient/external/github.com/docker/docker/pkg/pools
Package pools provides a collection of pools which provide various data types with buffers.
Package pools provides a collection of pools which provide various data types with buffers.
_workspace/src/github.com/fsouza/go-dockerclient/external/github.com/docker/go-units
Package units provides helper function to parse and print size and time units in human-readable format.
Package units provides helper function to parse and print size and time units in human-readable format.
_workspace/src/github.com/fsouza/go-dockerclient/external/golang.org/x/net/context
Package context defines the Context type, which carries deadlines, cancelation signals, and other request-scoped values across API boundaries and between processes.
Package context defines the Context type, which carries deadlines, cancelation signals, and other request-scoped values across API boundaries and between processes.
_workspace/src/github.com/fsouza/go-dockerclient/external/golang.org/x/sys/unix
Package unix contains an interface to the low-level operating system primitives.
Package unix contains an interface to the low-level operating system primitives.
_workspace/src/github.com/golang/glog
Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup.
Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup.
_workspace/src/github.com/golang/protobuf/proto
Package proto converts data structures to and from the wire format of protocol buffers.
Package proto converts data structures to and from the wire format of protocol buffers.
_workspace/src/github.com/google/gofuzz
Package fuzz is a library for populating go objects with random values.
Package fuzz is a library for populating go objects with random values.
_workspace/src/github.com/imdario/mergo
Package mergo merges same-type structs and maps by setting default values in zero-value fields.
Package mergo merges same-type structs and maps by setting default values in zero-value fields.
_workspace/src/github.com/juju/ratelimit
The ratelimit package provides an efficient token bucket implementation that can be used to limit the rate of arbitrary things.
The ratelimit package provides an efficient token bucket implementation that can be used to limit the rate of arbitrary things.
_workspace/src/github.com/matttproud/golang_protobuf_extensions/pbutil
Package pbutil provides record length-delimited Protocol Buffer streaming.
Package pbutil provides record length-delimited Protocol Buffer streaming.
_workspace/src/github.com/pborman/uuid
The uuid package generates and inspects UUIDs.
The uuid package generates and inspects UUIDs.
_workspace/src/github.com/prometheus/client_golang/prometheus
Package prometheus provides embeddable metric primitives for servers and standardized exposition of telemetry through a web services interface.
Package prometheus provides embeddable metric primitives for servers and standardized exposition of telemetry through a web services interface.
_workspace/src/github.com/prometheus/client_model/go
Package io_prometheus_client is a generated protocol buffer package.
Package io_prometheus_client is a generated protocol buffer package.
_workspace/src/github.com/prometheus/common/expfmt
A package for reading and writing Prometheus metrics.
A package for reading and writing Prometheus metrics.
_workspace/src/github.com/prometheus/common/model
Package model contains common data structures that are shared across Prometheus componenets and libraries.
Package model contains common data structures that are shared across Prometheus componenets and libraries.
_workspace/src/github.com/prometheus/procfs
Package procfs provides functions to retrieve system, kernel and process metrics from the pseudo-filesystem proc.
Package procfs provides functions to retrieve system, kernel and process metrics from the pseudo-filesystem proc.
_workspace/src/github.com/russross/blackfriday
Blackfriday markdown processor.
Blackfriday markdown processor.
_workspace/src/github.com/shurcooL/sanitized_anchor_name
Package sanitized_anchor_name provides a func to create sanitized anchor names.
Package sanitized_anchor_name provides a func to create sanitized anchor names.
_workspace/src/github.com/spf13/cobra
Package cobra is a commander providing a simple interface to create powerful modern CLI interfaces.
Package cobra is a commander providing a simple interface to create powerful modern CLI interfaces.
_workspace/src/github.com/spf13/pflag
Package pflag is a drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
Package pflag is a drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
_workspace/src/github.com/ugorji/go/codec
High Performance, Feature-Rich Idiomatic Go codec/encoding library for binc, msgpack, cbor, json.
High Performance, Feature-Rich Idiomatic Go codec/encoding library for binc, msgpack, cbor, json.
_workspace/src/golang.org/x/net/context
Package context defines the Context type, which carries deadlines, cancelation signals, and other request-scoped values across API boundaries and between processes.
Package context defines the Context type, which carries deadlines, cancelation signals, and other request-scoped values across API boundaries and between processes.
_workspace/src/gopkg.in/yaml.v2
Package yaml implements YAML support for the Go language.
Package yaml implements YAML support for the Go language.
_workspace/src/k8s.io/kubernetes/pkg/api
Package api contains the latest (or "internal") version of the Kubernetes API objects.
Package api contains the latest (or "internal") version of the Kubernetes API objects.
_workspace/src/k8s.io/kubernetes/pkg/api/errors
Package errors provides detailed error types for api field validation.
Package errors provides detailed error types for api field validation.
_workspace/src/k8s.io/kubernetes/pkg/api/install
Package install installs the v1 monolithic api, making it available as an option to all of the API encoding/decoding machinery.
Package install installs the v1 monolithic api, making it available as an option to all of the API encoding/decoding machinery.
_workspace/src/k8s.io/kubernetes/pkg/api/meta
Package meta provides functions for retrieving API metadata from objects belonging to the Kubernetes API
Package meta provides functions for retrieving API metadata from objects belonging to the Kubernetes API
_workspace/src/k8s.io/kubernetes/pkg/api/unversioned
Package unversioned contains API types that are common to all versions.
Package unversioned contains API types that are common to all versions.
_workspace/src/k8s.io/kubernetes/pkg/api/util
TODO: This GetVersion/GetGroup arrangement is temporary and will be replaced with a GroupAndVersion type.
TODO: This GetVersion/GetGroup arrangement is temporary and will be replaced with a GroupAndVersion type.
_workspace/src/k8s.io/kubernetes/pkg/api/v1
Package v1 is the v1 version of the API.
Package v1 is the v1 version of the API.
_workspace/src/k8s.io/kubernetes/pkg/api/validation
Package validation has functions for validating the correctness of api objects and explaining what is wrong with them when they aren't valid.
Package validation has functions for validating the correctness of api objects and explaining what is wrong with them when they aren't valid.
_workspace/src/k8s.io/kubernetes/pkg/apimachinery
Package apimachinery contains the generic API machinery code that is common to both server and clients.
Package apimachinery contains the generic API machinery code that is common to both server and clients.
_workspace/src/k8s.io/kubernetes/pkg/apimachinery/registered
Package to keep track of API Versions that can be registered and are enabled in api.Scheme.
Package to keep track of API Versions that can be registered and are enabled in api.Scheme.
_workspace/src/k8s.io/kubernetes/pkg/apis/authorization/install
Package install installs the experimental API group, making it available as an option to all of the API encoding/decoding machinery.
Package install installs the experimental API group, making it available as an option to all of the API encoding/decoding machinery.
_workspace/src/k8s.io/kubernetes/pkg/apis/autoscaling/install
Package install installs the experimental API group, making it available as an option to all of the API encoding/decoding machinery.
Package install installs the experimental API group, making it available as an option to all of the API encoding/decoding machinery.
_workspace/src/k8s.io/kubernetes/pkg/apis/batch/install
Package install installs the batch API group, making it available as an option to all of the API encoding/decoding machinery.
Package install installs the batch API group, making it available as an option to all of the API encoding/decoding machinery.
_workspace/src/k8s.io/kubernetes/pkg/apis/componentconfig/install
Package install installs the experimental API group, making it available as an option to all of the API encoding/decoding machinery.
Package install installs the experimental API group, making it available as an option to all of the API encoding/decoding machinery.
_workspace/src/k8s.io/kubernetes/pkg/apis/extensions/install
Package install installs the experimental API group, making it available as an option to all of the API encoding/decoding machinery.
Package install installs the experimental API group, making it available as an option to all of the API encoding/decoding machinery.
_workspace/src/k8s.io/kubernetes/pkg/apis/metrics/install
Package install installs the metrics API group, making it available as an option to all of the API encoding/decoding machinery.
Package install installs the metrics API group, making it available as an option to all of the API encoding/decoding machinery.
_workspace/src/k8s.io/kubernetes/pkg/auth/user
Package user contains utilities for dealing with simple user exchange in the auth packages.
Package user contains utilities for dealing with simple user exchange in the auth packages.
_workspace/src/k8s.io/kubernetes/pkg/capabilities
package capbabilities manages system level capabilities
package capbabilities manages system level capabilities
_workspace/src/k8s.io/kubernetes/pkg/client/cache
Package cache is a client-side caching mechanism.
Package cache is a client-side caching mechanism.
_workspace/src/k8s.io/kubernetes/pkg/client/metrics
Package metrics provides utilities for registering client metrics to Prometheus.
Package metrics provides utilities for registering client metrics to Prometheus.
_workspace/src/k8s.io/kubernetes/pkg/client/typed/generated/core/unversioned
Package unversioned has the automatically generated clients for unversioned resources.
Package unversioned has the automatically generated clients for unversioned resources.
_workspace/src/k8s.io/kubernetes/pkg/client/typed/generated/extensions/unversioned
Package unversioned has the automatically generated clients for unversioned resources.
Package unversioned has the automatically generated clients for unversioned resources.
_workspace/src/k8s.io/kubernetes/pkg/client/unversioned
Package unversioned contains the implementation of the client side communication with the Kubernetes master.
Package unversioned contains the implementation of the client side communication with the Kubernetes master.
_workspace/src/k8s.io/kubernetes/pkg/client/unversioned/auth
Package auth defines a file format for holding authentication information needed by clients of Kubernetes.
Package auth defines a file format for holding authentication information needed by clients of Kubernetes.
_workspace/src/k8s.io/kubernetes/pkg/client/unversioned/clientcmd
Package clientcmd provides one stop shopping for building a working client from a fixed config, from a .kubeconfig file, from command line flags, or from any merged combination.
Package clientcmd provides one stop shopping for building a working client from a fixed config, from a .kubeconfig file, from command line flags, or from any merged combination.
_workspace/src/k8s.io/kubernetes/pkg/controller/framework
Package framework implements all the grunt work involved in running a simple controller.
Package framework implements all the grunt work involved in running a simple controller.
_workspace/src/k8s.io/kubernetes/pkg/conversion
Package conversion provides go object versioning.
Package conversion provides go object versioning.
_workspace/src/k8s.io/kubernetes/pkg/conversion/queryparams
Package queryparams provides conversion from versioned runtime objects to URL query values
Package queryparams provides conversion from versioned runtime objects to URL query values
_workspace/src/k8s.io/kubernetes/pkg/credentialprovider
Package credentialprovider supplies interfaces and implementations for docker registry providers to expose their authentication scheme.
Package credentialprovider supplies interfaces and implementations for docker registry providers to expose their authentication scheme.
_workspace/src/k8s.io/kubernetes/pkg/fieldpath
Package fieldpath supplies methods for extracting fields from objects given a path to a field.
Package fieldpath supplies methods for extracting fields from objects given a path to a field.
_workspace/src/k8s.io/kubernetes/pkg/fields
Package fields implements a simple field system, parsing and matching selectors with sets of fields.
Package fields implements a simple field system, parsing and matching selectors with sets of fields.
_workspace/src/k8s.io/kubernetes/pkg/kubectl
Package kubectl is a set of libraries that are used by the kubectl command line tool.
Package kubectl is a set of libraries that are used by the kubectl command line tool.
_workspace/src/k8s.io/kubernetes/pkg/kubectl/resource
Package resource assists clients in dealing with RESTful objects that match the Kubernetes API conventions.
Package resource assists clients in dealing with RESTful objects that match the Kubernetes API conventions.
_workspace/src/k8s.io/kubernetes/pkg/kubelet/qos
package qos contains helper functions for quality of service.
package qos contains helper functions for quality of service.
_workspace/src/k8s.io/kubernetes/pkg/labels
Package labels implements a simple label system, parsing and matching selectors with sets of labels.
Package labels implements a simple label system, parsing and matching selectors with sets of labels.
_workspace/src/k8s.io/kubernetes/pkg/master/ports
Package ports defines ports used by various pieces of the kubernetes infrastructure.
Package ports defines ports used by various pieces of the kubernetes infrastructure.
_workspace/src/k8s.io/kubernetes/pkg/runtime
Defines conversions between generic types and structs to map query strings to struct objects.
Defines conversions between generic types and structs to map query strings to struct objects.
_workspace/src/k8s.io/kubernetes/pkg/types
Package types implements various generic types used throughout kubernetes.
Package types implements various generic types used throughout kubernetes.
_workspace/src/k8s.io/kubernetes/pkg/util
Package util implements various utility functions used in both testing and implementation of Kubernetes.
Package util implements various utility functions used in both testing and implementation of Kubernetes.
_workspace/src/k8s.io/kubernetes/pkg/util/errors
Package errors implements various utility functions and types around errors.
Package errors implements various utility functions and types around errors.
_workspace/src/k8s.io/kubernetes/pkg/util/exec
Package exec provides an injectable interface and implementations for running commands.
Package exec provides an injectable interface and implementations for running commands.
_workspace/src/k8s.io/kubernetes/pkg/util/jsonpath
package jsonpath is a template engine using jsonpath syntax, which can be seen at http://goessner.net/articles/JsonPath/.
package jsonpath is a template engine using jsonpath syntax, which can be seen at http://goessner.net/articles/JsonPath/.
_workspace/src/k8s.io/kubernetes/pkg/util/labels
Package labels provides utilities to work with Kubernetes labels.
Package labels provides utilities to work with Kubernetes labels.
_workspace/src/k8s.io/kubernetes/pkg/util/pod
Package pod provides utilities to work with Kubernetes pod and pod templates.
Package pod provides utilities to work with Kubernetes pod and pod templates.
_workspace/src/k8s.io/kubernetes/pkg/util/rand
Package rand provides utilities related to randomization.
Package rand provides utilities related to randomization.
_workspace/src/k8s.io/kubernetes/pkg/util/sets
Package sets has auto-generated set types.
Package sets has auto-generated set types.
_workspace/src/k8s.io/kubernetes/pkg/util/wait
Package wait provides tools for polling or listening for changes to a condition.
Package wait provides tools for polling or listening for changes to a condition.
_workspace/src/k8s.io/kubernetes/pkg/util/workqueue
Package workqueue provides a simple queue that supports the following features:
Package workqueue provides a simple queue that supports the following features:
_workspace/src/k8s.io/kubernetes/pkg/version
Package version supplies version information collected at build time to kubernetes components.
Package version supplies version information collected at build time to kubernetes components.
_workspace/src/k8s.io/kubernetes/pkg/watch
Package watch contains a generic watchable interface, and a fake for testing code that uses the watch interface.
Package watch contains a generic watchable interface, and a fake for testing code that uses the watch interface.
_workspace/src/k8s.io/kubernetes/pkg/watch/json
Package json implements a simple encoder and decoder for streams of watch events over io.Writer/Readers
Package json implements a simple encoder and decoder for streams of watch events over io.Writer/Readers
_workspace/src/k8s.io/kubernetes/third_party/forked/json
Package json is forked from the Go standard library to enable us to find the field of a struct that a given JSON key maps to.
Package json is forked from the Go standard library to enable us to find the field of a struct that a given JSON key maps to.
_workspace/src/k8s.io/kubernetes/third_party/forked/reflect
Package reflect is a fork of go's standard library reflection package, which allows for deep equal with equality functions defined.
Package reflect is a fork of go's standard library reflection package, which allows for deep equal with equality functions defined.
_workspace/src/k8s.io/kubernetes/third_party/golang/template
This package is copied from Go library text/template.
This package is copied from Go library text/template.
_workspace/src/speter.net/go/exp/math/dec/inf
Package inf (type inf.Dec) implements "infinite-precision" decimal arithmetic.
Package inf (type inf.Dec) implements "infinite-precision" decimal arithmetic.

Jump to

Keyboard shortcuts

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