Starting to learn #Proxmox. I thought I'd just replace the virt-manager on my desktop to get some hands on in an environment I only use for testing.
I failed.
The following I found out digging through documentation, forum and code:
- There needs to be a domain defined by the dns lookup for the local IP. Just a hostname alone doesn't seem to be sufficient.
hostname -fshould return a domain part. - The node name (
hostname) needs to be the same in various places- /etc/pve/.members (created from corosync.conf)
- rrd file in
/var/lib/rrdcached/db/pve2-node
- corosync.conf exists two times - in
/etc/pveand in/etc/corosync- which one is used under which circumstances I didn't find out, yet/etc/pve/corosync.confis generated from the sqlite database in/var/lib/pve-cluster/config.db
For debugging I looked at this code to understand where the Status: unknown pop-over on the host does come from.
I added some logging there which I could trigger from the cli using pvesh ls nodes.
The variables used there where filled like this in the not working state:
member=node1 get_rrd_key=pve2-node/PureBlackSoul status=unknown
The function get's the nodename $node shown on the gui from dns for the local IP I suspect. The $member hash seems to be filled with the data from /etc/pve/.members created by the corosync.service from - in my case - /etc/corosync/corosync.conf.
The value from $node is used to find the rrd data for the host.
The condition for online being:
There needs to be rrd-data that can be found by using the content of the $node argument to extract_node_stats and if %$members (/etc/pve/.members) is not empty it needs to contain a member named $node being marked online.
Short: if you host is Status: unknown dig into the following places:
- members hash:
/etc/corosync/corosync.conf,/etc/pve/corosync.conf,/var/lib/pve-cluster/config.db - dns hostname:
nslookup <local IP not being 127.0.0.0/8 or interface lo>, nameserver or/etc/hosts,hostname -ito find IPs,hostname -fto check whether there is a domain part - rrd files:
/var/lib/rrdcached/db/pve2-node/- filename should be present as the hostname without the domain