Kubernetes:
The evolution of distributed systems
@bibryam
Bilgin Ibryam
● Product Manager at Red Hat
● Former Architect/Consultant
● Committer at Apache Camel
● Author and blogger
○ Camel Design Patterns
○ Kubernetes Patterns
@bibryam
@bibryam
Distributed application needs
@bibryam
Distributed application needs
Lifecycle management
● Deployment/rollback
● Placement/scheduling
● Configuration management
● Resource/failure isolation
● Auto/manual scaling
● Hybrid workloads
○ stateless, stateful, tasks, serverless
@bibryam
Distributed application needs
Advanced networking
● Service discovery and failover
● Dynamic traffic routing
● Resilience
○ Retry, timeout, circuit breaking
● Security, encryption, rate limiting
● Observability and tracing
@bibryam
Distributed application needs
Resource bindings
● Connectors for APIs
● Polling and event-driven integrations
● Point-to-point, pub/sub interactions
● Protocol conversion
● Message transformation
● Filtering, light message routing
@bibryam
Distributed application needs
Stateful abstractions
● Workflow management
○ Long-running transactions (SAGA)
● Temporal scheduling i.e. timers
● Distributed caching
● Idempotency
● Application storage abstraction
@bibryam
Health probes
Foundational primitives
Configuration management Declarative deployment
Resource demands & placement
@bibryam
Batch/Periodic Job
Hybrid workloads
Global SingletonStateful Service
Stateless Service
@bibryam
Kubernetes capabilities
● Deployment/rollback
● Automated placement
● Configuration management
● Resource isolation, recovery
● Auto/manual scaling
● Hybrid workloads: stateless, stateful,
batch jobs, serverless
@bibryam
Out-of-process architecture
Deployment guarantees Lifecycle guarantees
@bibryam
Sidecar
@bibryam
Controller Pattern
Schemas
● ReplicaSet
● StatefulSet
Controllers
● replicaset
● statefulset
Resources
● Pod
● PVC...
CustomResourceDefinition + Custom controller = Operator
@bibryam
How to extend Kubernetes?
Sidecar Operator
Out-of-process composition
mechanism for orthogonal
capabilities.
Define domain-specific knowledge in
executable Kubernetes
primitives.
Data plane Control plane
@bibryam
What is Service Mesh?
@bibryam
What is Service Mesh?
@bibryam
What is Service Mesh?
@bibryam
What is Service Mesh?
@bibryam
Service Mesh & API Gateway capabilities
Advanced networking
● Service discovery and failover
● Dynamic traffic routing
● Retry, timeout, circuit breaking
● Security, rate limiting, encryption
● Observability and tracing
@bibryam
What is Knative?
Serving
Common infrastructure
for request-driven
interactions that can
"scale to zero".
Eventing
Common infrastructure
for consuming and
producing events
declaratively.
Kubernetes-based platform to deploy, and manage
serverless workloads.
@bibryam
Knative Serving
● Scale-to-zero & activation
● Rapid autoscaling
● Traffic splitting
● Callable by Knative eventing
● Simplified deployment model
apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
name: lotto
spec:
replicas: 1
selector:
matchLabels:
app: lotto
template:
metadata:
labels:
app: lotto
spec:
containers:
- image: cds19/lotto
@bibryam
Knative Eventing
@bibryam
Knative Eventing
● Source Importers
(Kafka, Apache Camel 200+)
● Broker implementations
(In-memory, Kafka, etc)
● CloudEvents as the data format
● Triggers and filters
@bibryam
Knative capabilities
● Serving
○ Autoscaling, scale-to-zero
○ Traffic splitting
● Eventing
○ Messaging infrastructure
○ Source importers
@bibryam
What is Dapr?
A portable runtime for building distributed
applications.
@bibryam
Building blocks
@bibryam
Dapr architecture
@bibryam
Dapr on Kubernetes
@bibryam
Dapr capabilities
● Stateful primitives
● Resource bindings
● Advanced networking
@bibryam
The list goes on...
Hybrid cloud, and edge-to-edge application networking
Stateful abstractions for serverless applications
Camel K - Kubernetes native integration framework
Log collection, OpenID authentication, caching...
@bibryam
New developments
Lifecycle
● Better sidecars kubernetes/753
● More operators, better operators
operatorhub.io
Networking
● Data Plane Development Kit (DPDK)
● Envoy: More L7 protocols, Wasm
Bindings
● Bindings move out of the application
● More resource bindings for Dapr, Knative
State
● More work is needed!
● No pluggable, polyglot stateful
abstractions for federation, CDC,
caching, idempotency, etc.
@bibryam
Multi-runtime services ecosystem
@bibryam
Business logic and distributed primitives
@bibryam
What comes after Microservices?
@bibryam
https://k8spatterns.io

Kubernetes: The evolution of distributed systems | DevNation Tech Talk