|
|||||||
Init-контейнеры в Kubernetes
Время создания: 21.09.2018 19:45
Автор: br0ke
Текстовые метки: kubernetes, k8s, kube, kubectl, pod, initialization, init, container, containers, init-container, init-containers, PodInitializing
Раздел: Информационные технологии - Linux - Kubernetes
Запись: and-semakin/mytetra_data/master/base/1537541120o42nqqafca/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Init-контейнеры -- это специальные контейнеры, которые запускаются при инициализации пода до запуска основных контейнеров. Init-контейнеры подготавливают окружение для работы (выполнение миграций, проверки, склонировать Git-репозиторий, дождаться СУБД или другой сервис, создание конфигов, установка прав на файлы) и могут содержать в себе утилиты, которые не обязательны или не желательны в основном контейнере. В целом, init-контейнеры работают как обычные контейнеры, за исключением следующих пунктов: они всегда выполняются до завершения; каждый init-контейнер должен успешно завершиться, чтобы запустился следующий. Если init-контейнер завершается с ошибкой, то Kubernetes перезапускает весь под целиком (если, конечно, restartPolicy это позволяет). Пример: apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp spec: containers: - name: myapp-container image: busybox command: ['sh', '-c', 'echo The app is running! && sleep 3600'] initContainers: - name: init-myservice image: busybox command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;'] - name: init-mydb image: busybox command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;'] Отладка: 1. Создать под с init-контейнерами: kubectl create -f myapp.yaml 2. Посмотреть статус пода: kubectl get -f myapp.yaml 3. Посмотреть подробную информацию о поде: $ kubectl describe -f myapp.yaml Name: myapp-pod Namespace: default [...] Labels: app=myapp Status: Pending [...] Init Containers: init-myservice: [...] State: Running [...] init-mydb: [...] State: Waiting Reason: PodInitializing Ready: False [...] Containers: myapp-container: [...] State: Waiting Reason: PodInitializing Ready: False [...] Events: FirstSeen LastSeen Count From SubObjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 16s 16s 1 {default-scheduler } Normal Scheduled Successfully assigned myapp-pod to 172.17.4.201 16s 16s 1 {kubelet 172.17.4.201} spec.initContainers{init-myservice} Normal Pulling pulling image "busybox" 13s 13s 1 {kubelet 172.17.4.201} spec.initContainers{init-myservice} Normal Pulled Successfully pulled image "busybox" 13s 13s 1 {kubelet 172.17.4.201} spec.initContainers{init-myservice} Normal Created Created container with docker id 5ced34a04634; Security:[seccomp=unconfined] 13s 13s 1 {kubelet 172.17.4.201} spec.initContainers{init-myservice} Normal Started Started container with docker id 5ced34a04634 4. Просмотреть логи init-контейнеров: $ kubectl logs myapp-pod -c init-myservice # Inspect the first init container $ kubectl logs myapp-pod -c init-mydb # Inspect the second init container |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|