mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 05:27:21 +00:00
Merge pull request #59931 from zetaab/shutdoos
Automatic merge from submit-queue (batch tested with PRs 60189, 59542, 59931, 60621, 60353). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. do not delete node in openstack, if those still exist in cloudprovider **What this PR does / why we need it**: Deleting nodes in kubernetes cluster causes problems. It will lead to situations like labels and taints are missing from nodes when node will return online. **Which issue(s) this PR fixes**: **Special notes for your reviewer**: ```release-note Nodes are not deleted from kubernetes anymore if node is shutdown in Openstack. ```
This commit is contained in:
commit
aeec2953d1
@ -415,13 +415,10 @@ func foreachServer(client *gophercloud.ServiceClient, opts servers.ListOptsBuild
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func getServerByName(client *gophercloud.ServiceClient, name types.NodeName, showOnlyActive bool) (*servers.Server, error) {
|
func getServerByName(client *gophercloud.ServiceClient, name types.NodeName) (*servers.Server, error) {
|
||||||
opts := servers.ListOpts{
|
opts := servers.ListOpts{
|
||||||
Name: fmt.Sprintf("^%s$", regexp.QuoteMeta(mapNodeNameToServerName(name))),
|
Name: fmt.Sprintf("^%s$", regexp.QuoteMeta(mapNodeNameToServerName(name))),
|
||||||
}
|
}
|
||||||
if showOnlyActive {
|
|
||||||
opts.Status = "ACTIVE"
|
|
||||||
}
|
|
||||||
|
|
||||||
pager := servers.List(client, opts)
|
pager := servers.List(client, opts)
|
||||||
|
|
||||||
@ -504,7 +501,7 @@ func nodeAddresses(srv *servers.Server) ([]v1.NodeAddress, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getAddressesByName(client *gophercloud.ServiceClient, name types.NodeName) ([]v1.NodeAddress, error) {
|
func getAddressesByName(client *gophercloud.ServiceClient, name types.NodeName) ([]v1.NodeAddress, error) {
|
||||||
srv, err := getServerByName(client, name, true)
|
srv, err := getServerByName(client, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -666,7 +663,7 @@ func (os *OpenStack) GetZoneByNodeName(ctx context.Context, nodeName types.NodeN
|
|||||||
return cloudprovider.Zone{}, err
|
return cloudprovider.Zone{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
srv, err := getServerByName(compute, nodeName, true)
|
srv, err := getServerByName(compute, nodeName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == ErrNotFound {
|
if err == ErrNotFound {
|
||||||
return cloudprovider.Zone{}, cloudprovider.InstanceNotFound
|
return cloudprovider.Zone{}, cloudprovider.InstanceNotFound
|
||||||
|
@ -107,7 +107,7 @@ func (i *Instances) NodeAddressesByProviderID(ctx context.Context, providerID st
|
|||||||
|
|
||||||
// ExternalID returns the cloud provider ID of the specified instance (deprecated).
|
// ExternalID returns the cloud provider ID of the specified instance (deprecated).
|
||||||
func (i *Instances) ExternalID(ctx context.Context, name types.NodeName) (string, error) {
|
func (i *Instances) ExternalID(ctx context.Context, name types.NodeName) (string, error) {
|
||||||
srv, err := getServerByName(i.compute, name, true)
|
srv, err := getServerByName(i.compute, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == ErrNotFound {
|
if err == ErrNotFound {
|
||||||
return "", cloudprovider.InstanceNotFound
|
return "", cloudprovider.InstanceNotFound
|
||||||
@ -155,7 +155,7 @@ func (os *OpenStack) InstanceID() (string, error) {
|
|||||||
|
|
||||||
// InstanceID returns the cloud provider ID of the specified instance.
|
// InstanceID returns the cloud provider ID of the specified instance.
|
||||||
func (i *Instances) InstanceID(ctx context.Context, name types.NodeName) (string, error) {
|
func (i *Instances) InstanceID(ctx context.Context, name types.NodeName) (string, error) {
|
||||||
srv, err := getServerByName(i.compute, name, true)
|
srv, err := getServerByName(i.compute, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == ErrNotFound {
|
if err == ErrNotFound {
|
||||||
return "", cloudprovider.InstanceNotFound
|
return "", cloudprovider.InstanceNotFound
|
||||||
@ -188,7 +188,7 @@ func (i *Instances) InstanceTypeByProviderID(ctx context.Context, providerID str
|
|||||||
|
|
||||||
// InstanceType returns the type of the specified instance.
|
// InstanceType returns the type of the specified instance.
|
||||||
func (i *Instances) InstanceType(ctx context.Context, name types.NodeName) (string, error) {
|
func (i *Instances) InstanceType(ctx context.Context, name types.NodeName) (string, error) {
|
||||||
srv, err := getServerByName(i.compute, name, true)
|
srv, err := getServerByName(i.compute, name)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
@ -552,7 +552,7 @@ func getNodeSecurityGroupIDForLB(compute *gophercloud.ServiceClient, nodes []*v1
|
|||||||
|
|
||||||
for _, node := range nodes {
|
for _, node := range nodes {
|
||||||
nodeName := types.NodeName(node.Name)
|
nodeName := types.NodeName(node.Name)
|
||||||
srv, err := getServerByName(compute, nodeName, true)
|
srv, err := getServerByName(compute, nodeName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nodeSecurityGroupIDs.List(), err
|
return nodeSecurityGroupIDs.List(), err
|
||||||
}
|
}
|
||||||
|
@ -297,7 +297,7 @@ func (r *Routes) DeleteRoute(ctx context.Context, clusterName string, route *clo
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getPortIDByIP(compute *gophercloud.ServiceClient, targetNode types.NodeName, ipAddress string) (string, error) {
|
func getPortIDByIP(compute *gophercloud.ServiceClient, targetNode types.NodeName, ipAddress string) (string, error) {
|
||||||
srv, err := getServerByName(compute, targetNode, true)
|
srv, err := getServerByName(compute, targetNode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
@ -622,7 +622,7 @@ func (os *OpenStack) DiskIsAttachedByName(nodeName types.NodeName, volumeID stri
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return false, "", err
|
return false, "", err
|
||||||
}
|
}
|
||||||
srv, err := getServerByName(cClient, nodeName, false)
|
srv, err := getServerByName(cClient, nodeName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == ErrNotFound {
|
if err == ErrNotFound {
|
||||||
// instance not found anymore in cloudprovider, assume that cinder is detached
|
// instance not found anymore in cloudprovider, assume that cinder is detached
|
||||||
@ -659,7 +659,7 @@ func (os *OpenStack) DisksAreAttachedByName(nodeName types.NodeName, volumeIDs [
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return attached, err
|
return attached, err
|
||||||
}
|
}
|
||||||
srv, err := getServerByName(cClient, nodeName, false)
|
srv, err := getServerByName(cClient, nodeName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == ErrNotFound {
|
if err == ErrNotFound {
|
||||||
// instance not found anymore, mark all volumes as detached
|
// instance not found anymore, mark all volumes as detached
|
||||||
|
Loading…
Reference in New Issue
Block a user