kubernetes/kops · error
upgrade is not for use with imported clusters.)
Error message
upgrade is not for use with imported clusters.)
What it means
Guard in RunUpgradeCluster: the cluster carries the kops.k8s.io/management=imported annotation, meaning it was imported rather than created by kOps. `kops upgrade` only manages kOps-created clusters and refuses to modify imported configuration. (Note the stray ')' in the message.)
Source
Thrown at cmd/kops/upgrade_cluster.go:117
func RunUpgradeCluster(ctx context.Context, f *util.Factory, out io.Writer, options *UpgradeClusterOptions) error {
cluster, err := GetCluster(ctx, f, options.ClusterName)
if err != nil {
return err
}
clientset, err := f.KopsClient()
if err != nil {
return err
}
instanceGroups, err := commands.ReadAllInstanceGroups(ctx, clientset, cluster)
if err != nil {
return err
}
if cluster.ObjectMeta.Annotations[kopsapi.AnnotationNameManagement] == kopsapi.AnnotationValueManagementImported {
return fmt.Errorf("upgrade is not for use with imported clusters.)")
}
channelLocation := options.Channel
if channelLocation == "" {
channelLocation = cluster.Spec.Channel
}
if channelLocation == "" {
channelLocation = kopsapi.DefaultChannel
}
var actions []*upgradeAction
if channelLocation != cluster.Spec.Channel {
actions = append(actions, &upgradeAction{
Item: "Cluster",
Property: "Channel",
Old: cluster.Spec.Channel,
New: channelLocation,
apply: func() {View on GitHub (pinned to 4c8573c808)
Solutions
- Manage upgrades of imported clusters with the upstream tooling
- Remove the imported annotation only if the cluster is actually kOps-managed
- Use kops edit cluster for manual spec changes instead
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at cmd/kops/upgrade_cluster.go:117 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/a72d14dbb4de39c5.
Report an issue: GitHub.