Сегодня мало кто не согласится с тем, что Docker наконец-то стал «мейнстримом».
Ну, точнее, стали Docker-контейнеры.
Правда, есть фронт, где война еще не окончена, хотя для многих победитель уже очевиден, и этим победителем является Kubernetes, который по статистике использования далеко опережает своих основных конкурентов: Docker Swarm и Mesos+Mesphere. .
Я знаю людей и компании, которые не согласны с мнением большинства о том, что k8s — это будущее оркестрации контейнеров.
Но их почему-то часто не устраивают аналогичные инструменты других производителей.
Крупные компании в этом случае выбирают путь разработки собственного инструмента оркестровки контейнеров.
Другие селятся на Месосе или даже на Кочевнике.
Но я пока не знаю никого, кто бы использовал Docker Swarm (режим).
Кстати, цифра «8» в слове k8s означает именно «8 букв», то есть: k8s = k[8_other_letters]s = kubernetes. Мода на подобные сокращения появилась в бородатых 80-х годах прошлого века, и лично я такие сокращения не приветствую, поэтому впредь буду называть инструменты полным именем.
Ситуация с хайпом вокруг Kubernetes (а это, на мой взгляд, именно хайп) заставляет вендоров беспокоиться о его поддержке.
Дошло до того, что даже Docker анонсировал добавление официальная поддержка Kubernetes в следующей версии Docker EE (Enterprise Edition), а также в дев-версиях Docker CE (Community Edition) для Windows/macOS (да, о версии для Linux мы пока не говорим).
Поддержка Kubernetes в Docker не останавливает автоматически разработку Swarm; наоборот, Docker продолжит активно инвестировать в Swarm, получая при этом дополнительные выгоды от поддержки сразу двух систем — так Дэвид Мессина прокомментировал новость , руководитель отдела маркетинга в Docker. Как бы обстояло дело на самом деле, слова Дэвида Мессины похожи на правду — архитектура Docker устроена таким образом, что уровень оркестрации располагается ниже верхнего слоя абстракции.
Это позволяет теоретически легко изменить логику оркестратора и даже полностью заменить ее другим компонентом.
На практике, чтобы оркестраторы (в частности, Swarm и Kubernetes) были взаимозаменяемыми, они должны иметь схожий интерфейс, чего Docker активно придерживается начиная с Docker 1.12 (2016 г.
), когда впервые появились сервисы, а позже, в версии 1.13, Docker Compose. была представлена версия 3.0, формат которой во многом аналогичен формату описания конфигурации ресурсов Kubernetes. В результате мы приходим к выводу, что при использовании сервисов Docker у нас будет выбор как минимум из двух оркестраторов: Swarm или Kubernetes. И да, это пока только в Docker EE. Но с другой стороны, действительно ли вы хотите поддерживать Kubernetes внутри компании? Мастер узла Kubernetes
Рабочий узел Kubernetes$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f9882138b878 gcr.io/google_containers/pause-amd64:3.0 "/pause" 19 minutes ago Up 19 minutes k8s_POD_kube-flannel-ds-hvnv6_kube-system_d9712e10-d1e9-11e7-9c5c-08002767d9b9_0 4d1ea67a0b76 gcr.io/google_containers/kube-proxy-amd64 "/usr/local/bin/kube…" 37 minutes ago Up 36 minutes k8s_kube-proxy_kube-proxy-876f4_kube-system_60358c3c-d1e7-11e7-9c5c-08002767d9b9_0 37fb971730ce gcr.io/google_containers/pause-amd64:3.0 "/pause" 37 minutes ago Up 36 minutes k8s_POD_kube-proxy-876f4_kube-system_60358c3c-d1e7-11e7-9c5c-08002767d9b9_0 e1019f1fce5b gcr.io/google_containers/kube-controller-manager-amd64 "kube-controller-man…" 37 minutes ago Up 37 minutes k8s_kube-controller-manager_kube-controller-manager-kub-1_kube-system_422c166e980d1dc0f2b1d6dfe2a44a79_0 87cfb282f7ad gcr.io/google_containers/kube-scheduler-amd64 "kube-scheduler --ad…" 37 minutes ago Up 37 minutes k8s_kube-scheduler_kube-scheduler-kub-1_kube-system_e554495c6f8701f21accd04866090b05_0 50d678251d39 gcr.io/google_containers/kube-apiserver-amd64 "kube-apiserver --re…" 37 minutes ago Up 37 minutes k8s_kube-apiserver_kube-apiserver-kub-1_kube-system_342c1a99aaa61a0ed9ad896f289102da_0 ccca79b694a8 gcr.io/google_containers/etcd-amd64 "etcd --listen-clien…" 37 minutes ago Up 37 minutes k8s_etcd_etcd-kub-1_kube-system_d76e26fba3bf2bfd215eb29011d55250_0 5b1f09ff23ca gcr.io/google_containers/pause-amd64:3.0 "/pause" 37 minutes ago Up 37 minutes k8s_POD_kube-scheduler-kub-1_kube-system_e554495c6f8701f21accd04866090b05_0 31874e59e951 gcr.io/google_containers/pause-amd64:3.0 "/pause" 37 minutes ago Up 37 minutes k8s_POD_kube-controller-manager-kub-1_kube-system_422c166e980d1dc0f2b1d6dfe2a44a79_0 9a4c6aa0b861 gcr.io/google_containers/pause-amd64:3.0 "/pause" 37 minutes ago Up 37 minutes k8s_POD_kube-apiserver-kub-1_kube-system_342c1a99aaa61a0ed9ad896f289102da_0 d908b820c2cb gcr.io/google_containers/pause-amd64:3.0 "/pause" 37 minutes ago Up 37 minutes k8s_POD_etcd-kub-1_kube-system_d76e26fba3bf2bfd215eb29011d55250_0
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
049836cefde0 gcr.io/google_containers/pause-amd64:3.0 "/pause" 2 hours ago Up 2 hours k8s_POD_kube-flannel-ds-tt7nf_kube-system_d9718ab6-d1e9-11e7-9c5c-08002767d9b9_0
c9c39f7921f1 gcr.io/google_containers/kube-proxy-amd64 "/usr/local/bin/kube…" 3 hours ago Up 3 hours k8s_kube-proxy_kube-proxy-6dz5d_kube-system_b46478e0-d1e7-11e7-9c5c-08002767d9b9_0
986964a3b9c8 gcr.io/google_containers/pause-amd64:3.0 "/pause" 3 hours ago Up 3 hours k8s_POD_kube-proxy-6dz5d_kube-system_b46478e0-d1e7-11e7-9c5c-08002767d9b9_0
Что-то пошло не так на рабочем узле Kubernetes
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a9a80a385bef gcr.io/google_containers/pause-amd64:3.0 "/pause" 1 second ago Exited (0) Less than a second ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_201
0d807b577fcb gcr.io/google_containers/pause-amd64:3.0 "/pause" 1 second ago Exited (0) Less than a second ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_192
80d72880e96d gcr.io/google_containers/pause-amd64:3.0 "/pause" 2 seconds ago Exited (0) 1 second ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_191
8afa248b3d7a gcr.io/google_containers/pause-amd64:3.0 "/pause" 2 seconds ago Exited (0) 1 second ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_200
87b742a1f267 gcr.io/google_containers/pause-amd64:3.0 "/pause" 3 seconds ago Exited (0) 2 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_199
775ed98c7c3f gcr.io/google_containers/pause-amd64:3.0 "/pause" 3 seconds ago Exited (0) 2 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_190
760c34dcdeed gcr.io/google_containers/pause-amd64:3.0 "/pause" 4 seconds ago Exited (0) 3 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_198
d8088f54906b gcr.io/google_containers/pause-amd64:3.0 "/pause" 4 seconds ago Exited (0) 3 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_189
e6b3bda7b916 gcr.io/google_containers/pause-amd64:3.0 "/pause" 5 seconds ago Exited (0) 4 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_197
d6b086d07e2b gcr.io/google_containers/pause-amd64:3.0 "/pause" 6 seconds ago Exited (0) 4 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_188
a174b8540b65 gcr.io/google_containers/pause-amd64:3.0 "/pause" 6 seconds ago Exited (0) 5 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_196
2661953dde42 gcr.io/google_containers/pause-amd64:3.0 "/pause" 7 seconds ago Exited (0) 5 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_187
1fafde972df3 gcr.io/google_containers/pause-amd64:3.0 "/pause" 8 seconds ago Exited (0) 6 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_195
714240831cd0 gcr.io/google_containers/pause-amd64:3.0 "/pause" 8 seconds ago Exited (0) 7 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_186
025d5f953186 gcr.io/google_containers/pause-amd64:3.0 "/pause" 9 seconds ago Exited (0) 8 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_194
53ada973b77d gcr.io/google_containers/pause-amd64:3.0 "/pause" 9 seconds ago Exited (0) 8 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_185
9079f3ef2238 gcr.io/google_containers/pause-amd64:3.0 "/pause" 10 seconds ago Exited (0) 9 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_193
63713d562f90 gcr.io/google_containers/pause-amd64:3.0 "/pause" 10 seconds ago Exited (0) 9 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_184
3c537074372e gcr.io/google_containers/pause-amd64:3.0 "/pause" 11 seconds ago Exited (0) 10 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_192
e07d254be81a gcr.io/google_containers/pause-amd64:3.0 "/pause" 11 seconds ago Exited (0) 10 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_183
497b03dbe981 gcr.io/google_containers/pause-amd64:3.0 "/pause" 12 seconds ago Exited (0) 11 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_191
539c3bde5766 gcr.io/google_containers/pause-amd64:3.0 "/pause" 12 seconds ago Exited (0) 11 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_182
b1bc951015c1 gcr.io/google_containers/pause-amd64:3.0 "/pause" 13 seconds ago Exited (0) 12 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_190
c1448302112b gcr.io/google_containers/pause-amd64:3.0 "/pause" 13 seconds ago Exited (0) 12 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_181
afa7ac76512e gcr.io/google_containers/pause-amd64:3.0 "/pause" 14 seconds ago Exited (0) 13 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_180
2a0526c4b9ae gcr.io/google_containers/pause-amd64:3.0 "/pause" 14 seconds ago Exited (0) 13 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_189
4cd401e18c5a gcr.io/google_containers/pause-amd64:3.0 "/pause" 15 seconds ago Exited (0) 14 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_179
d8aea9b07ebf gcr.io/google_containers/pause-amd64:3.0 "/pause" 15 seconds ago Exited (0) 14 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_188
facf53fed8f4 gcr.io/google_containers/pause-amd64:3.0 "/pause" 16 seconds ago Exited (0) 15 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_187
d4f5d552e6d3 gcr.io/google_containers/pause-amd64:3.0 "/pause" 16 seconds ago Exited (0) 15 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_178
3e890f2710e8 gcr.io/google_containers/pause-amd64:3.0 "/pause" 17 seconds ago Exited (0) 16 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_186
08d7ffd20989 gcr.io/google_containers/pause-amd64:3.0 "/pause" 17 seconds ago Exited (0) 16 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_177
7636aee01b36 gcr.io/google_containers/pause-amd64:3.0 "/pause" 18 seconds ago Exited (0) 17 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_185
f5c9f0462927 gcr.io/google_containers/pause-amd64:3.0 "/pause" 18 seconds ago Exited (0) 17 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_176
08228f1dcc69 gcr.io/google_containers/pause-amd64:3.0 "/pause" 19 seconds ago Exited (0) 18 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_175
3ebf9cbe0574 gcr.io/google_containers/pause-amd64:3.0 "/pause" 20 seconds ago Exited (0) 19 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_184
8db8288b8e25 gcr.io/google_containers/pause-amd64:3.0 "/pause" 21 seconds ago Exited (0) 20 seconds ago k8s_POD_nginx-deployment-569477d6d8-tpcg6_default_5ccd5e03-d1fd-11e7-9c5c-08002767d9b9_174
04910fa590a3 gcr.io/google_containers/pause-amd64:3.0 "/pause" 21 seconds ago Exited (0) 20 seconds ago k8s_POD_nginx-deployment-569477d6d8-ks262_default_5ccc8cd6-d1fd-11e7-9c5c-08002767d9b9_183
6bb21c072cdf quay.io/coreos/flannel "/opt/bin/flanneld -…" About a minute ago Exited (1) 43 seconds ago k8s_kube-flannel_kube-flannel-ds-tgf4g_kube-system_d971b659-d1e9-11e7-9c5c-08002767d9b9_30
fd2adaea2775 quay.io/coreos/flannel "cp -f /etc/kube-fla…" 2 hours ago Exited (0) 2 hours ago k8s_install-cni_kube-flannel-ds-tgf4g_kube-system_d971b659-d1e9-11e7-9c5c-08002767d9b9_0
a4ab64d35f7a gcr.io/google_containers/pause-amd64:3.0 "/pause" 2 hours ago Up 2 hours k8s_POD_kube-flannel-ds-tgf4g_kube-system_d971b659-d1e9-11e7-9c5c-08002767d9b9_0
8af917d54c0e gcr.io/google_containers/kube-proxy-amd64 "/usr/local/bin/kube…" 3 hours ago Up 3 hours k8s_kube-proxy_kube-proxy-jrgzd_kube-system_9f8ce53d-d1e7-11e7-9c5c-08002767d9b9_0
b9abb6dbc139 gcr.io/google_containers/pause-amd64:3.0 "/pause" 3 hours ago Up 3 hours k8s_POD_kube-proxy-jrgzd_kube-system_9f8ce53d-d1e7-11e7-9c5c-08002767d9b9_0
Для сравнения вот что мы видим на узлах Docker в режиме Swarm: Мастер узла Docker
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Рабочий узел Docker
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Инкапсуляция во всей красе! Прибавив к этому абсолютно тривиальный способ установки и запуска Docker, мы получаем настолько удобный и простой в использовании инструмент для оркестровки контейнеров, что я совершенно недоумеваю, почему им до сих пор почти никто не пользуется (ведь PHP когда-то использовался многими люди).
из-за простоты и универсальной доступности).
Может в комментариях кто-нибудь подскажет причины этого заговор странный факт. В любом случае, с выходом поддержки Kubernetes в Docker, даже те, кто Нет В поисках простых способов у вас будет возможность поэкспериментировать с оркестровкой из Kubernetes сразу после установки Docker на ваш новый Mac/Windows. А пока, томясь в ожидании неизбежного, приглашаю сторонников Kubernetes/Swarm/Nomad/Mesos поделиться мыслями о том, что могло бы их убедить на темную сторону выберите именно этот инструмент.
Теги: #docker #Kubernetes #docker swarm #k8s #mesos #mesphere #nomad #разработка Linux
-
Время Повысить Свою Карьеру Вместе С Sap
19 Oct, 24 -
Google Делает Ставку На Онлайн-Приложения
19 Oct, 24 -
Вы Используете Облачный Хостинг?
19 Oct, 24 -
Crm – В Каждом Интернет-Магазине!
19 Oct, 24 -
Реверс-Инжиниринг Запутанной Сборки .Net
19 Oct, 24 -
Стартап Для... Кроликов.
19 Oct, 24 -
Как Стать Программистом 1С
19 Oct, 24