0

A Kubespray installation in openstack environment was done. Everything fully functional, no problems.

My question is how to remove the integration on a running cluster, machine by machine (not by reinstalling the cluster via kubespray) We have issues with stability of our openstack provider and this translates into kubelet service failing every now and then.

We moved persistence away from cinder already, and we never used any LB integration. There are no dependencies left, all we need is to "disable" the cloud-config.

Unfortunately, when naively removing cloud related values from kubelet.env, the kubelet service fails to start with "node not found" errors.

1 Answers1

0

The OpenStack cloud provider uses the instance name (as determined from OpenStack metadata) as the name of the Kubernetes Node object. Note that the instance name must be a valid Kubernetes Node name in order for the kubelet to successfully register its Node object.

In kubelet documentation you can read:

--hostname-override string

If non-empty, will use this string as identification instead of the actual hostname. If --cloud-provider is set, the cloud provider determines the name of the node (consult cloud provider documentation to determine if and how the hostname is used).

That would mean that when "disabling" cloud-config you need to set hostname-override option by youself.

In documentation about cloud providers you can read:

Node Name

The OpenStack cloud provider uses the instance name (as determined from OpenStack metadata) as the name of the Kubernetes Node object. Note that the instance name must be a valid Kubernetes Node name in order for the kubelet to successfully register its Node object.

So you can find name for you node using OpenStack metadata.

Let me know if it solves your problem.

Matt
  • 528
  • 3
  • 7