Отображает / печатает ли сообщение «Hello World» в Java / Python так же, как в Kubernetes?

#kubernetes #dockerfile #devops

#kubernetes #dockerfile #devops

Вопрос:

Я хочу напечатать «Hello World» в k8s, но я не понимаю, как это сделать.

Я новичок в Kubernetes.

Как мне отобразить «Hello World», создав изображение / контейнер при доступе через веб-сервер на порту.

Нужно ли мне в обязательном порядке устанавливать npm или другие в моем dockerfile? Или есть какой-нибудь способ просто использовать команды bash для повторения «hello world» и отображения этого в качестве вывода на веб-сервере.

Пожалуйста, укажите.

Комментарии:

1. Если у вас не было Kubernetes, и вы хотели отобразить «hello world» на веб-странице, что самое простое, что вы могли бы сделать? (Да, вам, вероятно, нужен пользовательский образ с каким-то HTTP-сервисом.)

2. Привет, Дэвид, спасибо за ваш ответ. Я хочу знать, что если в Dockerfile я включаю точку входа или CMD и отображаю сообщение, возможно ли получить вывод сообщения в Kubernetes? Я бы не использовал какое-либо приложение Nodejs или Nginx или Reddis для отображения этого сообщения, а только простой CMD или ENTRYPOINT для этого? Возможно ли это? Пример кода dockerfile: CMD echo «Hello World» или ENTRYPOINT [ «bin / bash», «l», «c», ‘echo Hello World» ] ??

3. На самом деле это не вариант использования для Kubernetes. Вы могли бы запустить задание с этим контейнером и просмотреть его журналы, когда оно завершится, но это была бы необычная настройка. (Какие преимущества вы надеетесь получить от запуска этого процесса в Kubernetes?)

Ответ №1:

Kubernetes — это оркестратор, это не такой язык, как JavaScript, вы можете создать приложение javascript, а затем создать образ docker, содержащий указанное приложение, которое затем можно запустить в кластере kubernetes.

Однако я должен сказать, что ваш вопрос заставляет меня задуматься, есть ли у вас какой-либо опыт в том, как работают контейнеры или оркестраторы, что заставляет меня думать, что я должен рекомендовать вам прочитать немного больше и поиграть с ним, прежде чем пытаться запустить его в живой среде.

Если вы не хотите слушать вышесказанное, вам в основном понадобится следующее:

  • Развертывание, в котором модуль запускает ваш контейнер с приложением внутри.
  • Служба, предоставляющая развертывание кластеру.
  • Вход (маршрут), предоставляющий вашу службу внешней сети.

Есть и другие способы сделать это, но k8s — это не «простая вещь» для работы, она требует довольно много исследований и тестирования, чтобы вы могли знать, что вы делаете, прежде чем это станет полезным.

Комментарии:

1. Привет, Джайт, спасибо за ваш ответ. Я постараюсь узнать больше о k8s.

2. Я хочу знать, что если в Dockerfile я включаю точку входа или CMD и отображаю сообщение, возможно ли получить вывод сообщения в Kubernetes? Я бы не использовал какое-либо приложение Nodejs или Nginx или Reddis для отображения этого сообщения, а только простой CMD или ENTRYPOINT для этого? Возможно ли это? Пример кода dockerfile: CMD echo «Hello World» или ENTRYPOINT [ «bin / bash», «l», «c», ‘echo Hello World» ] ??

3. Вроде бы, выходные данные будут в журналах контейнеров, так что, возможно, на них не так много смотреть, но это возможно 🙂 Каждый контейнер выполняется так же, как и в docker локально на вашем компьютере, только с более высокоуровневым оркестратором, который заботится о планировании и тому подобном 🙂

Ответ №2:

Начните с изучения использования Docker. Контейнеры — это в основном «способ» запуска процессов в изолированной среде, поэтому, чтобы что-то делать в контейнере, вам нужно сделать это с помощью процесса, например, bash или пользовательского приложения.

Вы можете запускать как команды, так и службы в контейнере Docker.

При развертывании приложений в Kubernetes это сервисы, например, веб-сервер, прослушивающий порт. Но вы также можете запускать команды в Kubernetes с помощью заданий

Вот задание «hello world» с использованием bash:

 apiVersion: batch/v1
kind: Job
metadata:
  name: hello-world
spec:
  template:
    metadata:
      name: hello-world
    spec:
      containers:
      - name: hello-world
        image: centos:7
        command:
         - "bin/bash"
         - "-c"
         - "echo hello world"
      restartPolicy: Never
  

Комментарии:

1. Привет, Джонас, спасибо за ваш ответ. Я хочу знать, что если в Dockerfile я включаю точку входа или CMD и отображаю сообщение, возможно ли получить вывод сообщения в Kubernetes? Я бы не использовал какое-либо приложение Nodejs или Nginx или Reddis для отображения этого сообщения, а только простой CMD или ENTRYPOINT для этого? Возможно ли это? Пример кода dockerfile: CMD echo «Hello World» или ENTRYPOINT [ «bin / bash», «l», «c», ‘echo Hello World» ] ??

2. Привет, Джонас, также вопрос по вашему образцу кода hello World, где я могу получить изображение centos: 7, совпадает ли оно с любым базовым изображением ОС, таким как rhel или другие? Можно ли их просто сохранить в репозитории и указать детали репозитория в вашем файле задания yaml, и когда мы создадим это задание, мы получим HelloWorld в качестве результата в k8s?