Karmaşık bir LabelSelector ile k8s işlerimi client-go ile nasıl listeleyebilirim?
Jan 28 2021
K8 işlerimi bu komut gibi client-go ile bir etiket seçici ile listelemek istiyorum :
$ kubectl get jobs -l 'hello-world in (London, China, NewYork)'
Client-go'nun kaynak koduna baktım, sonra şuna benzer bir kod yazdım:
func listJobs(cli *kubernetes.Clientset) (*batchv1.JobList, error) {
label := metav1.LabelSelector{
MatchExpressions: []metav1.LabelSelectorRequirement{
{
Key: "hello-world",
Operator: metav1.LabelSelectorOpIn,
Values: []string{
"London",
"China",
"NewYork",
},
},
},
}
fmt.Println(label.String())
return cli.BatchV1().Jobs("default").List(context.TODO(), metav1.ListOptions{
LabelSelector: label.String(),
})
}
ve sonra hatayı aldım:
&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]')
Nerede hata yaptım? İşlerimi karmaşık bir ifade olan etiket seçici ile nasıl listeleyebilirim?
Yanıtlar
3 Ullaakut Jan 28 2021 at 17:36
Kubernetes client-go
kitaplığını kullanarak, etiket seçicilerini aynen yaptığınız gibi yazabilirsiniz kubectl
.
Yazmak hello-world in (London, China, NewYork)
gayet iyi çalışmalı.
func listJobs(cli *kubernetes.Clientset) (*batchv1.JobList, error) {
return cli.BatchV1().Jobs("default").List(context.TODO(), metav1.ListOptions{
LabelSelector: "hello-world in (London, China, NewYork)",
})
}
hello-world in (London, China, NewYork)
Bununla birlikte, istediğiniz şey programlı bir nesneden dinamik olarak oluşturmaksa , bu başka bir sorudur ve burada StackOverflow'da zaten yanıtlanmıştır .
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı