Как получить доступ к локальной машине из стручка - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть модуль, созданный на локальной машине.У меня также есть файл сценария на локальной машине.Я хочу запустить этот файл сценария из модуля (я буду внутри модуля и запускаю сценарий, представленный на локальном хосте).

Этот сценарий обновит /etc/hosts другого модуля.Есть ли способ, где я могу обновить /etc/hosts одного модуля из другого модуля?Модули создаются из двух разных развертываний.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

В дополнение к ответу Дэвида - вы можете скопировать скрипт со своего хоста в модуль, используя cp:

kubectl cp [file-path] [pod-name]:/[path]

О вашем вопросе в комментарии.Вы можете сделать это, выставив развертывание:

kubectl expose deployment/name

Что приведет к созданию службы, вы можете найти более практичные примеры и подход в этом разделе .Таким образом, после того, как ваш конкретный Pod завершит работу, вы все равно сможете подключиться к новым Pod через тот же порт и Сервис.Вы можете найти более подробную информацию здесь .

В примере из документации вы можете видеть, что nginx Pod был создан с контейнерным портом 80, и команда expose будет иметь следующий эффект:

Эта спецификация создаст Службу, которая нацелена на TCP-порт 80 на любом модуле Pod с меткой run: my-nginx, и выставит ее на абстрактном порте службы (targetPort: порт, на который контейнер принимает трафик, порт: является абстрагированным портом Сервиса, который может быть любым портом, используемым другими модулями для доступа к Сервису).Просмотреть объект API службы, чтобы увидеть список поддерживаемых полей в определении службы

Кроме этого, похоже, что Дэвид предоставил здесь действительно хорошее объяснение, и он хотел бы узнать больше о FQDN и DNS, которые также соединяютсяс услугами.

0 голосов
/ 18 февраля 2019

Я хочу запустить этот файл сценария из модуля (я буду внутри модуля и запускаю сценарий, представленный на локальном хосте).

Вы не можете этого сделать.В простом контексте Docker одним из ключевых преимуществ Docker является изоляция файловой системы, поэтому контейнер вообще не может видеть файловую систему хоста, если его части явно не опубликованы в контейнере.В Kubernetes не только есть это ограничение, но вы также имеете ограниченный контроль над тем, на каком узле вы работаете, и есть потенциальная проблема, если один узел имеет данный скрипт, а другой нет.

Есть ли способ, где я могу обновить /etc/hosts одного модуля из другого модуля?

Как правило, вы должны избегать использования /etc/hosts для чего-либо.Настройка службы DNS обеспечивает согласованность и исключает необходимость вручную редактировать файлы в нескольких местах.

Kubernetes предоставляет вам службу DNS.В частности, если вы определяете службу , тогда имя этой службы будет отображаться как DNS-имя (внутри кластера);один модуль может добраться до другого через first-service-name.default.svc.cluster.local.Это, вероятно, тот ответ, который вы на самом деле ищете.

(Если у вас действительно только одноузловая среда, то Kubernetes добавляет много сложности и не так много преимуществ; вместо этого рассмотрим простые Docker и Docker Compose.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...