SlideShare a Scribd company logo
1 of 39
Download to read offline
SCALITY METALK8S
AN OPINIONATED KUBERNETES DISTRIBUTION
WITH A FOCUS ON LONG-TERM ON-PREM DEPLOYMENTS
Nicolas Trangez - Senior Architect
nicolas.trangez@scality.com
@eikke | @Scality | @Zenko
ABOUT ME
About me
- Belgian, now working for Scality, a French scale-up
- Into infrastructure management, storage,... since start of career
- Previously:
- Q-layer / SUN / Oracle
- Incubaid / Amplidata
- Open Source for ages
- Also, pushing for Open Source within jobs: publishing & practices
ABOUT SCALITY
ONE PURPOSE
GIVING FREEDOM & CONTROL
TO PEOPLE WHO CREATE
VALUE WITH DATA
8 60+
120+
20+
~10
GLOBAL CLIENT BASEGLOBAL PRESENCE
20+
OFFICES
200+
PEOPLE
NATIONALITIES
EUROPEAMERICAS
AUSTRALIA
JAPAN
OUR JOURNEY TO KUBERNETES
Scality RING, S3 Connector & Zenko
Scality RING
- Physical servers, some VMs
- Only the OS available (incl. ‘legacy’
like CentOS 6)
- Static resource pools
- Static server roles / configurations
- Solution distributed as RPM
packages, deployed using
SaltStack
- De-facto taking ownership of host,
difficult to run multiple instances
- Fairly static post-install
On-premise
Distributed Object & File Storage
Scality S3
Connector
On-premise S3-compatible Object
Storage
- Physical servers, sometimes VMs
- Static resource pools
- “Microservices” architecture
- Solution distributed as Docker
container images, deployed using
Ansible playbooks
- No runtime orchestration
- Log management, monitoring,...
comes with solution
Scality Zenko
- Deployed on-prem or ‘in the Cloud’:
major paradigm shift
- New challenges, new opportunities
- Multi-Cloud Data Controller, must
run on multiple Cloud platforms
Multi-Cloud Data Controller
Scality Zenko
- Embraced containers as
distribution mechanism
- Some shared with Scality S3 Connector
- For Cloud deployments, started
with Docker Swarm
- Ran into scaling, reliability and other
technical issues
- Decided to move to Kubernetes
- Managed platforms for Cloud
deployments, where available (GKE,
AKS, EKS,...)
- On-prem clusters
Deployment Model
Scality Zenko
- Homogenous deployment between
in-cloud and on-prem
- Various services provided by
cluster:
- Networking & policies
- Service restart, rolling upgrades
- Service log capturing & storage
- Service monitoring & metering
- Load-balancing
- TLS termination
- Flexible resource management
- If needed, easily add resources to
cluster by adding some (VM) nodes
- HorizontalPodAutoscaler
Kubernetes Benefits
Scality Zenko
- Currently using Helm chart
- Contributed many fixes and
features to upstream charts
repository
- Contributed new charts and
became maintainer of some others
- Future: Zenko ‘operator’
- Can run in your cluster
(https://github.com/Scality/Zenko)
or test-drive a hosted instance for
free using Zenko Orbit at
https://zenko.io/admin
Kubernetes Deployment
OUR JOURNEY TO KUBERNETES
MetalK8s
On-prem Kubernetes
- Can’t expect a Kubernetes cluster to be available, provided by Scality customer
- Looked into various existing offerings, but in the ends needs to be supported
by/through Scality (single offering)
- Also, many existing solutions don’t cover enterprise datacenter requirements
- Decided to roll our own
SCALITY METALK8S
AN OPINIONATED KUBERNETES DISTRIBUTION
WITH A FOCUS ON LONG-TERM ON-PREM DEPLOYMENTS
OPINIONATED
We offer an out-of-the-box experience, no non-trivial
choices to be made by users
LONG-TERM
Zenko solution is mission-critical, can’t spawn a new
cluster to upgrade and use ELB (or similar) in front
ON-PREM
Can’t expect anything to be available but (physical)
servers with a base OS
Scality MetalK8s 1.x
- Scope: 3-20 physical machine, pre-provisioned by customer or partner
- Built on top of the Kubespray Ansible playbook
- Use Kubespray to lay out a base Kubernetes cluster
- Also: etcd, CNI
- Add static & dynamic inventory validation pre-checks, OS tuning, OS security
- Based on experience from large-scale Scality RING deployments
- Augment with various services, deployed using Helm
- Operations
- Ingress
- Cluster services
- Take care of on-prem specific storage architecture
Scality MetalK8s 1.x: Cluster Services
- “Stand on the shoulders of giants”
- Heapster for dashboard graphs, `kubectl top`,...
- metrics-server for HorizontalPodAutoscaler
- Looking into k8s-prometheus-adapter
- Ingress & TLS termination: nginx-ingress-controller
- Cluster monitoring & alerting: Prometheus, prometheus-operator, Alertmanager,
kube-prometheus, Grafana
- Host-based node_exporter on all servers comprising the cluster, including etcd
- Host & container logs: Elasticsearch, Curator, fluentd, fluent-bit, Kibana
- All of the above gives a great out-of-the-box experience for operators
Scality MetalK8s 1.x: Storage
- On-prem: no EBS, no GCP Persistent Disks, no Azure Storage Disk,...
- Also: can’t rely on NAS (e.g. through OpenStack Cinder) to be available
- Lowest common denominator: local disks in a node
- PVs bound to a node, hence PVCs bound, hence Pods bound
- Thanks PersistentLocalVolumes & VolumeScheduling!
- Decided not to use LocalVolumeProvisioner, but static approach
- Based on LVM2 Logical Volumes for flexibility
- PV, VG, LVs defined in inventory, created/formatted/mounted by playbook
- K8s PV objects created by playbook
Scality MetalK8s 1.x: Ease of Deployment
$ # Requirements: a Linux or OSX machine with Python and coreutils-like
$ # Create inventory
$ vim inventory/...
$ make shell # Launches a ‘virtualenv’ with Ansible & deps, ‘kubectl’,
‘helm’
$ # Demo @ https://asciinema.org/a/9kNIpBWg4KiwjT5mNSrH0tmj9
$ ansible-playbook -i inventory -b playbooks/deploy.yml
$ # Grab a coffee, and done
Scality MetalK8s 1.x: Non-technical goodies
- Documentation
- Various guides: Installation, Operations, Reference
- https://metal-k8s.readthedocs.io
- Extensive testing
- Installation
- Upgrade
- Services
- Failure testing
Scality MetalK8s 2.x
‘Moonshot’
Scality MetalK8s: Roadblocks and requirements
- Based on years of years of experience deploying Scality RING at enterprise customers,
service providers,...
- Constraints in datacenters often very different from ‘VMs on EC2’
- No direct internet access: everything through HTTP(S) proxy, no non-HTTP traffic
- Dynamic server IP assignment
- Security rules requiring services to bind to specific IPs only, different subnets for control & workload,...
- Fully air gapped systems: requires 100% offline installation
- Non-standard OS/kernel
- Integration with corporate authn/authz systems
- Loosely captured in https://github.com/scality/metalk8s/blob/development/2.0/docs/requirements.rst
- Given reqs, decided continuing same path wouldn’t work
- However, useful lessons learned
Scality MetalK8s: Shifting focus
- Today (1.x): general-purpose deployment tool, fulfil K8s cluster pre-req of $product
- Moonshot: use-case specific component a vendor (you!) can embed in on-prem
solution/product running on K8s without being a K8s product
- More configurable to match exact solution requirements and deployment environment
- Tighten out-of-the-box security depending on application ‘insecurity’ needs
Scality MetalK8s 2.x: Changed Architecture
- Not built on Kubespray, built from scratch, isomorphic to kubeadm cluster
- No one-of playbooks, no YOLO clusters (™ @KrisBuytaert)
- Focus on day 1/N operations
- Need a dynamic system:
- React to potential issues in cluster (e.g. prevent certificate TTL expiration)
- Need to act on system layer ‘from inside K8s’ (e.g. storage provisioning)
Scality MetalK8s 2.x: Changed Architecture
- Using SaltStack
- Dynamic, ‘always-present’, lots of in-house experience
- Build everything into single ISO image
- Cluster deployment / lifecycle:
- Deploy ‘bootstrap’ node: mount ISO, create minimal config, run script
- Deployment kickstarts from Bash into Salt local mode, then master/minion mode ASAP
- Lays out Yum repository, container registry (for now), Salt ‘master’ on bootstrap node, 1-node K8s cluster
- CRI: containerd, no Docker. Maybe cri-o someday
- CNI: Calico
- Once bootstrap deployed to fully-functional 1-node K8s cluster, add new nodes:
- Create Node object in K8s, set role labels and SSH info
- Trigger Salt to deploy server: orchestration uses SaltSSH for minion, then plain Salt
- Control-plane, infra, workload node, or mixture
- Upgrade fully automated, rolling
Interlude: static-container-registry
- Currently deploying full Docker Registry as part of MetalK8s
- Overkill: only need read-only distribution
- Overkill: requires ‘seeding’ the registry during deployment
- Overkill: storage consumption explosion
- Since no alternatives available, wrote something new: static-container-registry
- Given set of ‘exported’ container images, deduplicate layers (hardlink), then run script to
generate nginx config include snippet, and serve static files as-is, act as ‘good enough’
registry API
- Tested with Docker, containerd, cri-o, skopeo
https://github.com/NicolasT/static-container-registry/
Scality MetalK8s 2.x: Changed Architecture
- Everything centered around Kubernetes
- Use K8s Nodes as ‘inventory’
- Use K8s Nodes as source-of-truth for server roles
- Deploy cluster services (Yum repo, registry,...) as K8s/kubelet-managed Pods: central view of cluster,
unified log management, metrics gathering,...
- Boils down to etcd cluster availability, building playbooks to recover in case of emergency
- Cluster API: Kubernetes API + SaltAPI
- Integrated SaltAPI authn with K8s authn, i.e. can do OIDC
- Integrated SaltAPI authz with K8s RBAC, i.e. unified experience
- Embrace K8s model: declare first in model, then realize: nodes, storage,...
Interlude: MetalK8s 2.x Storage Provisioning
- Still focus on local disk manipulation
- Pure LVM2 not sufficient due to application needs
- Embrace K8s model + Salt:
- Create Volume custom resource objects in K8s
- Controller / ‘operator’ acts on Volume CRUDs
- Calls into SaltAPI to realize ‘physical’ volumes, or LVM LVs, or ...
- Based on existing Scality Salt tooling, incl. RAID controller management
- Once ‘physical’ volume created, create K8s PersistentVolume, expose to workloads
Scality MetalK8s 2.x: Covering Enterprise Needs
- 100% offline installation
- System packages
- Containers
- Networking
- Discern control-plane and workload-plane networks
- Control-plane HA either keepalived managed by MetalK8s, or external VIP/LB
- RHEL7 / CentOS7
- It’s what our customers use… patches welcome
- Integrate with enterprise authn/authz (Dex, WiP)
- Custom cluster-management UI
Interlude: Deploying Solutions
- K8s cluster not ‘end goal’, how to deploy actual product(s)?
- Main concept: operators
- A solution (e.g. Zenko) brings an operator that can deploy, manage, lifecycle solution instance(s)
- Solutions ship as ISO images containing container images and metadata
- ISOs ‘imported’ in cluster (on bootstrap node)
- Expose containers in registry
- Deploy operator & custom UI (if applicable)
- Solution instances created/deployed, upgraded, downgraded,...
- Solution K8s objects, containers,... managed using standard K8s tooling, custom
tooling through K8s API,...
- Metrics captured by cluster-provided Prometheus, monitored by cluster-provided
AlertManager & Grafana (with solution-provided rules & dashboards),...
Scality MetalK8s 2.x: The road forward
- Bring on feature-parity with 1.x
- Prometheus
- Logging: considering GrafanaLabs Loki i.s.o. ELK
- Ingress controller, MetalLB
- Switch default branch on GitHub (see development/2.0 for now)
- Increase documentation coverage
- Currently, Vagrantfile is best doc *oops*
- Implement storage management
- Other CNIs, Istio, Jaeger tracing, OpenPolicyAgent,...
- Experimenting with built-in node netboot: PXE/iPXE, boot-from-RAMdisk/livenet
SCALITY METALK8S
AN OPINIONATED KUBERNETES DISTRIBUTION
WITH A FOCUS ON LONG-TERM ON-PREM DEPLOYMENTS
https://github.com/scality/metalk8s
@Scality | @Zenko
Nicolas Trangez - Senior Architect
nicolas.trangez@scality.com
@eikke | @Scality | @Zenko

More Related Content

What's hot

Securing your database servers from external attacks
Securing your database servers from external attacksSecuring your database servers from external attacks
Securing your database servers from external attacksAlkin Tezuysal
 
Openstack In Real Life
Openstack In Real LifeOpenstack In Real Life
Openstack In Real LifePaul Guth
 
Openstack platform -Red Hat Pizza and technology event - Israel
Openstack platform -Red Hat Pizza and technology event - IsraelOpenstack platform -Red Hat Pizza and technology event - Israel
Openstack platform -Red Hat Pizza and technology event - IsraelArthur Berezin
 
Demistifying open stack storage
Demistifying open stack storageDemistifying open stack storage
Demistifying open stack storageopenstackindia
 
Andy McCrae, Rackspace - Using Ansible to Deploy and Automate OpenStack, Open...
Andy McCrae, Rackspace - Using Ansible to Deploy and Automate OpenStack, Open...Andy McCrae, Rackspace - Using Ansible to Deploy and Automate OpenStack, Open...
Andy McCrae, Rackspace - Using Ansible to Deploy and Automate OpenStack, Open...Cloud Native Day Tel Aviv
 
Introducing OpenStack for Beginners
Introducing OpenStack for Beginners Introducing OpenStack for Beginners
Introducing OpenStack for Beginners openstackindia
 
Mirantis OpenStack-DC-Meetup 17 Sept 2014
Mirantis OpenStack-DC-Meetup 17 Sept 2014Mirantis OpenStack-DC-Meetup 17 Sept 2014
Mirantis OpenStack-DC-Meetup 17 Sept 2014Mirantis
 
Cloud Architect Alliance #15: Openstack
Cloud Architect Alliance #15: OpenstackCloud Architect Alliance #15: Openstack
Cloud Architect Alliance #15: OpenstackMicrosoft
 
Dude, This Isn't Where I Parked My Instance?
Dude, This Isn't Where I Parked My Instance?Dude, This Isn't Where I Parked My Instance?
Dude, This Isn't Where I Parked My Instance?Stephen Gordon
 
Loadays 2013 OpenNebula Fundamentals
Loadays 2013 OpenNebula FundamentalsLoadays 2013 OpenNebula Fundamentals
Loadays 2013 OpenNebula FundamentalsOpenNebula Project
 
Introduction to OpenStack Cinder
Introduction to OpenStack CinderIntroduction to OpenStack Cinder
Introduction to OpenStack CinderSean McGinnis
 
Red Hat Enteprise Linux Open Stack Platfrom Director
Red Hat Enteprise Linux Open Stack Platfrom DirectorRed Hat Enteprise Linux Open Stack Platfrom Director
Red Hat Enteprise Linux Open Stack Platfrom DirectorOrgad Kimchi
 
Vancouver open stack meetup presentation
Vancouver open stack meetup presentationVancouver open stack meetup presentation
Vancouver open stack meetup presentationSean Winn
 
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.Geir Høydalsvik
 
2020 pre fosdem mysql clone
2020 pre fosdem   mysql clone2020 pre fosdem   mysql clone
2020 pre fosdem mysql cloneGeorgi Kodinov
 
Compute 101 - OpenStack Summit Vancouver 2015
Compute 101 - OpenStack Summit Vancouver 2015Compute 101 - OpenStack Summit Vancouver 2015
Compute 101 - OpenStack Summit Vancouver 2015Stephen Gordon
 
Geek Week 2016 - Deep Dive To Openstack
Geek Week 2016 -  Deep Dive To OpenstackGeek Week 2016 -  Deep Dive To Openstack
Geek Week 2016 - Deep Dive To OpenstackHaim Ateya
 

What's hot (19)

Securing your database servers from external attacks
Securing your database servers from external attacksSecuring your database servers from external attacks
Securing your database servers from external attacks
 
Openstack In Real Life
Openstack In Real LifeOpenstack In Real Life
Openstack In Real Life
 
Openstack platform -Red Hat Pizza and technology event - Israel
Openstack platform -Red Hat Pizza and technology event - IsraelOpenstack platform -Red Hat Pizza and technology event - Israel
Openstack platform -Red Hat Pizza and technology event - Israel
 
Demistifying open stack storage
Demistifying open stack storageDemistifying open stack storage
Demistifying open stack storage
 
Andy McCrae, Rackspace - Using Ansible to Deploy and Automate OpenStack, Open...
Andy McCrae, Rackspace - Using Ansible to Deploy and Automate OpenStack, Open...Andy McCrae, Rackspace - Using Ansible to Deploy and Automate OpenStack, Open...
Andy McCrae, Rackspace - Using Ansible to Deploy and Automate OpenStack, Open...
 
Introducing OpenStack for Beginners
Introducing OpenStack for Beginners Introducing OpenStack for Beginners
Introducing OpenStack for Beginners
 
Mirantis OpenStack-DC-Meetup 17 Sept 2014
Mirantis OpenStack-DC-Meetup 17 Sept 2014Mirantis OpenStack-DC-Meetup 17 Sept 2014
Mirantis OpenStack-DC-Meetup 17 Sept 2014
 
Cloud Architect Alliance #15: Openstack
Cloud Architect Alliance #15: OpenstackCloud Architect Alliance #15: Openstack
Cloud Architect Alliance #15: Openstack
 
Dude, This Isn't Where I Parked My Instance?
Dude, This Isn't Where I Parked My Instance?Dude, This Isn't Where I Parked My Instance?
Dude, This Isn't Where I Parked My Instance?
 
Loadays 2013 OpenNebula Fundamentals
Loadays 2013 OpenNebula FundamentalsLoadays 2013 OpenNebula Fundamentals
Loadays 2013 OpenNebula Fundamentals
 
Introduction to OpenStack Cinder
Introduction to OpenStack CinderIntroduction to OpenStack Cinder
Introduction to OpenStack Cinder
 
Red Hat Enteprise Linux Open Stack Platfrom Director
Red Hat Enteprise Linux Open Stack Platfrom DirectorRed Hat Enteprise Linux Open Stack Platfrom Director
Red Hat Enteprise Linux Open Stack Platfrom Director
 
OpenStack Neutron behind the Scenes
OpenStack Neutron behind the ScenesOpenStack Neutron behind the Scenes
OpenStack Neutron behind the Scenes
 
Vancouver open stack meetup presentation
Vancouver open stack meetup presentationVancouver open stack meetup presentation
Vancouver open stack meetup presentation
 
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
 
2020 pre fosdem mysql clone
2020 pre fosdem   mysql clone2020 pre fosdem   mysql clone
2020 pre fosdem mysql clone
 
Compute 101 - OpenStack Summit Vancouver 2015
Compute 101 - OpenStack Summit Vancouver 2015Compute 101 - OpenStack Summit Vancouver 2015
Compute 101 - OpenStack Summit Vancouver 2015
 
Geek Week 2016 - Deep Dive To Openstack
Geek Week 2016 -  Deep Dive To OpenstackGeek Week 2016 -  Deep Dive To Openstack
Geek Week 2016 - Deep Dive To Openstack
 
Ironic
IronicIronic
Ironic
 

Similar to MetalK8s 2.x 'Moonshot' - LOADays 2019, Antwerp

Introducing MetalK8s, An Opinionated Kubernetes Implementation
Introducing MetalK8s, An Opinionated Kubernetes ImplementationIntroducing MetalK8s, An Opinionated Kubernetes Implementation
Introducing MetalK8s, An Opinionated Kubernetes ImplementationScality
 
OpenNebulaconf2017US: Paying down technical debt with "one" dollar bills by ...
OpenNebulaconf2017US:  Paying down technical debt with "one" dollar bills by ...OpenNebulaconf2017US:  Paying down technical debt with "one" dollar bills by ...
OpenNebulaconf2017US: Paying down technical debt with "one" dollar bills by ...OpenNebula Project
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes IntroductionEric Gustafson
 
KubeCon 2017: Kubernetes from Dev to Prod
KubeCon 2017: Kubernetes from Dev to ProdKubeCon 2017: Kubernetes from Dev to Prod
KubeCon 2017: Kubernetes from Dev to ProdSubhas Dandapani
 
5 - Hands-on Kubernetes Workshop:
5 - Hands-on Kubernetes Workshop:5 - Hands-on Kubernetes Workshop:
5 - Hands-on Kubernetes Workshop:Kangaroot
 
CERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8sCERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8sBelmiro Moreira
 
9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)
9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)
9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)Stacy Véronneau
 
Openstackoverview-DEC2013
Openstackoverview-DEC2013Openstackoverview-DEC2013
Openstackoverview-DEC2013Michael Lessard
 
Designing Lean CloudStack Environments for the Edge - IndiQus - CloudStack E...
 Designing Lean CloudStack Environments for the Edge - IndiQus - CloudStack E... Designing Lean CloudStack Environments for the Edge - IndiQus - CloudStack E...
Designing Lean CloudStack Environments for the Edge - IndiQus - CloudStack E...ShapeBlue
 
OpenstackOverview.pdf
OpenstackOverview.pdfOpenstackOverview.pdf
OpenstackOverview.pdfKevinBuck30
 
DevNetCreate - ACI and Kubernetes Integration
DevNetCreate - ACI and Kubernetes IntegrationDevNetCreate - ACI and Kubernetes Integration
DevNetCreate - ACI and Kubernetes IntegrationHank Preston
 
Kolla talk at OpenStack Summit 2017 in Sydney
Kolla talk at OpenStack Summit 2017 in SydneyKolla talk at OpenStack Summit 2017 in Sydney
Kolla talk at OpenStack Summit 2017 in SydneyVikram G Hosakote
 
Q&a on running the elastic stack on kubernetes
Q&a on running the elastic stack on kubernetesQ&a on running the elastic stack on kubernetes
Q&a on running the elastic stack on kubernetesDaliya Spasova
 
Metal-k8s presentation by Julien Girardin @ Paris Kubernetes Meetup
Metal-k8s presentation by Julien Girardin @ Paris Kubernetes MeetupMetal-k8s presentation by Julien Girardin @ Paris Kubernetes Meetup
Metal-k8s presentation by Julien Girardin @ Paris Kubernetes MeetupLaure Vergeron
 
Turn up the Heat with OpenStack and Kubernetes
Turn up the Heat with OpenStack and Kubernetes Turn up the Heat with OpenStack and Kubernetes
Turn up the Heat with OpenStack and Kubernetes Michael Schulz
 
On CloudStack, Docker, Kubernetes, and Big Data…Oh my ! By Sebastien Goasguen...
On CloudStack, Docker, Kubernetes, and Big Data…Oh my ! By Sebastien Goasguen...On CloudStack, Docker, Kubernetes, and Big Data…Oh my ! By Sebastien Goasguen...
On CloudStack, Docker, Kubernetes, and Big Data…Oh my ! By Sebastien Goasguen...Radhika Puthiyetath
 
1. CNCF kubernetes meetup - Ondrej Sika
1. CNCF kubernetes meetup - Ondrej Sika1. CNCF kubernetes meetup - Ondrej Sika
1. CNCF kubernetes meetup - Ondrej SikaJuraj Hantak
 
Architecture of Cisco Container Platform: A new Enterprise Multi-Cloud Kubern...
Architecture of Cisco Container Platform: A new Enterprise Multi-Cloud Kubern...Architecture of Cisco Container Platform: A new Enterprise Multi-Cloud Kubern...
Architecture of Cisco Container Platform: A new Enterprise Multi-Cloud Kubern...Sanjeev Rampal
 

Similar to MetalK8s 2.x 'Moonshot' - LOADays 2019, Antwerp (20)

Introducing MetalK8s, An Opinionated Kubernetes Implementation
Introducing MetalK8s, An Opinionated Kubernetes ImplementationIntroducing MetalK8s, An Opinionated Kubernetes Implementation
Introducing MetalK8s, An Opinionated Kubernetes Implementation
 
OpenNebulaconf2017US: Paying down technical debt with "one" dollar bills by ...
OpenNebulaconf2017US:  Paying down technical debt with "one" dollar bills by ...OpenNebulaconf2017US:  Paying down technical debt with "one" dollar bills by ...
OpenNebulaconf2017US: Paying down technical debt with "one" dollar bills by ...
 
Openstack 101
Openstack 101Openstack 101
Openstack 101
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
KubeCon 2017: Kubernetes from Dev to Prod
KubeCon 2017: Kubernetes from Dev to ProdKubeCon 2017: Kubernetes from Dev to Prod
KubeCon 2017: Kubernetes from Dev to Prod
 
5 - Hands-on Kubernetes Workshop:
5 - Hands-on Kubernetes Workshop:5 - Hands-on Kubernetes Workshop:
5 - Hands-on Kubernetes Workshop:
 
CERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8sCERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8s
 
Queens release updates
Queens release updatesQueens release updates
Queens release updates
 
9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)
9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)
9 ways to consume kubernetes on open stack in 15 mins (k8s meetup)
 
Openstackoverview-DEC2013
Openstackoverview-DEC2013Openstackoverview-DEC2013
Openstackoverview-DEC2013
 
Designing Lean CloudStack Environments for the Edge - IndiQus - CloudStack E...
 Designing Lean CloudStack Environments for the Edge - IndiQus - CloudStack E... Designing Lean CloudStack Environments for the Edge - IndiQus - CloudStack E...
Designing Lean CloudStack Environments for the Edge - IndiQus - CloudStack E...
 
OpenstackOverview.pdf
OpenstackOverview.pdfOpenstackOverview.pdf
OpenstackOverview.pdf
 
DevNetCreate - ACI and Kubernetes Integration
DevNetCreate - ACI and Kubernetes IntegrationDevNetCreate - ACI and Kubernetes Integration
DevNetCreate - ACI and Kubernetes Integration
 
Kolla talk at OpenStack Summit 2017 in Sydney
Kolla talk at OpenStack Summit 2017 in SydneyKolla talk at OpenStack Summit 2017 in Sydney
Kolla talk at OpenStack Summit 2017 in Sydney
 
Q&a on running the elastic stack on kubernetes
Q&a on running the elastic stack on kubernetesQ&a on running the elastic stack on kubernetes
Q&a on running the elastic stack on kubernetes
 
Metal-k8s presentation by Julien Girardin @ Paris Kubernetes Meetup
Metal-k8s presentation by Julien Girardin @ Paris Kubernetes MeetupMetal-k8s presentation by Julien Girardin @ Paris Kubernetes Meetup
Metal-k8s presentation by Julien Girardin @ Paris Kubernetes Meetup
 
Turn up the Heat with OpenStack and Kubernetes
Turn up the Heat with OpenStack and Kubernetes Turn up the Heat with OpenStack and Kubernetes
Turn up the Heat with OpenStack and Kubernetes
 
On CloudStack, Docker, Kubernetes, and Big Data…Oh my ! By Sebastien Goasguen...
On CloudStack, Docker, Kubernetes, and Big Data…Oh my ! By Sebastien Goasguen...On CloudStack, Docker, Kubernetes, and Big Data…Oh my ! By Sebastien Goasguen...
On CloudStack, Docker, Kubernetes, and Big Data…Oh my ! By Sebastien Goasguen...
 
1. CNCF kubernetes meetup - Ondrej Sika
1. CNCF kubernetes meetup - Ondrej Sika1. CNCF kubernetes meetup - Ondrej Sika
1. CNCF kubernetes meetup - Ondrej Sika
 
Architecture of Cisco Container Platform: A new Enterprise Multi-Cloud Kubern...
Architecture of Cisco Container Platform: A new Enterprise Multi-Cloud Kubern...Architecture of Cisco Container Platform: A new Enterprise Multi-Cloud Kubern...
Architecture of Cisco Container Platform: A new Enterprise Multi-Cloud Kubern...
 

Recently uploaded

%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...masabamasaba
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 

Recently uploaded (20)

%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 

MetalK8s 2.x 'Moonshot' - LOADays 2019, Antwerp

  • 1. SCALITY METALK8S AN OPINIONATED KUBERNETES DISTRIBUTION WITH A FOCUS ON LONG-TERM ON-PREM DEPLOYMENTS Nicolas Trangez - Senior Architect nicolas.trangez@scality.com @eikke | @Scality | @Zenko
  • 3. About me - Belgian, now working for Scality, a French scale-up - Into infrastructure management, storage,... since start of career - Previously: - Q-layer / SUN / Oracle - Incubaid / Amplidata - Open Source for ages - Also, pushing for Open Source within jobs: publishing & practices
  • 5. ONE PURPOSE GIVING FREEDOM & CONTROL TO PEOPLE WHO CREATE VALUE WITH DATA
  • 6. 8 60+ 120+ 20+ ~10 GLOBAL CLIENT BASEGLOBAL PRESENCE 20+ OFFICES 200+ PEOPLE NATIONALITIES EUROPEAMERICAS AUSTRALIA JAPAN
  • 7. OUR JOURNEY TO KUBERNETES Scality RING, S3 Connector & Zenko
  • 8. Scality RING - Physical servers, some VMs - Only the OS available (incl. ‘legacy’ like CentOS 6) - Static resource pools - Static server roles / configurations - Solution distributed as RPM packages, deployed using SaltStack - De-facto taking ownership of host, difficult to run multiple instances - Fairly static post-install On-premise Distributed Object & File Storage
  • 9. Scality S3 Connector On-premise S3-compatible Object Storage - Physical servers, sometimes VMs - Static resource pools - “Microservices” architecture - Solution distributed as Docker container images, deployed using Ansible playbooks - No runtime orchestration - Log management, monitoring,... comes with solution
  • 10. Scality Zenko - Deployed on-prem or ‘in the Cloud’: major paradigm shift - New challenges, new opportunities - Multi-Cloud Data Controller, must run on multiple Cloud platforms Multi-Cloud Data Controller
  • 11. Scality Zenko - Embraced containers as distribution mechanism - Some shared with Scality S3 Connector - For Cloud deployments, started with Docker Swarm - Ran into scaling, reliability and other technical issues - Decided to move to Kubernetes - Managed platforms for Cloud deployments, where available (GKE, AKS, EKS,...) - On-prem clusters Deployment Model
  • 12. Scality Zenko - Homogenous deployment between in-cloud and on-prem - Various services provided by cluster: - Networking & policies - Service restart, rolling upgrades - Service log capturing & storage - Service monitoring & metering - Load-balancing - TLS termination - Flexible resource management - If needed, easily add resources to cluster by adding some (VM) nodes - HorizontalPodAutoscaler Kubernetes Benefits
  • 13. Scality Zenko - Currently using Helm chart - Contributed many fixes and features to upstream charts repository - Contributed new charts and became maintainer of some others - Future: Zenko ‘operator’ - Can run in your cluster (https://github.com/Scality/Zenko) or test-drive a hosted instance for free using Zenko Orbit at https://zenko.io/admin Kubernetes Deployment
  • 14. OUR JOURNEY TO KUBERNETES MetalK8s
  • 15. On-prem Kubernetes - Can’t expect a Kubernetes cluster to be available, provided by Scality customer - Looked into various existing offerings, but in the ends needs to be supported by/through Scality (single offering) - Also, many existing solutions don’t cover enterprise datacenter requirements - Decided to roll our own
  • 16. SCALITY METALK8S AN OPINIONATED KUBERNETES DISTRIBUTION WITH A FOCUS ON LONG-TERM ON-PREM DEPLOYMENTS
  • 17. OPINIONATED We offer an out-of-the-box experience, no non-trivial choices to be made by users
  • 18. LONG-TERM Zenko solution is mission-critical, can’t spawn a new cluster to upgrade and use ELB (or similar) in front
  • 19. ON-PREM Can’t expect anything to be available but (physical) servers with a base OS
  • 20. Scality MetalK8s 1.x - Scope: 3-20 physical machine, pre-provisioned by customer or partner - Built on top of the Kubespray Ansible playbook - Use Kubespray to lay out a base Kubernetes cluster - Also: etcd, CNI - Add static & dynamic inventory validation pre-checks, OS tuning, OS security - Based on experience from large-scale Scality RING deployments - Augment with various services, deployed using Helm - Operations - Ingress - Cluster services - Take care of on-prem specific storage architecture
  • 21. Scality MetalK8s 1.x: Cluster Services - “Stand on the shoulders of giants” - Heapster for dashboard graphs, `kubectl top`,... - metrics-server for HorizontalPodAutoscaler - Looking into k8s-prometheus-adapter - Ingress & TLS termination: nginx-ingress-controller - Cluster monitoring & alerting: Prometheus, prometheus-operator, Alertmanager, kube-prometheus, Grafana - Host-based node_exporter on all servers comprising the cluster, including etcd - Host & container logs: Elasticsearch, Curator, fluentd, fluent-bit, Kibana - All of the above gives a great out-of-the-box experience for operators
  • 22.
  • 23.
  • 24.
  • 25. Scality MetalK8s 1.x: Storage - On-prem: no EBS, no GCP Persistent Disks, no Azure Storage Disk,... - Also: can’t rely on NAS (e.g. through OpenStack Cinder) to be available - Lowest common denominator: local disks in a node - PVs bound to a node, hence PVCs bound, hence Pods bound - Thanks PersistentLocalVolumes & VolumeScheduling! - Decided not to use LocalVolumeProvisioner, but static approach - Based on LVM2 Logical Volumes for flexibility - PV, VG, LVs defined in inventory, created/formatted/mounted by playbook - K8s PV objects created by playbook
  • 26. Scality MetalK8s 1.x: Ease of Deployment $ # Requirements: a Linux or OSX machine with Python and coreutils-like $ # Create inventory $ vim inventory/... $ make shell # Launches a ‘virtualenv’ with Ansible & deps, ‘kubectl’, ‘helm’ $ # Demo @ https://asciinema.org/a/9kNIpBWg4KiwjT5mNSrH0tmj9 $ ansible-playbook -i inventory -b playbooks/deploy.yml $ # Grab a coffee, and done
  • 27. Scality MetalK8s 1.x: Non-technical goodies - Documentation - Various guides: Installation, Operations, Reference - https://metal-k8s.readthedocs.io - Extensive testing - Installation - Upgrade - Services - Failure testing
  • 29. Scality MetalK8s: Roadblocks and requirements - Based on years of years of experience deploying Scality RING at enterprise customers, service providers,... - Constraints in datacenters often very different from ‘VMs on EC2’ - No direct internet access: everything through HTTP(S) proxy, no non-HTTP traffic - Dynamic server IP assignment - Security rules requiring services to bind to specific IPs only, different subnets for control & workload,... - Fully air gapped systems: requires 100% offline installation - Non-standard OS/kernel - Integration with corporate authn/authz systems - Loosely captured in https://github.com/scality/metalk8s/blob/development/2.0/docs/requirements.rst - Given reqs, decided continuing same path wouldn’t work - However, useful lessons learned
  • 30. Scality MetalK8s: Shifting focus - Today (1.x): general-purpose deployment tool, fulfil K8s cluster pre-req of $product - Moonshot: use-case specific component a vendor (you!) can embed in on-prem solution/product running on K8s without being a K8s product - More configurable to match exact solution requirements and deployment environment - Tighten out-of-the-box security depending on application ‘insecurity’ needs
  • 31. Scality MetalK8s 2.x: Changed Architecture - Not built on Kubespray, built from scratch, isomorphic to kubeadm cluster - No one-of playbooks, no YOLO clusters (™ @KrisBuytaert) - Focus on day 1/N operations - Need a dynamic system: - React to potential issues in cluster (e.g. prevent certificate TTL expiration) - Need to act on system layer ‘from inside K8s’ (e.g. storage provisioning)
  • 32. Scality MetalK8s 2.x: Changed Architecture - Using SaltStack - Dynamic, ‘always-present’, lots of in-house experience - Build everything into single ISO image - Cluster deployment / lifecycle: - Deploy ‘bootstrap’ node: mount ISO, create minimal config, run script - Deployment kickstarts from Bash into Salt local mode, then master/minion mode ASAP - Lays out Yum repository, container registry (for now), Salt ‘master’ on bootstrap node, 1-node K8s cluster - CRI: containerd, no Docker. Maybe cri-o someday - CNI: Calico - Once bootstrap deployed to fully-functional 1-node K8s cluster, add new nodes: - Create Node object in K8s, set role labels and SSH info - Trigger Salt to deploy server: orchestration uses SaltSSH for minion, then plain Salt - Control-plane, infra, workload node, or mixture - Upgrade fully automated, rolling
  • 33. Interlude: static-container-registry - Currently deploying full Docker Registry as part of MetalK8s - Overkill: only need read-only distribution - Overkill: requires ‘seeding’ the registry during deployment - Overkill: storage consumption explosion - Since no alternatives available, wrote something new: static-container-registry - Given set of ‘exported’ container images, deduplicate layers (hardlink), then run script to generate nginx config include snippet, and serve static files as-is, act as ‘good enough’ registry API - Tested with Docker, containerd, cri-o, skopeo https://github.com/NicolasT/static-container-registry/
  • 34. Scality MetalK8s 2.x: Changed Architecture - Everything centered around Kubernetes - Use K8s Nodes as ‘inventory’ - Use K8s Nodes as source-of-truth for server roles - Deploy cluster services (Yum repo, registry,...) as K8s/kubelet-managed Pods: central view of cluster, unified log management, metrics gathering,... - Boils down to etcd cluster availability, building playbooks to recover in case of emergency - Cluster API: Kubernetes API + SaltAPI - Integrated SaltAPI authn with K8s authn, i.e. can do OIDC - Integrated SaltAPI authz with K8s RBAC, i.e. unified experience - Embrace K8s model: declare first in model, then realize: nodes, storage,...
  • 35. Interlude: MetalK8s 2.x Storage Provisioning - Still focus on local disk manipulation - Pure LVM2 not sufficient due to application needs - Embrace K8s model + Salt: - Create Volume custom resource objects in K8s - Controller / ‘operator’ acts on Volume CRUDs - Calls into SaltAPI to realize ‘physical’ volumes, or LVM LVs, or ... - Based on existing Scality Salt tooling, incl. RAID controller management - Once ‘physical’ volume created, create K8s PersistentVolume, expose to workloads
  • 36. Scality MetalK8s 2.x: Covering Enterprise Needs - 100% offline installation - System packages - Containers - Networking - Discern control-plane and workload-plane networks - Control-plane HA either keepalived managed by MetalK8s, or external VIP/LB - RHEL7 / CentOS7 - It’s what our customers use… patches welcome - Integrate with enterprise authn/authz (Dex, WiP) - Custom cluster-management UI
  • 37. Interlude: Deploying Solutions - K8s cluster not ‘end goal’, how to deploy actual product(s)? - Main concept: operators - A solution (e.g. Zenko) brings an operator that can deploy, manage, lifecycle solution instance(s) - Solutions ship as ISO images containing container images and metadata - ISOs ‘imported’ in cluster (on bootstrap node) - Expose containers in registry - Deploy operator & custom UI (if applicable) - Solution instances created/deployed, upgraded, downgraded,... - Solution K8s objects, containers,... managed using standard K8s tooling, custom tooling through K8s API,... - Metrics captured by cluster-provided Prometheus, monitored by cluster-provided AlertManager & Grafana (with solution-provided rules & dashboards),...
  • 38. Scality MetalK8s 2.x: The road forward - Bring on feature-parity with 1.x - Prometheus - Logging: considering GrafanaLabs Loki i.s.o. ELK - Ingress controller, MetalLB - Switch default branch on GitHub (see development/2.0 for now) - Increase documentation coverage - Currently, Vagrantfile is best doc *oops* - Implement storage management - Other CNIs, Istio, Jaeger tracing, OpenPolicyAgent,... - Experimenting with built-in node netboot: PXE/iPXE, boot-from-RAMdisk/livenet
  • 39. SCALITY METALK8S AN OPINIONATED KUBERNETES DISTRIBUTION WITH A FOCUS ON LONG-TERM ON-PREM DEPLOYMENTS https://github.com/scality/metalk8s @Scality | @Zenko Nicolas Trangez - Senior Architect nicolas.trangez@scality.com @eikke | @Scality | @Zenko