mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-01 15:58:37 +00:00
Delete cluster client for a Cluster deletion
When federation controller manager checks cluster status, it will delete the offline cluster from clusterSet, but do not delete the corresponding restclient from the map clusterKubeClientMap for the offline cluster. This patch can fix it.
This commit is contained in:
parent
5e29e1ee05
commit
d5798fac5c
@ -85,14 +85,22 @@ func NewclusterController(federationClient federationclientset.Interface, cluste
|
|||||||
// delete the corresponding restclient from the map clusterKubeClientMap
|
// delete the corresponding restclient from the map clusterKubeClientMap
|
||||||
func (cc *ClusterController) delFromClusterSet(obj interface{}) {
|
func (cc *ClusterController) delFromClusterSet(obj interface{}) {
|
||||||
cluster := obj.(*federationv1beta1.Cluster)
|
cluster := obj.(*federationv1beta1.Cluster)
|
||||||
cc.knownClusterSet.Delete(cluster.Name)
|
cc.delFromClusterSetByName(cluster.Name)
|
||||||
delete(cc.clusterKubeClientMap, cluster.Name)
|
}
|
||||||
|
|
||||||
|
// delFromClusterSetByName delete a cluster from clusterSet by name and
|
||||||
|
// delete the corresponding restclient from the map clusterKubeClientMap
|
||||||
|
func (cc *ClusterController) delFromClusterSetByName(clusterName string) {
|
||||||
|
glog.V(1).Infof("ClusterController observed a cluster deletion: %v", clusterName)
|
||||||
|
cc.knownClusterSet.Delete(clusterName)
|
||||||
|
delete(cc.clusterKubeClientMap, clusterName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// addToClusterSet insert the new cluster to clusterSet and create a corresponding
|
// addToClusterSet insert the new cluster to clusterSet and create a corresponding
|
||||||
// restclient to map clusterKubeClientMap
|
// restclient to map clusterKubeClientMap
|
||||||
func (cc *ClusterController) addToClusterSet(obj interface{}) {
|
func (cc *ClusterController) addToClusterSet(obj interface{}) {
|
||||||
cluster := obj.(*federationv1beta1.Cluster)
|
cluster := obj.(*federationv1beta1.Cluster)
|
||||||
|
glog.V(1).Infof("ClusterController observed a new cluster: %v", cluster.Name)
|
||||||
cc.knownClusterSet.Insert(cluster.Name)
|
cc.knownClusterSet.Insert(cluster.Name)
|
||||||
// create the restclient of cluster
|
// create the restclient of cluster
|
||||||
restClient, err := NewClusterClientSet(cluster)
|
restClient, err := NewClusterClientSet(cluster)
|
||||||
@ -115,9 +123,9 @@ func (cc *ClusterController) Run() {
|
|||||||
}, cc.clusterMonitorPeriod, wait.NeverStop)
|
}, cc.clusterMonitorPeriod, wait.NeverStop)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cc *ClusterController) GetClusterStatus(cluster *federationv1beta1.Cluster) (*federationv1beta1.ClusterStatus, error) {
|
func (cc *ClusterController) GetClusterClient(cluster *federationv1beta1.Cluster) (*ClusterClient, error) {
|
||||||
// just get the status of cluster, by requesting the restapi "/healthz"
|
|
||||||
clusterClient, found := cc.clusterKubeClientMap[cluster.Name]
|
clusterClient, found := cc.clusterKubeClientMap[cluster.Name]
|
||||||
|
client := &clusterClient
|
||||||
if !found {
|
if !found {
|
||||||
glog.Infof("It's a new cluster, a cluster client will be created")
|
glog.Infof("It's a new cluster, a cluster client will be created")
|
||||||
client, err := NewClusterClientSet(cluster)
|
client, err := NewClusterClientSet(cluster)
|
||||||
@ -125,8 +133,15 @@ func (cc *ClusterController) GetClusterStatus(cluster *federationv1beta1.Cluster
|
|||||||
glog.Errorf("Failed to create cluster client, err: %v", err)
|
glog.Errorf("Failed to create cluster client, err: %v", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
clusterClient = *client
|
}
|
||||||
cc.clusterKubeClientMap[cluster.Name] = clusterClient
|
return client, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ClusterController) GetClusterStatus(cluster *federationv1beta1.Cluster) (*federationv1beta1.ClusterStatus, error) {
|
||||||
|
// just get the status of cluster, by requesting the restapi "/healthz"
|
||||||
|
clusterClient, err := cc.GetClusterClient(cluster)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
clusterStatus := clusterClient.GetClusterHealthStatus()
|
clusterStatus := clusterClient.GetClusterHealthStatus()
|
||||||
return clusterStatus, nil
|
return clusterStatus, nil
|
||||||
@ -140,8 +155,7 @@ func (cc *ClusterController) UpdateClusterStatus() error {
|
|||||||
}
|
}
|
||||||
for _, cluster := range clusters.Items {
|
for _, cluster := range clusters.Items {
|
||||||
if !cc.knownClusterSet.Has(cluster.Name) {
|
if !cc.knownClusterSet.Has(cluster.Name) {
|
||||||
glog.V(1).Infof("ClusterController observed a new cluster: %#v", cluster)
|
cc.addToClusterSet(&cluster)
|
||||||
cc.knownClusterSet.Insert(cluster.Name)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,8 +167,7 @@ func (cc *ClusterController) UpdateClusterStatus() error {
|
|||||||
}
|
}
|
||||||
deleted := cc.knownClusterSet.Difference(observedSet)
|
deleted := cc.knownClusterSet.Difference(observedSet)
|
||||||
for clusterName := range deleted {
|
for clusterName := range deleted {
|
||||||
glog.V(1).Infof("ClusterController observed a Cluster deletion: %v", clusterName)
|
cc.delFromClusterSetByName(clusterName)
|
||||||
cc.knownClusterSet.Delete(clusterName)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for _, cluster := range clusters.Items {
|
for _, cluster := range clusters.Items {
|
||||||
|
Loading…
Reference in New Issue
Block a user