kubernetes/kops · error
method metal.Cloud::DetachInstance not implemented
Error message
method metal.Cloud::DetachInstance not implemented
What it means
Stub-method error: metal.Cloud.DetachInstance is unimplemented, so detaching a machine (e.g. for detached instance groups) is unsupported on bare metal. Fires when a detach operation is requested against the metal provider.
Source
Thrown at upup/pkg/fi/cloudup/metal/cloud.go:72
// DeleteInstance deletes a cloud instance.
func (c *Cloud) DeleteInstance(instance *cloudinstances.CloudInstance) error {
return fmt.Errorf("method metal.Cloud::DeleteInstance not implemented")
}
// // DeregisterInstance drains a cloud instance and loadbalancers.
func (c *Cloud) DeregisterInstance(instance *cloudinstances.CloudInstance) error {
return fmt.Errorf("method metal.Cloud::DeregisterInstance not implemented")
}
// DeleteGroup deletes the cloud resources that make up a CloudInstanceGroup, including the instances.
func (c *Cloud) DeleteGroup(group *cloudinstances.CloudInstanceGroup) error {
return fmt.Errorf("method metal.Cloud::DeleteGroup not implemented")
}
// DetachInstance causes a cloud instance to no longer be counted against the group's size limits.
func (c *Cloud) DetachInstance(instance *cloudinstances.CloudInstance) error {
return fmt.Errorf("method metal.Cloud::DetachInstance not implemented")
}
// GetCloudGroups returns a map of cloud instances that back a kops cluster.
// Detached instances must be returned in the NeedUpdate slice.
func (c *Cloud) GetCloudGroups(cluster *kops.Cluster, instancegroups []*kops.InstanceGroup, warnUnmatched bool, nodes []v1.Node) (map[string]*cloudinstances.CloudInstanceGroup, error) {
groups := make(map[string]*cloudinstances.CloudInstanceGroup)
for _, ig := range instancegroups {
cloudInstanceGroup := &cloudinstances.CloudInstanceGroup{
InstanceGroup: ig,
}
groups[ig.ObjectMeta.Name] = cloudInstanceGroup
for _, node := range nodes {
isControlPlaneNode := false
for k := range node.Labels {
if k == "node-role.kubernetes.io/control-plane" {
isControlPlaneNode = true
}
View on GitHub (pinned to 4c8573c808)
Solutions
- Avoid detached-instance-group flows with the metal provider
- Manage machine detachment manually outside kOps
- Implement DetachInstance if metal supports it later
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at upup/pkg/fi/cloudup/metal/cloud.go:72 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/0930b1ae43bf9c80.
Report an issue: GitHub.