HAOJX

HAOJX

杂施而不孙,则坏乱而不修 ; 独学而无友,则孤陋而寡闻

k8s中如何发送http请求给api-server
可以用client-go中的方法 其中每个资源都有个一个restclient方法 下面的body方法就是发送body内容给server 最后跟上do即可 伪代码 1informer.core().v1().pod().restclient().body().do()
clientset中patch操作:jsonpatch
JSONPatch的详细说明请参考文档:http://jsonpatch.com/。JSONPatch 主要有三种操作方式:add,replace,remove。以下会以代码示例说明这三种操作在Client-go对应的代码示例来说明怎样操作K8s 的资源。 使用JSONPatch,如果Patch中带有斜杠“/”和 (~)这两个字符,不能直接传入这两个字符,需要你输入的时候就人工转换下,/转换成~1,~转换成~0。以新增labels为例,如我要新增一个”test1/test2”:”test3”的labels,可以把要传入的数据修改为”test1~1test2”:”test3”即可。 a...
自定义controller如何重新拉起被删除的资源
当搞完controllerManager之后 builder.ControllerManagedBy(mgr) 就搞个监听 当删除的时候就调用删除函数 比如如下套路 1234567builder.ControllerManagedBy(mgr). For(&v1.DbConfig{}). Watches(&source.Kind{Type: &appsv1.Deployment{}}, handler.Funcs{DeleteFunc: dbConfigController.OnDel...
判断某个rs是否从属于某个deployment
例子 123456789101112func IsCurrentRsBydep(dep *appsv1.Deployment,rs *appsv1.ReplicaSet) bool{ if rs.ObjectMeta.Annotations["deployment.kubernetes.io/revision"]!=dep.ObjectMeta.Annotations["deployment.kubernetes.io/revision"]{ return false } for _, ref:= range rs.OwnerReferences ...
命令行中如何取到serviceaccout的token
1kubectl get secret $(kubectl get sa mysa -o json | jq -Mr '.secrets[0].name' ) -o json | jq -Mr '.data.token' | base64 -d 上面的命令中 12//取到sa的secrets的namekubectl get sa mysa -o json | jq -Mr '.secrets[0].name' 之后就可以访问了 1curl -H "Authorization: Bearer $mysatoken" --insecure <https://192.168.0....
如何配置token来访问api-server
先生成token并加入config文件中12345//先随机生成一个tokenhead -c 16 /dev/urandom | od -An -t x | tr -d ' '//把他加入到config里面去 其中shenyi是那个ua 也就是用户kubectl config set-credentials shenyi --token=4e2f6f4250a43ce94426b6264dad2609 修改api-server的启动参数1234567891011//先创建一个文件, 这个文件名称随便写sudo vi /etc/kubernetes/pki/token_auth//之后...
event的用法, 来显示资源的事件情况
先在type中定义一个event 1234type xxxx struct{ ... E record.EventRecorder //记录日志} 当资源变更了 可以使用他来记录 1r.E.Evnet(config,corev1.EventTypeNormal,reason:"初始化dep",message:"成功") 如何调用呢 123456789101112list:=corev1.EventList{}//这个client是脚手架里面那个client也就是"sigs.k8s.io/controller-runtime/pkg/clien...
通过labelSelector来选择pod操作
例子1 1234567891011//根据label批量删除pod labelPod := labels.SelectorFromSet(labels.Set(map[string]string{generalLabelKey: redisClusterName})) listPodOptions := metav1.ListOptions{ LabelSelector: labelPod.String(), } err = kubeClient.CoreV1().Pods(redisClusterNamesp...
初始化控制器controller-runtime中mgr的例子
example 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051package k8sconfigimport ( v1 "github.com/haojianxun/dbcore/pkg/apis/dbconfig/v1" "github.com/haojianxun/dbcore/pkg/controllers" "github.com/haojianxun/dbcore/pkg/dashboard" appsv1 "k8s.io/api/apps...
dynamic-Client的使用方法
第一步先创建一个dynamic client 123456789101112131415161718192021222324252627282930313233package kubeConfigimport ( "k8s.io/client-go/dynamic" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" "log")func InitConfig() *rest.Config { config, err := clientcmd.Build...
avatar
HAOJX
It is the first step that costs