diff --git a/tencentcloud/resource_tc_kubernetes_cluster.go b/tencentcloud/resource_tc_kubernetes_cluster.go index 0fae1c1596..e484f6681d 100644 --- a/tencentcloud/resource_tc_kubernetes_cluster.go +++ b/tencentcloud/resource_tc_kubernetes_cluster.go @@ -2180,6 +2180,12 @@ func resourceTencentCloudTkeClusterCreate(d *schema.ResourceData, meta interface return err } + err = service.CheckOneOfClusterNodeReady(ctx, d.Id(), clusterInternet || clusterIntranet) + + if err != nil { + return err + } + //intranet if clusterIntranet { err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { diff --git a/tencentcloud/resource_tc_kubernetes_cluster_endpoint.go b/tencentcloud/resource_tc_kubernetes_cluster_endpoint.go index 85ce168d56..d1c720f6fb 100644 --- a/tencentcloud/resource_tc_kubernetes_cluster_endpoint.go +++ b/tencentcloud/resource_tc_kubernetes_cluster_endpoint.go @@ -215,6 +215,10 @@ func resourceTencentCloudTkeClusterEndpointCreate(d *schema.ResourceData, meta i return fmt.Errorf("`cluster_intranet_subnet_id` can only set when `cluster_intranet` is true") } + if err := service.CheckOneOfClusterNodeReady(ctx, id, true); err != nil { + return err + } + // Create Intranet(Private) Network if clusterIntranet { err := tencentCloudClusterIntranetSwitch(ctx, &service, id, intranetSubnetId, true) diff --git a/tencentcloud/resource_tc_kubernetes_node_pool.go b/tencentcloud/resource_tc_kubernetes_node_pool.go index aea45c0b6c..f624292c10 100644 --- a/tencentcloud/resource_tc_kubernetes_node_pool.go +++ b/tencentcloud/resource_tc_kubernetes_node_pool.go @@ -1064,21 +1064,6 @@ func resourceKubernetesNodePoolRead(d *schema.ResourceData, meta interface{}) er } } - // asg node unschedulable - clusterAsg, err := service.DescribeClusterAsGroupsByGroupId(ctx, clusterId, *nodePool.AutoscalingGroupId) - - if err != nil { - return err - } - - unschedulable := 0 - if clusterAsg != nil { - if clusterAsg.IsUnschedulable != nil && *clusterAsg.IsUnschedulable { - unschedulable = 1 - } - } - _ = d.Set("unschedulable", unschedulable) - // Relative scaling group status asg, hasAsg, err := asService.DescribeAutoScalingGroupById(ctx, *nodePool.AutoscalingGroupId) if err != nil { diff --git a/tencentcloud/service_tencentcloud_tke.go b/tencentcloud/service_tencentcloud_tke.go index effb6dea65..0c8649f30d 100644 --- a/tencentcloud/service_tencentcloud_tke.go +++ b/tencentcloud/service_tencentcloud_tke.go @@ -660,6 +660,29 @@ func (me *TkeService) CreateClusterInstances(ctx context.Context, return } +func (me *TkeService) CheckOneOfClusterNodeReady(ctx context.Context, clusterId string, mustHaveWorkers bool) error { + return resource.Retry(readRetryTimeout*5, func() *resource.RetryError { + _, workers, err := me.DescribeClusterInstances(ctx, clusterId) + if err != nil { + return retryError(err) + } + if len(workers) == 0 { + if mustHaveWorkers { + return resource.RetryableError(fmt.Errorf("waiting for workers created")) + } + return nil + } + + for i := range workers { + worker := workers[i] + if worker.InstanceState == "running" { + return nil + } + } + return resource.RetryableError(fmt.Errorf("cluster %s waiting for one of the workers ready", clusterId)) + }) +} + /* if cluster is creating, return error:TencentCloudSDKError] Code=InternalError.ClusterState */