A lightweight solution for configuration of baremetal nodes.
Go to file
Phil Sphicas 918da6d055 Avoid rbd unmap failure; use HostToContainer mountPropagation
The divingbell pods use a hostPath volume for the root filesystem.
Because this mount includes /var/lib/kubelet, the pod holds a reference
to every volume mounted by every pod on the same host.

The most visible case where this causes a problem is the termination of
a pod that uses a ceph-backed PVCs. When kubelet tries to unmap the rbd
device, it is unable to do so, manifesting in the kubelet logs as:
    rbd: unmap failed: (16) Device or resource busy

This change sets the mountPropagation to HostToContainer for the rootfs
volume, so that the divingbell pods will not prevent kubelet from
releasing these devices.

https://kubernetes.io/docs/concepts/storage/volumes/#mount-propagation

Change-Id: I6e91fb9b9d7cbe852c5e6dc8b7224d6085175590
2020-11-24 23:57:54 +00:00
.github Add SECURITY.md 2020-02-20 17:07:16 -06:00
divingbell Avoid rbd unmap failure; use HostToContainer mountPropagation 2020-11-24 23:57:54 +00:00
doc Move Tiller version to 2.16.9 2020-09-16 17:04:32 +00:00
tools Update divingbell to use Ubuntu 18.04 2020-09-23 08:57:02 -05:00
.gitignore Enhance docs rendering; update documentation 2019-03-18 22:46:50 +01:00
.gitreview OpenDev Migration Patch 2019-04-19 19:52:20 +00:00
.zuul.yaml Fix problems with test script 2020-09-14 16:39:20 +00:00
LICENSE Initial commit 2017-10-17 13:25:54 -05:00
Makefile Create Makefile target to install Helm binary 2018-11-26 16:34:45 -06:00
README.rst Enhance docs rendering; update documentation 2019-03-18 22:46:50 +01:00
TODO Initial commit. 2017-11-16 05:59:36 +00:00
Vagrantfile Update divingbell to use Ubuntu 18.04 2020-09-23 08:57:02 -05:00
setup.cfg Exec: Use nsenter to enter all host namespaces when running exec 2019-03-11 19:32:48 -07:00
setup.py docs(tox): Add tox target to generate docs 2018-05-22 14:26:20 -05:00
test-requirements.txt docs(tox): Add tox target to generate docs 2018-05-22 14:26:20 -05:00
tox.ini Set up publishing of docs 2018-10-04 16:38:36 +00:00

README.rst

Divingbell

Documentation Status

Introduction

Divingbell is a lightweight solution for:

1. Bare metal configuration management for a few very targeted use cases via the following modules:

  • apparmor
  • ethtool
  • exec (run arbitrary scripts)
  • system limits
  • mounts
  • permissions (perm)
  • sysctl values
  • basic user account management (uamlite)
  1. Bare metal package manager orchestration using apt module

What problems does it solve?

The needs identified for Divingbell were:

  1. To plug gaps in day 1 tools (e.g., Drydock) for node configuration
  2. To provide a day 2 solution for managing these configurations going forward
  3. [Future] To provide a day 2 solution for system level host patching

Documentation

Find more documentation for Divingbell on Read the Docs.

Further Reading

Airship.