Dmidecode intri program care rulează într-un kubernetes pod

0

Problema

Am o rutină de funcționare în docker container. Am nevoie de ieșire de comandă dmidecode. Dar sa vii gol.

Du-te:

func main() {

    cmd := exec.Command("dmidecode","-t 1")
    x,_ := cmd.Output()
    fmt.Println("output =======", string(x))

}

Docker rula:

docker fugi ... dispozitivul /dev/mem:/dev/mem ... cap-adauga SYS_RAWIO -p 8086:8086 -l my_img:1.0.1

Ce am pierdut pe aici?

Actualizat:

De mai sus a lucrat în docker după ce am adăugat mai jos în Dockerfile:

DE la alpine:cele mai noi RUN apk --no-cache-update --verbose adauga grep bash dmidecode &&
rm-rf /var/cache/apk/* /tmp/* /sbin/oprire /sbin/poweroff /sbin/reboot

Și mai jos în docker compune fișier:

privilegiat: adevărat

Dar Când a încercat să folosească cele de mai sus în kubernetes acesta nu putea să-i aducă demidecode de ieșire.

Un ajutor va fi apreciat foarte mult.

devops docker go kubernetes
2021-11-23 17:03:05
1

Cel mai bun răspuns

2

Ce am pierdut pe aici?

Pentru început ,eroare de manipulare.

    x,_ := cmd.Output()

Niciodată nu ignora o eroare în Go. Spre deosebire de limbi, cum ar fi, să zicem, Pyhton, nu există nici o excepție creșterea manipulare valori de returnare de eroare este singura șansă să-mi dau seama dacă ceva a mers prost.

În al doilea rând, sunteți, de asemenea, ignorat de comandă Standard flux de Ieșire. Acest lucru este probabil să conțină util un mesaj de eroare ori de câte ori o comandă de execuție nu funcționează, deci os/execmodelului Output() oferă ca parte din valoarea de eroare dacă nu este deja capturat în Cmd de configurare. Partea de tratare a erorilor ar trebui să faci un tip de afirmație pe care valoarea de eroare, dacă nu zero, și dacă e valabil *exec.ExitErrorși dacă acest tip de afirmație reușește, verificați sale Stderr teren pentru un mesaj de eroare.

Al treilea, se uită la comanda ta, eu pot vedea că ai făcut o greșeală ușor:

    cmd := exec.Command("dmidecode","-t 1")

La shell, spațiu separă argumente. dar nu există nici o coajă de aici; esti in trecere -t 1 tot ca un argument pentru a dmidecode. Tu ar trebui să fie de a trece-le ca separate argumente, aproape cu siguranță:

    cmd := exec.Command("dmidecode","-t", "1")

În cele din urmă, ați găsit deja nu Poate rula dmidecode pe docker container , dar asigurați-vă că pentru a citi și de a înțelege răspunsul acceptat. Apoi, ia-ți docker container configurat pentru a fi capabil de a rula dmidecode fără a Merge. După ce se lucrează la linia de comandă, la fel docker de configurare ar trebui să lăsați-l să lucreze sub Du-te invocare la fel de bine.

2021-11-23 17:22:34

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................