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)
– 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
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 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
15. 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
16. 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)
17. 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
18. 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)