To do that, you should use a proper CNI plugin, like multus: read this.
In a Nutshell:
Multus creates a bridge on top of the k8s external interface, than it will attach this bridge into your container, moreover, it will attach a second interface for Inter-Cluster communication using ClusterIP, and you could also use the default CoreDNS services for DNS queries between pods.
You create a NetworkAttachmentDefinition to configure multus, and than you provide a config like so:
config: '{
"cniVersion": "0.3.0",
"type": "macvlan",
"master": "eth0",
"mode": "bridge",
"ipam": {
"type": "host-local",
"subnet": "192.168.1.0/24",
"rangeStart": "192.168.1.200",
"rangeEnd": "192.168.1.216",
"routes": [
{ "dst": "0.0.0.0/0" }
],
"gateway": "192.168.1.1"
}
}'
Multus will assign a IP Address dynamically to your coturn pod out of a pool based on a pre-configured range. if for some reason the pod containing the "coturn server" container will get killed(assuming you have configured a proper liveliness Probes), it will immediately be rescheduled to a different node using the SAME bridged external interface, with the same network settings.
Using "hostNetwork: true" is just a bad idea, it will expose the ports on every k8s node, and it makes networking very much complicated, also you will not be able to communicate with the coturn service using ClusterIP if any other service needs it or use k8s DNS services.