请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

更新逻辑是不是有问题?

入下图红框中的内容,如果用我们自己转换的service.Spec替换从k8s中查询出的serviceK8s.Spec,我感觉是有问题的。serviceK8s中的spec.clusterIPs和spec.ipFamilies字段的值,就都没有了。我这执行这个更新逻辑的时候是报错的(我postman中只是修改了nodePort的端口)。

图片描述

我自己的代码逻辑

	// 提交数据到k8s
	serviceApi := global.KubeConfigSet.CoreV1().Services(service.Namespace)
	serviceK8s, err := serviceApi.Get(ctx, service.Name, metav1.GetOptions{})
	fmt.Printf("%+v\n", serviceK8s)
	//_, err = serviceApi.Get(ctx, serviceReq.Name, metav1.GetOptions{})
	if err == nil {
		// 查到了这个service,进行更新操作
		serviceK8s.Spec = service.Spec // 通过查询 得到的在k8s中的service信息回比我们自己转换的service会多一些信息,比如uid等。
		_, err := serviceApi.Update(ctx, serviceK8s, metav1.UpdateOptions{})
		if err != nil {
			response.FailWithDetail(ctx, "更新service失败", err.Error())
			return
		}
	} else {
		// 没有查到这个servie,进行新增操作
		_, err := serviceApi.Create(ctx, &service, metav1.CreateOptions{})
		if err != nil {
			response.FailWithDetail(ctx, "创建service失败", err.Error())
			return
		}
	}

报错信息:

{
	"code": 1,
	"data": "Service \"svc-web-30082\" is invalid: [spec.clusterIPs[0]: Invalid value: []string(nil): primary clusterIP can not be unset, spec.ipFamilies[0]: Invalid value: []core.IPFamily(nil): primary ipFamily can not be unset]",
	"msg": "更新service失败"
}

正在回答

1回答

HI 同学你好,你在更新的时候传递了clusterIPS参数吗?

0 回复 有任何疑惑可以回复我~
  • 提问者 404_ #1
    老师,不好意思,我没明白您什么意思?更新的时候传递了clusterIPS参数 是什么意思?是指通过postman 发送json串时要传递clusterIPS吗?
    回复 有任何疑惑可以回复我~ 2023-06-21 14:50:42
  • 提问者 404_ #2
    {
        "name": "svc-web-30082",
        "namespace": "test",
        "labels": [
            {
                "key":"key-1",
                "value":"value-1"
            }
        ],
        "type": "NodePort",
        "selector": [
            {
                "key": "app",
                "value": "web"
            }
        ],
        "ports": [
            {
                "name": "http",
                "port": 80,
                "targetPort": 80,
                "nodePort": 30084
            }
        ]
    }
    这是我的json串。更新的话,我用你的代码克隆下来跑 这个逻辑,也是同样这个报错。
    回复 有任何疑惑可以回复我~ 2023-06-21 15:11:07
  • 暮闲 回复 提问者 404_ #3
    同学你好,我测试了代码发现没有问题耶,你那里方便qq私我一下吗,我远程一下你的环境看看
    回复 有任何疑惑可以回复我~ 2023-06-23 15:41:51
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信