A declarative framework for resilient Kubernetes deployment.
Go to file
Phil Sphicas de9f8415d7 kube-apiserver: disable http2
There are several kubernetes bugs [0,1,2] involving connection problems
that seem related to the Go net/http2 library, where the stream state
and connection state can get out of sync. This can manifest as a kubelet
issue, where the node status gets stuck in a NotReady state, but can
also happen elsewhere.

In newer versions of the Go libraries some issues are fixed [3,4], but
the fixes are not present in k8s 1.18.

This change disables http2 in kube-apiserver and webhook-apiserver. This
should be sufficient to avoid the majority of the issues, as disabling
on one side of the connection is enough, and apiserver is generally
either the client or the server.

0: https://github.com/kubernetes/kubernetes/issues/87615
1: https://github.com/kubernetes/kubernetes/issues/80313
2: https://github.com/kubernetes/client-go/issues/374
3: https://github.com/golang/go/issues/40423
4: https://github.com/golang/go/issues/40201

Change-Id: Id693a7201acffccbc4b3db8f4e4b96290fd50288
2020-10-23 21:28:51 +00:00
.github Update Airship vulnerability link 2020-05-18 21:27:18 +00:00
charts kube-apiserver: disable http2 2020-10-23 21:28:51 +00:00
doc Update pip package versions in preparation of pip 20.3 2020-09-28 16:34:04 -04:00
etc/promenade Minor testing-related cleanup 2018-01-02 10:14:10 -06:00
examples Uplift HTK for etcd backup/restore framework 2020-09-30 14:04:02 +00:00
images/promenade Upgrade LibYAML version in container builds 2020-09-24 04:27:29 +00:00
promenade Remove additional /hyperkube reference 2020-09-29 23:27:27 +00:00
tests Accelerate YAML operations with LibYAML 2020-09-24 04:27:29 +00:00
tools Uplift HTK for etcd backup/restore framework 2020-09-30 14:04:02 +00:00
.dockerignore Remove tests from images 2018-08-02 15:37:18 -05:00
.gitignore Upgrade mismatch dependencies for pegleg 2019-09-20 15:23:21 +00:00
.gitreview OpenDev Migration Patch 2019-04-19 19:52:18 +00:00
.readthedocs.yaml Fix: Promenade Exceptions docs rendering on RTD 2019-08-27 22:57:15 +02:00
.zuul.yaml fix - pep8 and image build gates 2020-09-22 08:42:40 -05:00
LICENSE Initial commit 2017-02-14 11:13:39 -08:00
Makefile Upgrade k8s from v1.17.3 to v1.18.6 2020-08-19 15:56:45 +00:00
README.md Update the README.md File 2018-07-30 15:52:23 -05:00
entrypoint.sh [uwsgi] remove extraneous argument 2020-04-23 22:28:39 +00:00
requirements-direct.txt Update setuptools to resolve dependency conflict 2020-10-15 17:57:25 -04:00
requirements-frozen.txt Update pip package versions in preparation of pip 20.3 2020-09-28 16:34:04 -04:00
requirements.txt Pull requirements-direct into requirements 2019-08-26 13:52:04 +00:00
setup.cfg Fix outdated external references 2019-09-06 13:11:17 -05:00
setup.py Enable using PBR for package library 2018-10-25 17:04:29 -05:00
test-requirements.txt Update pip package versions in preparation of pip 20.3 2020-09-28 16:34:04 -04:00
tox.ini Adjust plugin cri parameters 2020-03-26 05:02:37 +00:00

README.md

Promenade

Promenade is a tool for bootstrapping a resilient Kubernetes cluster and managing its life-cycle via Helm charts.

Documentation can be found here.

Roadmap

The detailed Roadmap can be viewed on the OpenStack StoryBoard.

  • Cluster bootstrapping
    • Initial Genesis process results in a single node Kubernetes cluster with Under-cloud components deployed using Armada.
    • Joining sufficient master nodes results in a resilient Kubernetes cluster.
    • Destroy Genesis node after bootstrapping and re-provision as a normal node to ensure consistency.
  • Life-cycle management
    • Decommissioning of nodes.
    • Updating Kubernetes version.

Getting Started

To get started, see getting started.

Configuration is documented here.

Bugs

Bugs are tracked in OpenStack StoryBoard.