我尝试通过client-go使用 LabelSelector 删除我的作业:
cli.BatchV1().Jobs("default").Delete(context.TODO(), name, metav1.DeleteOptions{})
Run Code Online (Sandbox Code Playgroud)
作业已成功删除,但其 pod 却没有删除!
如果我通过 删除这个作业kubectl,它创建的 pod 也会被自动删除。
我如何简单地删除带有 pod 的作业client-go?
我想通过client-go使用标签选择器列出我的 k8s 作业,如下命令:
$ kubectl get jobs -l 'hello-world in (London, China, NewYork)'
Run Code Online (Sandbox Code Playgroud)
我查看了client-go的源代码,然后我写了一些这样的代码:
$ kubectl get jobs -l 'hello-world in (London, China, NewYork)'
Run Code Online (Sandbox Code Playgroud)
然后我得到了错误:
&LabelSelector{MatchLabels:map[string]string{},MatchExpressions:[]LabelSelectorRequirement{LabelSelectorRequirement{Key:hello-world,Operator:In,Values:[London China NewYork],},},}
2021/01/28 17:58:07 unable to parse requirement: invalid label key "&LabelSelector{MatchLabels:map[string]string{}": name part must consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]')
Run Code Online (Sandbox Code Playgroud)
我哪里做错了?如何使用复杂表达式的标签选择器列出我的职位?
我需要在Web服务器的处理程序中自定义HTTP状态,但是我发现golang似乎不支持完全自定义的HTTP响应。例如:
w.WriteHeader(999)
Run Code Online (Sandbox Code Playgroud)
这里是curl结果:
$ curl -vk -i localhost:9898/hello
* Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 9898 (#0)
> GET /hello HTTP/1.1
> Host: localhost:9898
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 999 status code 999
HTTP/1.1 999 status code 999
< Date: Wed, 19 Jun 2019 02:01:09 GMT
Date: Wed, 19 Jun 2019 02:01:09 GMT
< Content-Length: 0
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)
将status code在结果似乎不能被修改..但是,我想确定自己的地位,像Bad Request: xxx。
有什么好主意吗?非常感谢!