As per step:
kubectl apply -f https://storage.googleapis.com/kubernetes-the-hard-way/coredns-1.7.0.yaml
we can see that nodeSelector is beta.kubernetes.io/os while by following previous steps nodeSelector is kubernetes.io/os what can be checked with kubectl get nodes --show-labels.
Due to this mismatch pods cannot enter running state and an error is visible: 0/3 nodes are available: 3 node(s) didn't match node selector.
This at least apply for version 1.19.0 kubernetes.
As per step: kubectl apply -f https://storage.googleapis.com/kubernetes-the-hard-way/coredns-1.7.0.yaml we can see that nodeSelector is beta.kubernetes.io/os while by following previous steps nodeSelector is kubernetes.io/os what can be checked with kubectl get nodes --show-labels. Due to this mismatch pods cannot enter running state and an error is visible: 0/3 nodes are available: 3 node(s) didn't match node selector. This at least apply for version 1.19.0 kubernetes.