#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?