When running "./konvoy up --upgrade" to upgrade a Konvoy cluster, you may encounter an error that there are unsupported CoreDNS plugins.
This is a known issue in certain Kubernetes version jumps where certain CoreDNS plugins will be deprecated or replaced:
https://github.com/kubernetes/kubernetes/issues/82889
In many cases, CoreDNS is able to resolve this automatically, but the Kubernetes upgrade needs to be completed successfully first.
This requires a workaround of using the "--ignore-preflight-errors=CoreDNSUnsupportedPlugins" with kubeadm.
However, in a Konvoy upgrade, this flag needs to be passed differently.
First, run "./konvoy up --upgrade" again. Do NOT pass in a "-y" flag. When you reach the confirmation prompt asking for you to enter y or n, leave it there; do not answer.
Open a second terminal window while this prompt is still open. Run "docker ps" to find the container ID from the running Konvoy container:
Use the "container ID" from the previous step to exec into this running container:
When you reach a shell prompt inside the container, find a file called "/opt/konvoy/ansible/playbooks/roles/kubeadm-upgrade-control-plane/templates/kubeadm-init-config.yaml.tmpl" and open it for editing with "vi":
Find a line that contains "kubeletExtraArgs:" and add a new line above it.
In this new line, add the following with the same indentation as the "kubeletExtraArgs:" line:
This part of the file should look like this screenshot:

Save and exit vi, then ctrl D to exit the container shell.
Now, edit your cluster.yaml to use this new template line. Find the spec.kubernetes section of the ClusterConfiguration block and add the following:
Once you save this change to the cluster.yaml file, go back to your first terminal where the prompt is waiting for y/n input and confirm with y.
The upgrade should now ignore CoreDNS preflight errors and CoreDNS will be able to resolve its plugin compatibility issues automatically once it completes.
Please be aware that these instructions are to address a very specific CoreDNS error in a Konvoy upgrade. Editing a running Konvoy container is an unsupported operation and can cause problems if done in production.
If you have questions about this, please feel free to open a support ticket:
https://support.d2iq.com/s/article/Opening-a-New-Support-Case
This is a known issue in certain Kubernetes version jumps where certain CoreDNS plugins will be deprecated or replaced:
https://github.com/kubernetes/kubernetes/issues/82889
In many cases, CoreDNS is able to resolve this automatically, but the Kubernetes upgrade needs to be completed successfully first.
This requires a workaround of using the "--ignore-preflight-errors=CoreDNSUnsupportedPlugins" with kubeadm.
However, in a Konvoy upgrade, this flag needs to be passed differently.
First, run "./konvoy up --upgrade" again. Do NOT pass in a "-y" flag. When you reach the confirmation prompt asking for you to enter y or n, leave it there; do not answer.
Open a second terminal window while this prompt is still open. Run "docker ps" to find the container ID from the running Konvoy container:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e3105aa277d3 mesosphere/konvoy:v1.7.3 "konvoy up --upgrade" 3 minutes ago Up 2 minutes heuristic_shtern
Use the "container ID" from the previous step to exec into this running container:
$ docker exec -it e3105aa277d3 /bin/bash
When you reach a shell prompt inside the container, find a file called "/opt/konvoy/ansible/playbooks/roles/kubeadm-upgrade-control-plane/templates/kubeadm-init-config.yaml.tmpl" and open it for editing with "vi":
Find a line that contains "kubeletExtraArgs:" and add a new line above it.
In this new line, add the following with the same indentation as the "kubeletExtraArgs:" line:
ignorePreflightErrors: [{{ kubeadm.ignore_preflight_errors }}]
This part of the file should look like this screenshot:
Save and exit vi, then ctrl D to exit the container shell.
Now, edit your cluster.yaml to use this new template line. Find the spec.kubernetes section of the ClusterConfiguration block and add the following:
spec: kubernetes: preflightChecks: errorsToIgnore: - CoreDNSUnsupportedPlugins
Once you save this change to the cluster.yaml file, go back to your first terminal where the prompt is waiting for y/n input and confirm with y.
The upgrade should now ignore CoreDNS preflight errors and CoreDNS will be able to resolve its plugin compatibility issues automatically once it completes.
Please be aware that these instructions are to address a very specific CoreDNS error in a Konvoy upgrade. Editing a running Konvoy container is an unsupported operation and can cause problems if done in production.
If you have questions about this, please feel free to open a support ticket:
https://support.d2iq.com/s/article/Opening-a-New-Support-Case