Kubernetes 1.3
What’s New
Matt Bates
Co-founder @JetstackHQ
5000+
COMMITS
350+
CONTRIBUTORS
Headlines of 1.3
- Cluster Federation
- PetSet
- Init Containers
- Rktnetes 1.0
- Scalability
- Minikube
Init Containers (#23567)
– Alpha feature
– Run container(s) before the long-running main
pod container(s) are launched
– Executed in sequential order
– Only if init containers succeed do the main
container(s) start
– Use cases:
– download files / clone repos
– write out config files
– etc
init-1 init-2
main-container
Stateful services (1.2)
- ReplicaSets (nee controllers)
ensure N replicas of a pod template
exist
- Only attribute that differs between pods is the name
- Therefore same volume(s)
- Pods have no stable network identity other than an assigned pod IP
- e.g. no fixed and predictable hostname
- Best for ‘shared-nothing, zero-coordination systems’
Photo credit: http://delectabledeliciousness.blogspot.co.uk
PetSet (#18016)
– New Alpha resource (apps/v1alpha1)
– Stable and unique identity associated
with that instance of the storage
– Consistent network identity
– Predictable number of instances to ensure
that systems can form a quorum
– Ability to migrate from node to node with
stable network identity (DNS name)
– Scale up/down in a controlled fashion
PetSet (#18016)
PetSet
pet-0.
pet.default...
PetSet
Controller
(KCM)
PV-0 PVC-0
API Server
Watches
Creates claim from template
BindsMounts
Creates
and waits
until
ready
Service
1:1 mapping
PetSet (#18016)
PetSet
pet-0.
pet.default...
PetSet
Controller
(KCM)
PV-0 PVC-0
API Server
Service
pet-1.
pet.default... PV-1 PVC-1
pet-2.
pet.default... PV-2 PVC-2
eu-west-1beu-west-1a eu-west-1c
Recap: Cross-AZ clusters
Cross-AZ clusters (Ubernetes ‘Lite’) baked into 1.2
worker worker worker
Control Plane
$ kubectl describe node worker1
...
failure-domain.beta.kubernetes.io/
region=eu-west1
failure-domain.beta.ku
bernetes.io/
zone=eu-west1-a
...
Cluster Federation/Ubernetes (#19313)
eu-central-1eu-west-1
worker worker worker
Cluster A Control Plane
worker worker worker
Cluster B Control Plane
Cluster Federation/Ubernetes (#19313)
eu-central-1eu-west-1
worker worker worker
Cluster A Control Plane
worker worker worker
Cluster B Control Plane
Federation Control PlaneFederation Controller Manager Federation API Server
Cluster Federation/Ubernetes (#19313)
– Focused on Federated Services at this stage
– Create a Service at the Federation API Server:
– Creates matching Kubernetes Services in every cluster
– Monitors the health of service “shards”
– Manages DNS records in a public DNS provider (ie Google Cloud
DNS or AWS Route 53)
– Note: backend Pods are currently added directly against the cluster API
endpoints
Federation Control PlaneFederation Controller Manager Federation API Server
DNS
Provider
(Route 53,
Google
DNS)
kube-dnskube-dns
myservice.mynamespace.myfederation
myservice.mynamespace.myfederation.svc.jetstack.net
myservice.jetstack.net
myservice.mynamespace.myfederation.svc.
eu-west-1.jetstack.net
myservice.mynamespace.myfederation.svc.
eu-central-1.jetstack.net
Federation Control PlaneFederation Controller Manager Federation API Server
DNS
Provider
(Route 53,
Google
DNS)
kube-dnskube-dns
myservice.jetstack.net
eu-west-1.jetstack.net eu-central-1.jetstack.net
rktnetes 1.0
– Kubernetes was built to ultimately be container
runtime-agnostic
– First stable release that integrates the CoreOS rkt
runtime, that can be used in-place of Docker
– Why Rkt?
– rkt implements the open App Container Spec
– Compatibility with init systems such as systemd
(nspawn)
– Ability to launch VMs in pods for greater isolation
guarantee (using LKVM stage1)
Scalability
– Supports 2000-node clusters with decreased end-to-end pod startup
time
– Under the bonnet, uses Protocol Buffer-based serialization in the API
instead of JSON
Minikube
– Minikube starts a single node kubernetes cluster locally for purposes
of development and testing.
– Packages and configures a Linux VM, Docker and all Kubernetes
components, optimized for local development.
– Supports:
– DNS
– NodePorts
– ConfigMaps and Secrets
– Dashboards
– Does not support cloud-provider functionality (LoadBalancers,
PersistentVolumes, Ingress)
More Hidden Gems..
https://blog.jetstack.io/blog/kubernetes-1-3-hidden-gems
Matt Bates
bates@jetstack.io | @mattbates25
www.jetstack.io
hello@jetstack.io
@JetstackHQ
meetup.com/contain

Kubernetes 1.3 - Highlights

  • 1.
    Kubernetes 1.3 What’s New MattBates Co-founder @JetstackHQ
  • 2.
  • 4.
    Headlines of 1.3 -Cluster Federation - PetSet - Init Containers - Rktnetes 1.0 - Scalability - Minikube
  • 5.
    Init Containers (#23567) –Alpha feature – Run container(s) before the long-running main pod container(s) are launched – Executed in sequential order – Only if init containers succeed do the main container(s) start – Use cases: – download files / clone repos – write out config files – etc init-1 init-2 main-container
  • 6.
    Stateful services (1.2) -ReplicaSets (nee controllers) ensure N replicas of a pod template exist - Only attribute that differs between pods is the name - Therefore same volume(s) - Pods have no stable network identity other than an assigned pod IP - e.g. no fixed and predictable hostname - Best for ‘shared-nothing, zero-coordination systems’ Photo credit: http://delectabledeliciousness.blogspot.co.uk
  • 7.
    PetSet (#18016) – NewAlpha resource (apps/v1alpha1) – Stable and unique identity associated with that instance of the storage – Consistent network identity – Predictable number of instances to ensure that systems can form a quorum – Ability to migrate from node to node with stable network identity (DNS name) – Scale up/down in a controlled fashion
  • 8.
    PetSet (#18016) PetSet pet-0. pet.default... PetSet Controller (KCM) PV-0 PVC-0 APIServer Watches Creates claim from template BindsMounts Creates and waits until ready Service 1:1 mapping
  • 9.
    PetSet (#18016) PetSet pet-0. pet.default... PetSet Controller (KCM) PV-0 PVC-0 APIServer Service pet-1. pet.default... PV-1 PVC-1 pet-2. pet.default... PV-2 PVC-2
  • 10.
    eu-west-1beu-west-1a eu-west-1c Recap: Cross-AZclusters Cross-AZ clusters (Ubernetes ‘Lite’) baked into 1.2 worker worker worker Control Plane $ kubectl describe node worker1 ... failure-domain.beta.kubernetes.io/ region=eu-west1 failure-domain.beta.ku bernetes.io/ zone=eu-west1-a ...
  • 11.
    Cluster Federation/Ubernetes (#19313) eu-central-1eu-west-1 workerworker worker Cluster A Control Plane worker worker worker Cluster B Control Plane
  • 12.
    Cluster Federation/Ubernetes (#19313) eu-central-1eu-west-1 workerworker worker Cluster A Control Plane worker worker worker Cluster B Control Plane Federation Control PlaneFederation Controller Manager Federation API Server
  • 13.
    Cluster Federation/Ubernetes (#19313) –Focused on Federated Services at this stage – Create a Service at the Federation API Server: – Creates matching Kubernetes Services in every cluster – Monitors the health of service “shards” – Manages DNS records in a public DNS provider (ie Google Cloud DNS or AWS Route 53) – Note: backend Pods are currently added directly against the cluster API endpoints
  • 14.
    Federation Control PlaneFederationController Manager Federation API Server DNS Provider (Route 53, Google DNS) kube-dnskube-dns myservice.mynamespace.myfederation myservice.mynamespace.myfederation.svc.jetstack.net myservice.jetstack.net myservice.mynamespace.myfederation.svc. eu-west-1.jetstack.net myservice.mynamespace.myfederation.svc. eu-central-1.jetstack.net
  • 15.
    Federation Control PlaneFederationController Manager Federation API Server DNS Provider (Route 53, Google DNS) kube-dnskube-dns myservice.jetstack.net eu-west-1.jetstack.net eu-central-1.jetstack.net
  • 16.
    rktnetes 1.0 – Kuberneteswas built to ultimately be container runtime-agnostic – First stable release that integrates the CoreOS rkt runtime, that can be used in-place of Docker – Why Rkt? – rkt implements the open App Container Spec – Compatibility with init systems such as systemd (nspawn) – Ability to launch VMs in pods for greater isolation guarantee (using LKVM stage1)
  • 17.
    Scalability – Supports 2000-nodeclusters with decreased end-to-end pod startup time – Under the bonnet, uses Protocol Buffer-based serialization in the API instead of JSON
  • 18.
    Minikube – Minikube startsa single node kubernetes cluster locally for purposes of development and testing. – Packages and configures a Linux VM, Docker and all Kubernetes components, optimized for local development. – Supports: – DNS – NodePorts – ConfigMaps and Secrets – Dashboards – Does not support cloud-provider functionality (LoadBalancers, PersistentVolumes, Ingress)
  • 19.
  • 20.
    Matt Bates bates@jetstack.io |@mattbates25 www.jetstack.io hello@jetstack.io @JetstackHQ meetup.com/contain