The file is overwritten by systemd-resolved.service, among other files:
systemd-resolved synthesizes DNS resource records (RRs) for the
following cases:
The local, configured hostname is resolved to all locally configured IP addresses ordered by their scope, or — if none are configured — the
IPv4 address 127.0.0.2 (which is on the local loopback) and the IPv6
address ::1 (which is the local host).
The hostnames "localhost" and "localhost.localdomain" (as well as any hostname ending in ".localhost" or ".localhost.localdomain") are
resolved to the IP addresses 127.0.0.1 and ::1.
The hostname "_gateway" is resolved to all current default routing gateway addresses, ordered by their metric. This assigns a stable
hostname to the current gateway, useful for referencing it
independently of the current network configuration state.
The mappings defined in /etc/hosts are resolved to their configured addresses and back, but they will not affect lookups for non-address
types (like MX).
According to documentation for /etc/systemd/resolved.conf and the related post, you can edit /etc/systemd/resolved.conf to have specific domain resolved by your local DNS sever (on Ubuntu you have dnsmasq, example), or add ReadEtcHosts= to let the service actually use the file.
You can also disable the service. See How to disable systemd-resolved in Ubuntu?
According to a Fedora forum thread the issue could also relate to Network Manager service. For Ubuntu servers, cloud-init could also be the cause of the issue according to the bug report on launchpad