Currently using 1.1.5.12.-gke you should have deployed at least:
kube-dns
deployment
kube-dns-autoscaler
deployment
According to the docs kube-dns-autoscaler:
kube-dns scales to serve the DNS demands of the cluster. This scaling is controlled by the kube-dns-autoscaler which is deployed by default in all GKE clusters. kube-dns-autoscaler adjusts the number of replicas in the kube-dns deployment based on the number of nodes and cores in the cluster.
Preferred way of tuning kube-dns in the cluster should by:
linear: '{"coresPerReplica":256,"min":1,"nodesPerReplica":16, "preventSinglePointFailure": true}'
where:
"preventSinglePointFailure": true controller ensures at least 2 replicas if there are more than one node.
Using this this parameters for current replicas it will be calculated as:
replicas = max( ceil( cores × 1/coresPerReplica ) , ceil( nodes × 1/nodesPerReplica ) )
kubectl scale --replicas=0 deployment/kube-dns-autoscaler --namespace=kube-system
kubectl scale --replicas=1 deployment/kube-dns --namespace=kube-system
Currently the problem you have experienced arises from default kube-dns
deployment configuration:
toleration:
- key: CriticalAddonsOnly
operator: Exists
- key: components.gke.io/gke-managed-components
operator: Exists
This configuration prevent possibility to schedule pods on the nodes with your custom taints.
I would suggest to verify - why your pods can't be scheduled in the cluster in default-pool (probably due to lack of resources in the default-pool) and I would consider resizing this default-pool.
Another solution is to deploy custom kube-dns or core-dns
configuration.