in pkg/skoop/collector/podcollector/collector.go [79:130]
func NewCollector(podNamespace, podName, runtimeEndpoint string) (collector.Collector, error) {
pc := &podCollector{podNamespace: podNamespace, podName: podName, runtimeEndpoint: runtimeEndpoint}
socket := os.Getenv("RUNTIME_SOCK")
if runtimeEndpoint != "" {
socket = runtimeEndpoint
}
if socket == "" {
socket = "unix:///var/run/dockershim.sock"
_, err := os.Stat("/var/run/dockershim.sock")
if err != nil {
if os.IsNotExist(err) {
containerdSockets := []string{
"unix:///run/containerd/containerd.sock",
"unix:///run/k3s/containerd/containerd.sock",
}
for _, containerdAddr := range containerdSockets {
if _, err = os.Stat(strings.TrimPrefix(containerdAddr, "unix://")); err == nil {
socket = containerdAddr
break
}
}
if socket == "" {
return nil, fmt.Errorf("cannot found comportable endpoint address for cri-api, please specify cri address by --collector-cri-address")
}
} else {
return nil, err
}
} else {
pc.dockerCli, err = client.NewClientWithOpts(client.WithVersion("1.25"))
if err != nil {
return nil, err
}
}
}
conn, err := grpc.Dial(socket, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithBlock())
if err != nil {
return nil, err
}
pc.runtimeCli = pb.NewRuntimeServiceClient(conn)
// negotiate cri api version
_, err = pc.runtimeCli.Version(context.TODO(), &pb.VersionRequest{})
if status.Code(err) == codes.Unimplemented {
pc.runtimeCli = nil
pc.runtimeCliV1Alpha2 = pbv1alpha2.NewRuntimeServiceClient(conn)
} else if err != nil {
return nil, err
}
return pc, nil
}