kubernetes/kops · error
method metal.Cloud::DeregisterInstance not implemented
Error message
method metal.Cloud::DeregisterInstance not implemented
What it means
Stub-method error: metal.Cloud.DeregisterInstance is unimplemented, so draining/deregistering an instance from load balancers cannot be done via the metal provider. Fires when instance deregistration is requested on bare metal.
Source
Thrown at upup/pkg/fi/cloudup/metal/cloud.go:62
return kops.CloudProviderMetal
}
func (c *Cloud) DNS() (dnsprovider.Interface, error) {
return nil, fmt.Errorf("method metal.Cloud::DNS not implemented")
}
// FindVPCInfo looks up the specified VPC by id, returning info if found, otherwise (nil, nil).
func (c *Cloud) FindVPCInfo(id string) (*fi.VPCInfo, error) {
return nil, fmt.Errorf("method metal.Cloud::FindVPCInfo not implemented")
}
// 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{View on GitHub (pinned to 4c8573c808)
Solutions
- Handle drain/deregistration manually or via external tooling for metal clusters
- Avoid flows that call DeregisterInstance on the metal provider
- Implement DeregisterInstance to support managed draining
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at upup/pkg/fi/cloudup/metal/cloud.go:62 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/cda9b685e7affc90.
Report an issue: GitHub.