From 99a25fed196b6267e55769e7344693f500a366cf Mon Sep 17 00:00:00 2001 From: Konstantinos Tsakalozos Date: Wed, 22 Nov 2017 09:45:23 +0200 Subject: [PATCH 1/2] Lowercase hostnames when used as node names in k8s --- .../layers/kubernetes-worker/reactive/kubernetes_worker.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py b/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py index d43f06768a8..5b875c4d25f 100644 --- a/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py +++ b/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py @@ -157,7 +157,7 @@ def shutdown(): ''' try: if os.path.isfile(kubeconfig_path): - kubectl('delete', 'node', gethostname()) + kubectl('delete', 'node', gethostname().lower()) except CalledProcessError: hookenv.log('Failed to unregister node.') service_stop('snap.kubelet.daemon') @@ -906,7 +906,8 @@ class ApplyNodeLabelFailed(Exception): def _apply_node_label(label, delete=False, overwrite=False): ''' Invoke kubectl to apply node label changes ''' - hostname = gethostname() + # k8s lowercases hostnames and uses them as node names + hostname = gethostname().lower() # TODO: Make this part of the kubectl calls instead of a special string cmd_base = 'kubectl --kubeconfig={0} label node {1} {2}' From a6ee55c4a7d936f3fd9a6cac612dbe1bff389a80 Mon Sep 17 00:00:00 2001 From: Konstantinos Tsakalozos Date: Wed, 22 Nov 2017 16:55:39 +0200 Subject: [PATCH 2/2] Lowecasing the hostname on the known nodes entry --- .../layers/kubernetes-worker/reactive/kubernetes_worker.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py b/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py index 5b875c4d25f..4e233cb8991 100644 --- a/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py +++ b/cluster/juju/layers/kubernetes-worker/reactive/kubernetes_worker.py @@ -844,14 +844,14 @@ def request_kubelet_and_proxy_credentials(kube_control): # The kube-cotrol interface is created to support RBAC. # At this point we might as well do the right thing and return the hostname # even if it will only be used when we enable RBAC - nodeuser = 'system:node:{}'.format(gethostname()) + nodeuser = 'system:node:{}'.format(gethostname().lower()) kube_control.set_auth_request(nodeuser) @when('kube-control.connected') def catch_change_in_creds(kube_control): """Request a service restart in case credential updates were detected.""" - nodeuser = 'system:node:{}'.format(gethostname()) + nodeuser = 'system:node:{}'.format(gethostname().lower()) creds = kube_control.get_auth_credentials(nodeuser) if creds \ and data_changed('kube-control.creds', creds) \