Kubernetes — Проверка Работоспособности Через Код C#, Выдающий Ошибку

  • Автор темы Vako
  • Обновлено
  • 21, Oct 2024
  • #1

Я пытаюсь реализовать проверку жизнеспособности через код С# (основная структура .Net). Я просто хочу запустить команду Curl внутри контейнера так . Ниже приведен фрагмент кода с использованием kubernetesКлиент:

    #region Assembly KubernetesClient, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a0f90e8c9af122d

using Newtonsoft.Json;
using System.Collections.Generic;

namespace k8s.Models
{

//

// Summary:

//     ExecAction describes a "run in container" action.

public class V1ExecAction

{

//

// Summary:

//     Initializes a new instance of the V1ExecAction class.

public V1ExecAction();

//

// Summary:

//     Initializes a new instance of the V1ExecAction class.

//

// Parameters:

//   command:

//     Command is the command line to execute inside the container, the working directory

//     for the command is root ('/') in the container's filesystem. The command is simply

//     exec'd, it is not run inside a shell, so traditional shell instructions ('|',

//     etc) won't work. To use a shell, you need to explicitly call out to that shell.

//     Exit status of 0 is treated as live/healthy and non-zero is unhealthy.

public V1ExecAction(IList<string> command = null);

//

// Summary:

//     Gets or sets command is the command line to execute inside the container, the

//     working directory for the command is root ('/') in the container's filesystem.

//     The command is simply exec'd, it is not run inside a shell, so traditional shell

//     instructions ('|', etc) won't work. To use a shell, you need to explicitly call

//out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.

[JsonProperty(PropertyName = "command")]

public IList<string> Command { get; set; }

} }

Но получаю эту ошибку в описании модуля:

Ошибка проверки работоспособности: ошибка rpc: код = неизвестное описание = не удалось выполнитьexec в контейнере: не удалось запустить exec«a80d33b5b2046b8e606ed622da7085013a725»: Ошибка выполнения среды выполнения OCI: exec http://localhost:5001/checkhealth/не удалось: контейнер_linux. http://localhost:5001/checkhealth/

идти: 380

IList<string> command = new List<string>();
V1Probe livnessconfig = null;
command.Add("curl http://localhost:5001/checkhealth/");
V1ExecAction execommand = new V1ExecAction(command);
livnessconfig = new V1Probe { Exec = execommand, InitialDelaySeconds = 10, PeriodSeconds = 10, TimeoutSeconds = 5, FailureThreshold = 3 };

: запуск процесса контейнера вызвал:

Vako


Рег
05 Mar, 2011

Тем
81

Постов
169

Баллов
584
  • 25, Oct 2024
  • #2

Вам необходимо предоставить команды в списке. Что-то вроде ниже:

0

Поскольку вы уже являетесь конечной точкой для проверки работоспособности, вам следует использовать

V1ExecAction
instead of
V1ExecAction
. В вашем случае
V1HTTPGetAction
will always give exit status as
V1ExecAction execommand = new V1ExecAction("curl", "http://localhost:5001/checkhealth/");
и, следовательно, проверка работоспособности не будет правильной, если ваше приложение выдаст какие-либо ошибки или выйдет из строя.

 

Liss_pro


Рег
18 Nov, 2019

Тем
75

Постов
190

Баллов
565
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно