kops cli - добавление группы экземпляров программно заменяет группы экземпляров - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь использовать kops для создания новой группы экземпляров программно как часть настраиваемого оператора kubernetes.

Я последовал примеру здесь

https://github.com/kubernetes/kops/tree/master/examples/kops-api-example

Я могу успешно add включить группы экземпляров в кластер. Но я не могу их apply правильно. Оператор запускается, и из моего локального я вижу, что узлы dedicated были добавлены моим оператором. Но они не применяются (не создаются как настоящие группы автоматического масштабирования).

kops get instancegroup
NAME                    ROLE    MACHINETYPE     MIN     MAX     ZONES
master-us-east-1a       Master  t3.medium       1       1       us-east-1a
bla.dedicated           Node    t3.medium       1       1       us-east-1a,us-east-1b,us-east-1c
nodez                   Node    m5.xlarge       3       8       us-east-1a,us-east-1b,us-east-1c
foo.dedicated           Node    t3.medium       1       1       us-east-1a,us-east-1b,us-east-1c

Похоже, он пытается заменить все IG, и я получаю следующую ошибку, которая происходит в cloudup.ApplyClusterCmd

must configure at least one Master InstanceGroup

Может кто-нибудь указать мне, что я делаю не так?

func (snip Snip) {

    ctx := context.TODO()
    instanceGroupName := snip.Name + ".dedicated"
    var size int32 = 1

    registryBase, err := vfs.Context.BuildVfsPath("s3://example.kops")
    if err != nil {
        logger.Error(err, "Could not build vfs path")
        return reconcile.Result{}, err
    }

    clientset := vfsclientset.NewVFSClientset(registryBase)
    cluster, err := clientset.GetCluster(ctx, "example.com")
    if err != nil {
        logger.Error(err, "Could not get cluster")
        return reconcile.Result{}, err
    }

    igf := clientset.InstanceGroupsFor(cluster)
    _, err = igf.Get(ctx, instanceGroupName, metav1.GetOptions{})

    if err == nil {
        return reconcile.Result{}, nil
    }

    logger.Info("Creating new dedicated instance group")

    if !errors.IsNotFound(err) {
        logger.Error(err, "Could not get instance group")
        return reconcile.Result{}, err
    }

    igs, err := igf.List(ctx, metav1.ListOptions{})
    if err != nil {
        logger.Error(err, "Could not get instance groups for cluster ")
        return reconcile.Result{}, err
    }

    var newIg = &kops.InstanceGroup{
        ObjectMeta: metav1.ObjectMeta{
            Name: instanceGroupName,
        },
        Spec: kops.InstanceGroupSpec{
            MachineType: "t3.medium",
            MinSize:     &size,
            MaxSize:     &size,
            Role:        kops.InstanceGroupRoleNode,
            Taints: []string{
                "NoSchedule",
            },
            Subnets: []string{
                "us-east-1a",
                "us-east-1b",
                "us-east-1c",
            },
        },
    }

    _, err = igf.Create(ctx, newIg, metav1.CreateOptions{})
    if err != nil {
        logger.Error(err, "Could not create instance group")
        return reconcile.Result{}, err
    }

    var newIgs []*kops.InstanceGroup
    for _, item := range igs.Items {
        newIgs = append(newIgs, &item)
    }
    newIgs = append(newIgs, newIg)

    applyCmd := &cloudup.ApplyClusterCmd{
        Cluster:        cluster,
        Clientset:      clientset,
        TargetName:     cloudup.TargetDirect,
    }


    err = applyCmd.Run(ctx)
    if err != nil {
        logger.Error(err, "Could not update cluster")
        return reconcile.Result{}, err
    }

    logger.Info("Done creating dedicated instance group!")

    return reconcile.Result{}, nil



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...