En son Go istemcisi ile bunu nasıl yapacağınız.
Eğer K8S kümesinin içinde iseniz:
package main
import (
"fmt"
"k8s.io/client-go/1.5/kubernetes"
"k8s.io/client-go/1.5/pkg/api/v1"
"k8s.io/client-go/1.5/rest"
)
func main() {
config, err = rest.InClusterConfig()
if err != nil {
return nil, err
}
c, err := kubernetes.NewForConfig(config)
if err != nil {
return nil, err
}
// Get Pod by name
pod, err := c.Pods(v1.NamespaceDefault).Get("my-pod")
if err != nil {
fmt.Println(err)
return
}
// Print its creation time
fmt.Println(pod.GetCreationTimestamp())
}
Ve küme dışında iseniz:
package main
import (
"fmt"
"k8s.io/client-go/1.5/kubernetes"
"k8s.io/client-go/1.5/pkg/api/v1"
"k8s.io/client-go/1.5/tools/clientcmd"
)
func main() {
config, err := clientcmd.BuildConfigFromFlags("", <kube-config-path>)
if err != nil {
return nil, err
}
c, err := kubernetes.NewForConfig(config)
if err != nil {
return nil, err
}
// Get Pod by name
pod, err := c.Pods(v1.NamespaceDefault).Get("my-pod")
if err != nil {
fmt.Println(err)
return
}
// Print its creation time
fmt.Println(pod.GetCreationTimestamp())
}
Ben blog post bu konuyu daha ayrıntılı girmiş. Kubernetes ile
Kodum hattı "Kapsülde c.Pods", err çözmek mümkün değildir: (v1.NamespaceDefault) = c.Pods .Get ("benim-pod") Herhangi bir fikrin neden? – Chetan
@Chetan bu kod, kubernetes-1.4'e kadar destekli "go-client" kitaplığının 1.5 sürümünü kullanır. Bir GKE kümesine bağlanıyorsanız, kubernetes 1.5.x'e bağlanmak için muhtemelen 2.0 sürümüne ihtiyacınız vardır. Uyumluluk matrisini kontrol edin: https://github.com/kubernetes/client-go#compatibility-matrix – itorres
Kubernetes 1.5'tir ve go-client kütüphanesi master/HEAD'dir. Aynı zamanda go-client 2.0 ile de aynı şeyi denedim. Ayrıca etkilenmiş olabilecek bir yakalama, "go get k8s.io/client-go/..." yapamamıştım, bu yüzden istemciyi elle yükledim ve çalışma alanına yerleştirdim. Bu yüzden bağımlılıkların çözülmediğini düşünüyorum. Eğer öyleyse, bunları nasıl çözeceğine dair bir fikrin var mı? – Chetan