Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[Guus van Weelden] Let a Kubernetes cluster man...

[Guus van Weelden] Let a Kubernetes cluster manage its worker nodes by itself

Presentation from GDG DevFest Ukraine 2017 - the biggest community-driven Google tech conference in the CEE.

Learn more at: https://devfest.gdg.org.ua

Google Developers Group Lviv

October 13, 2017
Tweet

More Decks by Google Developers Group Lviv

Other Decks in Technology

Transcript

  1. Who am I? Guus van Weelden Who I’m working for?

    Loodse GmbH Kubernetes?! Short recap Kubermatic?! What’s that? Node Deployment Solutions The old way NodeSet! Make K8s even greater Demo time! Praise the demo gods! Agenda
  2. Name: Guus van Weelden Position: Developer, Trainer & Consultant Favorite

    programming language: Golang Employer: Loodse GmbH Meta: GDG Golang & Cloud Hamburg Lead Guus van Weelden
  3. Company: Loodse GmbH Focus: Container and Cloud Native technologies Product:

    Kubermatic Headquarter: Hamburg, Germany Partner: Google Cloud Platform Partner Member of CNCF and Linux Foundation Loodse
  4. Kubernetes is an open-source system for automating deployment, scaling, and

    management of containerized applications. Kubernetes - a short recap
  5. Current approach • Needs Ops to scale the cluster •

    No generic approach • Each implementation needs specific knowledge • Scaling of new nodes needs external dependencies • No generic node auto scaling • Huge effort to deploy k8s on a different platform Node Node Node Master Node
  6. PersistentVolumes A higher-level storage abstraction • insulation from any one

    cloud environment Admin provisions them, users claim them Independent lifetime from their consumers Dynamically “scheduled” and managed Pod Claim
  7. Native integration • Dev can scale the cluster • Pets

    vs cattle for nodes • Implementation of generic auto scaling possible • Very similar setup for different provider kubectl create nodes Node Node Node Master Node
  8. Nodes Current node lifecycle • Event executed -> node resource

    get’s created General k8s resource lifecycle • Resource get’s created -> event executed
  9. NodeController Watch for new Node resources Provision the machine at

    the cloud provider • Machine joins the cluster • Kubelet updates the Node resource Deletes the machine at the cloud provider Node Resources
  10. NodeClass Cloudprovider & OS specific details Spec • Cloudprovider credentials

    • Machine type (e.g. t2.medium) • Provisioning • Files e.g systemd unit, ssh keys • ssh commands Node Resources Class
  11. NodeSet Group of similar nodes Integration with node autoscaler Spec:

    • Replicas -> number of nodes • NodeController • NodeClass Node Res Class Node Res Node Res
  12. NodeSetController Node Res Class Node Res Node Res Create and

    delete node resources Makes sure • Number of nodes == nodeset.replicas
  13. Thanks to the maintainer of the K8s NodeSet • Russell

    Wu • Ivan Diao • Stefan Schimanski • Henrik Schmidt https://github.com/kube-node END