agent-updater, sync-agent, tmc-auto-attach, vsphere-resource-retriever, intent-agent, cluster-health-extension, extension-manager and extension-updater.kubectl describe / kubelet)MONTH DD HH:MM:SS <Supervisor_UUID> kubelet[61986]: E1226 HH:MM:SS.856470 61986 pod_workers.go:1298] "Error syncing pod, skipping" err="failed to\"StartContainer\" for \"agentupdater-workload\" with ErrImagePull: \"failed to pull and unpack image \\\"<image_repository>/tmc-sm/tap-tmc-docker-virtual.usw1.packages.broadcom.com/extensions/agent-updater/agentupdater-workload@sha256:<digest>TMC-SM
Although a valid imagePullSecret (tmc-registry-pull) exists, Kubernetes Deployments are NOT referencing it in their pod template.
Therefore kubelet attempted anonymous pulls, resulting in ImagePullBackOff.
kubectl get secrets -n svc-tmc-c# tmc-registry-pull kubernetes.io/dockerconfigjsonkubectl -n svc-tmc-c# get pod <pod-name> -o jsonpath='{.spec.serviceAccountName}{"\n"}'
default, pods use the default ServiceAccount.kubectl -n svc-tmc-c# patch serviceaccount default \ -p '{"imagePullSecrets":[{"name":"tmc-registry-pull"}]}'kubectl -n svc-tmc-c# get sa default -o yaml | sed -n '/imagePullSecrets/,+5p'
imagePullSecrets: - name: tmc-registry-pullkubectl -n svc-tmc-c# get secret tmc-registry-pull \ -o jsonpath='{.data.\.dockerconfigjson}' | base64 -dcrictl pull \ --creds '<robot_user>:<password>' \ <registry>/tmc-sm/tap-tmc-docker-virtual.usw1.packages.broadcom.com/extensions/agent-updater/agentupdater-workload@sha256:<digest>
kubectl -n svc-tmc-c# patch deploy <deployment> \ --type='json' \ -p='[{"op":"add","path":"/spec/template/spec/imagePullSecrets","value":[{"name":"tmc-registry-pull"}]}]'
kubectl -n svc-tmc-c# scale deploy <deployment-name> --replicas=0 (Scale down)
kubectl -n svc-tmc-c# scale deploy <deployment-name> --replicas=2 (Scale up)kubectl get pods -n svc-tmc-c#All TMC-SM pods should now be Running.
The DaemonSet domain-local-ds is responsible for distributing Harbor registry certificates to the Supervisor control plane nodes.
The issue likely occurs because the existing nodes are replaced with new VMs during the Supervisor upgrade. If the domain-local-ds pods fail to execute correctly on these new nodes, the certificates are not populated.