I ran into the same problem yesterday. Apparently Kubernetes Dashboard versions from 7.0.0 and above use Kong, a cloud-native API gateway that manages distributed applications. The new implementation of the Dashboard consists of a few microservices and Kong proxies the incoming requests to these services. That means you should expose the port of the kubernetes-dashboard-kong-proxy Service, which by default is 8443, like so:
apiVersion: v1
kind: Service
metadata:
name: kubernetes-dashboard-kong-nodeport
namespace: kubernetes-dashboard
spec:
ports:
- name: kong-proxy-tls
nodePort: 32001 # Your desired port
port: 443
protocol: TCP
targetPort: 8443
selector:
app.kubernetes.io/component: app
app.kubernetes.io/instance: kubernetes-dashboard
app.kubernetes.io/name: kong
type: NodePort