Используя «простое» консольное приложение, добавление Console.ReadLine () в последней строке кода, очевидно, не будет работать, так как при работе в K8s нет входного потока.
Рекомендованным способом реализации этого является использование Host Builder.
WebHost предназначен для веб приложений, как вы упомянули, но есть универсальный компоновщик хоста для всех других типов приложений, которые обычно не требуют веб-возможностей.
Хотя поначалу это может показаться немного «излишним» - на самом деле это не так.
При планировании работы в Kubernetes вы должны рассмотреть другие пути, кроме счастливого.
Например, разрешение K8s сигнализировать вам терминалу (обрабатывая SIGTERM) в случае события уменьшения масштаба в этом развертывании или опустошения узла - для постепенного отключения - что поддерживается "из коробки" при использовании HostBuilder.
Кроме того, вы сможете пользоваться другими встроенными функциями, такими как автоматическая перезагрузка настроек из файлов (что прекрасно работает при монтировании ConfigMap в файл)
Документация:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/generic-host?view=aspnetcore-2.2
Пример проекта:
https://github.com/aspnet/AspNetCore.Docs/tree/master/aspnetcore/fundamentals/host/generic-host/samples/2.x/GenericHostSample
Удачи.