I have upgraded istio from 1.6.0 to 1.6.8. Everything went without problems.
Verification with kubectl get pods -n default -l istio.io/rev={revision}
returns that all pods are running by using 1.6.8, but istioctl version
returns
client version: 1.6.8
istiod version: 1.6.8
pilot version: 1.6.0
data plane version: 1.6.8 (12 proxies)
Which indicates that pilot is still running on old version. I'm not able to find any information how to upgrade it without reinstalling whole istio.
There is clean 1.6.0 install
istioctl version
client version: 1.6.8
control plane version: 1.6.0
data plane version: 1.6.0 (3 proxies)
There is 1.6.8 after canary install
istioctl version
client version: 1.6.8
pilot version: 1.6.0
istiod version: 1.6.8
data plane version: 1.6.8 (2 proxies), 1.6.0 (7 proxies)
Why does this happen? Because there are 2 versions working, original and canary.
As mentioned here
It was separated from control plane version into 2 parts: pilot version and istiod version.
Btw, it is istio-ingressgateway which uses 1.6.0 in data plane version. It seems intended to update ingress-gateway
I'm not able to find any information how to upgrade it without reinstalling whole istio.
If I understand correct you're not able to upgrade it with this version, the main issue here is that there is no option to delete old control plane, that's already covered in the 1.7 version.
The same thing happened in this tutorial
Workaround for this would be to install version higher than 1.7, then if you check documentation there are steps to Uninstall old control plane and Uninstall canary control plane.
Additional resources: