前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【k8s】curl命令修改node status里的conditions字段

【k8s】curl命令修改node status里的conditions字段

原创
作者头像
williamji
发布2022-09-08 21:32:23
1.8K0
发布2022-09-08 21:32:23
举报
文章被收录于专栏:腾讯云产品腾讯云产品

简介

使用kubectl edit命令可以更新node字段,但是无法更新nodestatus字段。本文实践几种修改k8s节点status里面的字段的方法,比如修改conditions里面的字段。

实践

nodestatus的API

基于client-go编码修改

可以写代码使用client-go中的nodestatus更新来更新节点的status字段。支持patchStatus和updateStatus

  • 测试代码如下,测试样例是把第0个condition的Status字段由False改为True。
代码语言:javascript
复制
package main

import (
	"context"
	"log"
	"os"

	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/tools/clientcmd"
)

func main(){
	kubeconfigFile := "/Users/williamji/Downloads/cls-jf1v5w0p-config"
	nodeName := "10.111.0.14"

	config, err := clientcmd.BuildConfigFromFlags("", kubeconfigFile)
	if err != nil {
		log.Printf("failed to config using kubeconfig: %s with error: %v", kubeconfigFile, err)
		os.Exit(1)
	}

	k8sClient, err := kubernetes.NewForConfig(config)
	if err != nil {
		log.Printf("failed to get k8s client with error: %v", err)
		os.Exit(1)
	}
	getNode, err := k8sClient.CoreV1().Nodes().Get(context.Background(), nodeName, metav1.GetOptions{})
	if err != nil {
		log.Printf("failed to get node: %s with error: %v", nodeName, err)
		os.Exit(1)
	}

	// modify one condition Status False => True
	if getNode.Status.Conditions[0].Status == "False"{
		log.Printf("0 condition Status is False, now change it to True")
		getNode.Status.Conditions[0].Status = "True"
	}
	modifyNode, err := k8sClient.CoreV1().Nodes().UpdateStatus(context.Background(), getNode, metav1.UpdateOptions{})
	if err != nil {
		log.Printf("failed to update nodestatus: %s with error: %v", nodeName, err)
		os.Exit(1)
	}
	log.Printf("0 condition Status is %s", modifyNode.Status.Conditions[0].Status)
}

  • 测试结果如下。表示condition修改成功
代码语言:javascript
复制
2022/09/08 17:18:39 0 condition Status is False, now change it to True
2022/09/08 17:18:39 0 condition Status is True

使用curl命令修改

  • 用户名密码
代码语言:javascript
复制
curl -u User:Paasword  -k  -H "Content-Type: application/json-patch+json" -X PATCH  https://<host>:<port>/api/v1/nodes/<nodename>/status   --data '[{ "op": "replace", "path": "/status/conditions/0/status", "value": "True"}]'

cred= echo "User:Password" | base64
curl -H "Authorization: Basic $cred"  -k  -H "Content-Type: application/json-patch+json" -X PATCH  https://<host>:<port>/api/v1/nodes/<nodename>/status   --data '[{ "op": "replace", "path": "/status/conditions/0/status", "value": "True"}]'

测试命令

测试结果

  • token
代码语言:javascript
复制
curl -H "Authorization: Bearer <ACCESS_TOKEN>"  -k  -H "Content-Type: application/json-patch+json" -X PATCH  https://<host>:<port>/api/v1/nodes/<nodename>/status   --data '[{ "op": "replace", "path": "/status/conditions/0/status", "value": "True"}]'

  • 证书秘钥
代码语言:javascript
复制
提前准备好证书秘钥写好文件
curl --cert <证书文件全路径> --key <秘钥文件全路径> -k  -H "Content-Type: application/json-patch+json" -X PATCH  https://<host>:<port>/api/v1/nodes/<nodename>/status   --data '[{ "op": "replace", "path": "/status/conditions/0/status", "value": "True"}]'

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 实践
    • nodestatus的API
      • 基于client-go编码修改
        • 使用curl命令修改
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
        http://www.vxiaotou.com