DOKK Library

openSUSE Kubic - The Container Platform by openSUSE

Authors Sarah Julia Kriesch

License CC-BY-SA-4.0

Plaintext
openSUSE Kubic
The Container Platform by openSUSE


https://kubic.opensuse.org




   Sarah Julia Kriesch
   sarah.kriesch@opensuse.org
        Agenda
    •   About me
    •   The openSUSE project
    •   openSUSE Kubic
    •   Features
    •   Transactional Updates
    •   Velum as a Dashboard
    •   openSUSE Leap and Kubic
    •   Podman
    •   How to contribute

2
    About me
    •   Student in Computer Science (B.Sc.), TH Nürnberg
    •   Student Representative in Senate/ University Council
    •   Student Representative in AG Study Plan, AG Laboratories
    •   Founder AG Open Source (Educator + Trainer), TH Nürnberg
    •   Global Translation Coordinator, QA, Wiki, Advocate
        (openSUSE) at openSUSE
    •   Chairman at One Week Experience e.V. (One Week Student)




3
4
    openSUSE Kubic project
    •   Container as a Service Platform
    •   MicroOS, based on openSUSE Tumbleweed
    •   Velum, Cluster Bootstrapper & Cluster Dashboard
    •   Based on SUSE Container as a Service Platform
        (CaaSP)




5
    Features
    •   Transactional Updates
    •   Latest packages with openSUSE Tumbleweed
    •   Based on Podman
    •   Created with Docker base(part of Atomic Project)




6
    Transactional Updates
    •   Is Atomic:
        ‒   Fully applied or not at all
        ‒   Update does not influence the running system
    •   Can be rolled back:
        ‒   A failed or incompatible update can be discarded and the
            previous system can be restored




7
    Requirements
    •   BtrFS root filesystem with snapper (snapshots)/
        rollback enabled
    •   zypper
    •   btrfsprogs




8
    Snapshots vs. Transactional Updates

     current root        current root
     ro                  ro
     ro                  ro
     ro                  ro
     ro                  ro




9
     Transactional Update
     •   Clone of current root to ro
     •   Change rw
     •   zypper up

     •   Change to ro
     •   “Rollforward” with btrfs subvol set-default
     •   After reboot change / update executed
     •   Quickly rollback



10
     Executing Transactional Updates
     •   Update/Upgrade:
         transactional-update
         [up|dup|patch]
     •   Installation/ Remove /
         Update 1 package:
         transactional-update pkg
         [install|remove|update]
         pkg
     •   Rollback:
         transactional-update
         rollback
11
     Project Atomic
     •   Container Tools
         (incl. Compose)
     •   Integrated docker
         commands
     •   Easy to use with
         container experience




12
     Velum as a Dashboard




13
     How does Leap profit from Kubic?
     •   Transactional Updates
         available in Tumbleweed
         and Leap




14
         kubeadm
     •   toolkit produced by
         Kubernetes
     •   Creation of kubeadm nodes
         for a cluster
     •   Initialization of the network
         and joining a node:
     •   kubeadm init –pod-network-
         cidr=10.244.0.0/16
     •   kubeadm join


15
     kubicctl
     •   Adding Worker Nodes:
         ‒   kubicctl node add node1,node2,…
     •   Verifying the cluster:
         ‒   kubectl get nodes




16
     Verification of the cluster




17
     Kubic Node Roles
     •   Kubic Admin Node:               •   Kubic Loadbalancer Node:
         ‒   kubicd                          ‒   MicroOS without container
                                                 runtime
             (daemon which
             communicates via gRPC           ‒   haproxy installed
             with clients and setup of
             Kubernetes network)
                                         •   Additional Kubic Node:
         ‒   salt-master (for node
                                             ‒   Additional Master for HA
             management via                  ‒   Worker Node
             Dashboard)
         ‒   Kubernetes Master Node




18
                             Podman
     •   Alternative container engine instead of docker
     •   Same commands as docker
     •   Daemonless and rootless containers possible

     •   Container Manager as docker-compose
     •   Sharing of one network namespace
     •   Compatible with multiple image formats including
         the OCI and Docker image formats



19
                              Pods




     •   1 Kubernetes pod in 1 Linux namespace and the
         same cgroup
     •   Flexible combinations of services possible
         (webserver, github pull, database, ...)

20
     Daemonless
     •   Docker daemon is (mostly) executed by root
     •   Podman is working without central daemon
     •   Additional process conmon is monitoring and gives
         correct start parameters for the container runtime




21
     Rootless
     •   Start of a container without root privileges
     •   Mapping of the UID in the namespace
     •   Using root in a container possible (isolating root)
     •   User in the container has default access on host
         system


     •   Docker offers that since version 19.03




22
     Example of a rootless podman process




23
     Podman commands – as docker
     •   podman run    •   podman build
     •   podman exec   •   podman image
     •   podman info   •   podman images
     •   podman logs   •   podman commit
     •   podman ps     •   podman history
     •   podman cp     •   podman stop
     •   podman rm     •   podman start
     •   podman poll   •   podman volume
     •   podman push
24
      Podman (only) commands
 •   podman generate kube       •   podman pod create
 •   podman container cleanup   •   podman pod kill
 •   podman container exists    •   podman pod ps
 •   podman container restore   •   podman pod pause
 •   podman image exists        •   podman pod restart




25
     “Do you wonna become a
     Contributor?”




26
     Packaging
     •   Creation of packages with the Open Build Service
     •   Submit to openSUSE Factory
         ‒   > openSUSE Tumbleweed


     •   https://build.opensuse.org/project/show/devel:kubic




27
     Development of openSUSE Kubic
     •   Github contributions:
         ‒   https://github.com/kubic-project




28
     Quality Assurance
     •   Test it!
     •   Try it!
     •   Perform it!
     •   Report bugs!
     •   Bugzilla:
         https://bugzilla.opensuse.org/buglist.cgi?component
         =Kubic&product=openSUSE%20Tumbleweed




29
       References
•    openSUSE Kubic:
     https://kubic.opensuse.org
•    https://www.projectatomic.io

•    Podman:
     https://jaxenter.de/docker/podman-container-daem
     onless-rootless-89349
•    Podman Usage:
     https://github.com/containers/libpod/blob/master/tr
     ansfer.md


30
Questions?
openSUSE Summit 2020
Dublin
May 27 – 28, 2020

https://events.opensuse.org
  Join our conference,
  contribute & have a lot of fun!
  events.opensuse.org



Thank you.
     Have a Lot of Fun, and Join Us At:
           www.opensuse.org

34
License
This slide deck is licensed under the Creative Commons Attribution-ShareAlike 4.0
International license. It can be shared and adapted for any purpose (even commercially) as
long as Attribution is given and any derivative work is distributed under the same license.

Details can be found at https://creativecommons.org/licenses/by-sa/4.0/




General Disclaimer
This document is not to be construed as a promise by any participating organisation to develop,
deliver, or market a product. It is not a commitment to deliver any material, code, or
functionality, and should not be relied upon in making purchasing decisions. openSUSE makes
no representations or warranties with respect to the contents of this document, and specifically
disclaims any express or implied warranties of merchantability or fitness for any particular
purpose. The development, release, and timing of features or functionality described for
openSUSE products remains at the sole discretion of openSUSE. Further, openSUSE reserves the
right to revise this document and to make changes to its content, at any time, without obligation
to notify any person or entity of such revisions or changes. All openSUSE marks referenced in
this presentation are trademarks or registered trademarks of SUSE LLC, in the United States and
other countries. All third-party trademarks are the property of their respective owners.




                                                                                                    Credits
                                                                                                    Template
                                                                                                    Richard Brown
                                                                                                    rbrown@opensuse.org

                                                                                                    Design & Inspiration
                                                                                                    openSUSE Design Team
                                                                                                    http://opensuse.github.io/branding-
                                                                                                    guidelines/