从pod annotations获取信息挂载device new

This commit is contained in:
funnyfunny
2023-08-11 17:55:56 +08:00
parent 4edffada77
commit dc53d4301e

View File

@@ -17,10 +17,12 @@ package main
import ( import (
"context" "context"
"crypto/tls"
"encoding/json" "encoding/json"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"log" "log"
"net/http"
"os" "os"
"os/exec" "os/exec"
"path" "path"
@@ -577,6 +579,10 @@ func modifySpecFile(path string) error {
return fmt.Errorf("failed to add device to env: %v", err) return fmt.Errorf("failed to add device to env: %v", err)
} }
if err = getPodDevice(); err != nil {
return fmt.Errorf("failed to get pod device: %v", err)
}
addEnvToDevicePlugin(&spec) addEnvToDevicePlugin(&spec)
jsonOutput, err := json.Marshal(spec) jsonOutput, err := json.Marshal(spec)
@@ -650,3 +656,53 @@ func main() {
log.Fatal(err) log.Fatal(err)
} }
} }
func getPodDevice() error {
certFile := "/etc/kubernetes/pki/apiserver-kubelet-client.crt"
keyFile := "/etc/kubernetes/pki/apiserver-kubelet-client.key"
kubeletUrl := "https://127.0.0.1:10250/"
podsUrlPath := "pods"
cert, err := tls.LoadX509KeyPair(certFile, keyFile)
if err != nil {
hwlog.RunLog.Errorf("LoadX509KeyPair failed: %#v", err)
return err
}
t := &http.Transport{
TLSClientConfig: &tls.Config{
Certificates: []tls.Certificate{cert},
InsecureSkipVerify: true,
},
}
client := &http.Client{Transport: t}
resp, err := client.Get(kubeletUrl + podsUrlPath)
if err != nil {
hwlog.RunLog.Errorf("http get failed: %#v", err)
return err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
hwlog.RunLog.Errorf("ReadAll resp.Body failed: %#v", err)
return err
}
hwlog.RunLog.Infof("resp.Status: %#v, resp.Body: %#v", resp.Status, body)
jsonFile, err := os.Create("pod_list.json")
if err != nil {
hwlog.RunLog.Errorf("create pod_list.json failed: %#v", err)
return err
}
defer jsonFile.Close()
if _, err := jsonFile.Write(body); err != nil {
hwlog.RunLog.Errorf("write pod_list.json failed: %#v", err)
return err
}
return nil
}