Мой ответ покрывает «прослушивание» служб в контейнере в Cloud Run Managed. Мой ответ не включает Anthos или пользовательские приложения, в которых ваш контейнер подключается за пределами Cloud Run через TCP, gRPC или WebSockets. В вашем вопросе ваш пример - HTTP-сервер, который является слушателем, а не клиентом.
Это не проблема gVisor. Первый шаг - понять, что делает SO_OOBINLINE.
Если эта опция включена, внеполосные данные включаются в поток принимаемых данных. В противном случае вы должны использовать флаг MSG_OOB во время вызова recv () для получения внеполосных данных.
Теперь, кто будет отправлять вам внеполосные (msg) данные? Интерфейс Google Cloud Run Managed - это внешний интерфейс Google (GFE). Это прокси-сервер Google и балансировщик нагрузки для Cloud Run Managed (и многих других сервисов Google). Интерфейс к GFE - HTTP / HTTPS. Клиент / браузер не может генерировать внеполосные данные. Клиент подключается к GFE. GFE подключается к вашей службе, работающей в Cloud Run.
Если gVisor будет поддерживать SO_OOBINLINE, кто может отправлять внеполосные данные? Никто / ничего в цепочке TCP / IP, которыми вы можете управлять / управлять.
Существует интернет-проект Out-of-Band 'Кодировка контента для HTTP . Я только следил за этим документом. Это может быть поддержано в будущем для HTTP, но не сегодня.
В вашем вопросе вы устанавливаете SO_OOBINLINE в false. Это случай по умолчанию (false), поэтому установка его в false не требуется.
Примечание. Есть несколько веских причин для использования OOB, но они встречаются редко. OOB - это только один байт данных. В мире HTTP, если что-то идет не так, стандартное ожидание - это код состояния, указывающий на проблему или попытку повторной попытки.
Как прекратить вызывать предупреждения, вызванные gVisor в Cloud Run
Не называйте API setSocketOption()
и равнозначны. Нет способа отключить предупреждения gVisor.