Expose Kubelet configuration
* Adds a new configuration document to manage Kubelet configuration * Exposes arbitrary configuration * Specifically exposes the pause image Change-Id: I8cc268f984c8a1fe44b18d1a910406b8153f93a2
This commit is contained in:
parent
39270cb6cc
commit
9246fb519a
@ -14,6 +14,7 @@ Details about Promenade-specific documents can be found here:
|
||||
docker
|
||||
genesis
|
||||
host-system
|
||||
kubelet
|
||||
kubernetes-network
|
||||
kubernetes-node
|
||||
|
||||
|
35
docs/source/configuration/kubelet.rst
Normal file
35
docs/source/configuration/kubelet.rst
Normal file
@ -0,0 +1,35 @@
|
||||
Kubelet
|
||||
=======
|
||||
|
||||
Configuration for the Kubernetes worker daemon (the Kubelet). This document
|
||||
contains two keys: ``arguments`` and ``images``. The ``arguments`` are
|
||||
appended directly to the ``kubelet`` command line, along with arguments that
|
||||
are controlled by Promenade more directly.
|
||||
|
||||
The only image that is configurable is for the ``pause`` container.
|
||||
|
||||
|
||||
Sample Document
|
||||
---------------
|
||||
|
||||
Here is a sample document:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
schema: promenade/Kubelet/v1
|
||||
metadata:
|
||||
schema: metadata/Document/v1
|
||||
name: kubelet
|
||||
layeringDefinition:
|
||||
abstract: false
|
||||
layer: site
|
||||
data:
|
||||
arguments:
|
||||
- --cni-bin-dir=/opt/cni/bin
|
||||
- --cni-conf-dir=/etc/cni/net.d
|
||||
- --eviction-max-pod-grace-period=-1
|
||||
- --network-plugin=cni
|
||||
- --node-status-update-frequency=5s
|
||||
- --v=5
|
||||
images:
|
||||
pause: gcr.io/google_containers/pause-amd64:3.0
|
19
examples/basic/Kubelet.yaml
Normal file
19
examples/basic/Kubelet.yaml
Normal file
@ -0,0 +1,19 @@
|
||||
---
|
||||
schema: promenade/Kubelet/v1
|
||||
metadata:
|
||||
schema: metadata/Document/v1
|
||||
name: kubelet
|
||||
layeringDefinition:
|
||||
abstract: false
|
||||
layer: site
|
||||
data:
|
||||
arguments:
|
||||
- --cni-bin-dir=/opt/cni/bin
|
||||
- --cni-conf-dir=/etc/cni/net.d
|
||||
- --eviction-max-pod-grace-period=-1
|
||||
- --network-plugin=cni
|
||||
- --node-status-update-frequency=5s
|
||||
- --v=5
|
||||
images:
|
||||
pause: gcr.io/google_containers/pause-amd64:3.0
|
||||
...
|
19
examples/complete/Kubelet.yaml
Normal file
19
examples/complete/Kubelet.yaml
Normal file
@ -0,0 +1,19 @@
|
||||
---
|
||||
schema: promenade/Kubelet/v1
|
||||
metadata:
|
||||
schema: metadata/Document/v1
|
||||
name: kubelet
|
||||
layeringDefinition:
|
||||
abstract: false
|
||||
layer: site
|
||||
data:
|
||||
arguments:
|
||||
- --cni-bin-dir=/opt/cni/bin
|
||||
- --cni-conf-dir=/etc/cni/net.d
|
||||
- --eviction-max-pod-grace-period=-1
|
||||
- --network-plugin=cni
|
||||
- --node-status-update-frequency=5s
|
||||
- --v=5
|
||||
images:
|
||||
pause: gcr.io/google_containers/pause-amd64:3.0
|
||||
...
|
32
promenade/schemas/Kubelet.yaml
Normal file
32
promenade/schemas/Kubelet.yaml
Normal file
@ -0,0 +1,32 @@
|
||||
---
|
||||
schema: deckhand/DataSchema/v1
|
||||
metadata:
|
||||
schema: metadata/Control/v1
|
||||
name: promenade/Kubelet/v1
|
||||
labels:
|
||||
application: promenade
|
||||
data:
|
||||
$schema: http://json-schema.org/schema#
|
||||
type: object
|
||||
definitions:
|
||||
image:
|
||||
type: string
|
||||
# XXX add regex
|
||||
|
||||
properties:
|
||||
images:
|
||||
type: object
|
||||
properties:
|
||||
pause:
|
||||
$ref: '#/definitions/image'
|
||||
required:
|
||||
- pause
|
||||
additionalProperties: false
|
||||
arguments:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
required:
|
||||
- images
|
||||
additionalProperties: false
|
||||
...
|
@ -6,26 +6,26 @@ After=network-online.target
|
||||
[Service]
|
||||
ExecStart=/opt/kubernetes/bin/kubelet \
|
||||
--allow-privileged=true \
|
||||
--cluster-domain={{ config['KubernetesNetwork:dns.cluster_domain'] }} \
|
||||
--client-ca-file=/etc/kubernetes/pki/cluster-ca.pem \
|
||||
--cluster-dns={{ config['KubernetesNetwork:dns.service_ip'] }} \
|
||||
--cni-bin-dir=/opt/cni/bin \
|
||||
--cni-conf-dir=/etc/cni/net.d \
|
||||
--eviction-max-pod-grace-period -1 \
|
||||
--node-status-update-frequency 5s \
|
||||
--kubeconfig=/etc/kubernetes/kubeconfig \
|
||||
--cluster-domain={{ config['KubernetesNetwork:dns.cluster_domain'] }} \
|
||||
--hostname-override={{ config.get_first('Genesis:hostname', 'KubernetesNode:hostname') }} \
|
||||
--network-plugin=cni \
|
||||
--kubeconfig=/etc/kubernetes/kubeconfig \
|
||||
--node-ip={{ config.get_first('Genesis:ip', 'KubernetesNode:ip') }} \
|
||||
--pod-manifest-path=/etc/kubernetes/manifests \
|
||||
--tls-cert-file=/etc/kubernetes/pki/kubelet.pem \
|
||||
--tls-private-key-file=/etc/kubernetes/pki/kubelet-key.pem \
|
||||
{%- if config['Genesis:labels.static'] is defined %}
|
||||
--node-labels={{ config['Genesis:labels.static'] | join(',') }} \
|
||||
{%- elif config['KubernetesNode:labels.static'] is defined %}
|
||||
--node-labels={{ config['KubernetesNode:labels.static'] | join(',') }} \
|
||||
{%- endif %}
|
||||
--pod-manifest-path=/etc/kubernetes/manifests \
|
||||
--client-ca-file=/etc/kubernetes/pki/cluster-ca.pem \
|
||||
--tls-cert-file=/etc/kubernetes/pki/kubelet.pem \
|
||||
--tls-private-key-file=/etc/kubernetes/pki/kubelet-key.pem \
|
||||
--v=5
|
||||
{%- if config['Kubelet:arguments'] is defined %}
|
||||
{%- for argument in config['Kubelet:arguments'] %}
|
||||
- {{ argument }} \
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
--pod-infra-container-image={{ config['Kubelet:images.pause'] }}
|
||||
|
||||
Restart=always
|
||||
StartLimitInterval=0
|
||||
|
@ -98,4 +98,22 @@ data:
|
||||
required:
|
||||
docker: docker-engine=1.13.1-0~ubuntu-xenial
|
||||
socat: socat=1.7.3.1-1
|
||||
---
|
||||
schema: promenade/Kubelet/v1
|
||||
metadata:
|
||||
schema: metadata/Document/v1
|
||||
name: kubelet
|
||||
layeringDefinition:
|
||||
abstract: false
|
||||
layer: site
|
||||
data:
|
||||
arguments:
|
||||
- --cni-bin-dir=/opt/cni/bin
|
||||
- --cni-conf-dir=/etc/cni/net.d
|
||||
- --eviction-max-pod-grace-period=-1
|
||||
- --network-plugin=cni
|
||||
- --node-status-update-frequency=5s
|
||||
- --v=5
|
||||
images:
|
||||
pause: gcr.io/google_containers/pause-amd64:3.0
|
||||
...
|
||||
|
Loading…
x
Reference in New Issue
Block a user