Dmidecode dentro vá programa em execução em um kubernetes pod

0

Pergunta

Eu tenho uma rotina de ir a executar na janela de encaixe recipiente. Eu preciso saída do comando dmidecode. Mas a sua entrada em branco.

Ir:

func main() {

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

}

Janela de encaixe executar:

janela de encaixe executar --device /dev/mem:/dev/mem --cap-adicionar SYS_RAWIO -p 8086:8086 -ele my_img:1.0.1

O que estou ausente aqui?

Atualizado:

Acima trabalhou na janela de encaixe depois que eu adicionei abaixo em Dockerfile:

A PARTIR de alpine:mais recentes EXECUTE o apk --no-cache --update --verbose adicionar grep bash dmidecode &&
rm -rf /var/cache/apk/* /tmp/* /sbin/halt /sbin/poweroff /sbin/reboot

E abaixo na janela de encaixe compor arquivo:

privilegiada: true

Mas Quando tentei usar o acima em kubernetes ele não é capaz de buscar demidecode de saída.

Uma ajuda será muito apreciada.

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

Melhor resposta

2

O que estou ausente aqui?

Para começar ,o tratamento de erros.

    x,_ := cmd.Output()

Nunca, jamais ignorar um erro no Ir. Ao contrário de linguagens como, por exemplo, Pyhton, não há exceção levantando - erro de manuseio de valores de retorno é sua única chance de descobrir se algo saiu errado.

Em segundo lugar, você também está ignorando o comando do fluxo de Saída Padrão. Esta é susceptível de conter um úteis mensagem de erro sempre que uma execução do comando não funciona, por isso os/exec's Output() oferece-lo como parte do valor de erro se não tiver capturado no Cmd de configuração. Parte de seu tratamento de erros deve estar fazendo um tipo de declaração em que o valor de erro, se não nula, e se é um válido *exec.ExitErrore se esse tipo de declaração tiver êxito, verifique o seu Stderr campo para de uma mensagem de erro.

Terceiro, olhando seu comando, eu posso ver que você fez um fácil de erro:

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

No shell, espaço em branco que separa argumentos. mas não há shell aqui; você está passando -t 1 como um argumento para dmidecode. Você deve passá-los como separados argumentos, quase de certeza:

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

Finalmente, você já o encontrou não Pode executar o dmidecode na janela de encaixe recipiente , mas certifique-se de ler e entender o aceite de resposta. Em seguida, obter o seu encaixe o recipiente configurado para ser capaz de executar dmidecode sem Ir. Uma vez que ele funciona na linha de comando, o mesmo encaixe de configuração deve permitir que ele funcione em Ir invocação bem.

2021-11-23 17:22:34

Em outros idiomas

Esta página está em outros idiomas

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