Kubernetes - Container Knowing about Node it's scheduled to

4/7/2020

I'm trying to figure out a way that a container or pod can know some specific information about the node that it's being scheduled to. For example, my container might have to know if a GPU is present or not on that node in order to decide whether or not to enable GPU acceleration. Another example would be knowing the $DISPLAY variable of the node to know what X server to output graphics to.

What's the best approach to this?

Thanks

Update: If I could get the node-name from within the container, I could do a lookup against an external service to get the information I need. Is there a way to do this?

-- user2896438
google-kubernetes-engine
kubernetes
kubernetes-container
kubernetes-pod

2 Answers

4/7/2020

Taints and Tolerations were designed for that.

-- FL3SH
Source: StackOverflow

4/7/2020

OP Here. I've found a somewhat decent way of accomplishing this.

On setting the node up with my cluster i can install a script to source environment variables to a file then volume-mount that file into the container.

Alterntively I could also store config for each ndoe in a separate service and inject the nodeName to lookup properties of a specific node as follows:

https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#use-pod-fields-as-values-for-environment-variables

Then based on the name, my container can look-up via service or config map a mapping of nodeName to whatever information I need form the node. All I have to do is keep this service/config map up-to-date with the node's information.

-- user2896438
Source: StackOverflow