If we are using Kubernetes do we need to implement HA on both the infrastructure and application level?
Your application requirements really do influence your options here, maybe add more detail about the app because this subject is very much about your application architecture too.

The application state is fixed, pod's are rebuilt as per the spec or source container that defines them and the replication sets take care of the deployment so I'd say the application from a Kubernetes perspective is already highly available by design and the reason why the documentation contains little coverage if any with regard to application level HA.

It's worth noting too that Kubernetes High Availability with kubeadm is still in its experimental stage and your clusters need to be running Kubernetes version 1.12 or later.

Google's Kubernetes Engine for instance; offers 'Regional Clusters' and these are spread over many zones in a region. This certainly increases your cluster availability. More here in GKE regions

The official word on the current state of Kubernetes HA cluster options are well documented here. https://kubernetes.io/docs/setup/independent/ha-topology/