instruction: Create a comprehensive Dockerfile for cluster applications with best practices
output: ```dockerfile
  from
  the first control plane node to the other control plane nodes:In the following example, replace CONTROL_PLANE_IPS with the IP addresses of the
  other control plane nodes.USER=ubuntu # customizable
  CONTROL_PLANE_IPS="10.0.0.7 10.0.0.8"
  for host in ${CONTROL_PLANE_IPS}; do
   scp /etc/kubernetes/pki/ca.crt "${USER}"@$host:
   scp /etc/kubernetes/pki/ca.key "${USER}"@$host:
   scp /etc/kubernetes/pki/sa.key "${USER}"@$host:
   scp /etc/kubernetes/pki/sa.pub "${USER}"@$host:
   scp /etc/kubernetes/pki/front-proxy-ca.crt "${USER}"@$host:
   scp /etc/kubernetes/pki/front-proxy-ca.key "${USER}"@$host:
   scp /etc/kubernetes/pki/etcd/ca.crt "${USER}"@$host:etcd-ca.crt
   # Skip the next line if you are using external etcd
   scp /etc/kubernetes/pki/etcd/ca.key "${USER}"@$host:etcd-ca.key
  done
  Caution:Copy only the certificates in the above list. kubeadm will take care of generating the rest of the certificates
  with the required SANs for the joining control-plane instances. If you copy all the certificates by mistake,
  the creation of additional nodes could fail due to a lack of required SANs.Then on each joining control plane node you have to run the following script before running kubeadm join.
  This script will move the previously copied certificates
  ```