#kubernetes #amazon-eks
#kubernetes #amazon-eks
Вопрос:
Пытаюсь смонтировать конфигурационные файлы из hostPath в контейнер kubernetes. Это работает с использованием общей папки minikube и VirtualBox, но я не могу заставить это работать в Linux.
Я использую AWS EKS и следующую архитектуру https://aws.amazon.com/quickstart/architecture/amazon-eks /. Я думаю, моя проблема в том, что файлы должны храниться на каждом из экземпляров узла EKS.
Ниже приведен файл развертывания.
apiVersion: apps/v1
kind: Deployment
metadata:
name: openhim-core-deployment
spec:
replicas: 1
selector:
matchLabels:
component: openhim-core
template:
metadata:
labels:
component: openhim-core
spec:
volumes:
- name: core-config
hostPath:
path: /var/config/openhim-core
containers:
- name: openhim-core
image: jembi/openhim-core:5.rc
ports:
- containerPort: 8080
- containerPort: 5000
- containerPort: 5001
volumeMounts:
- name: core-config
mountPath: /usr/src/app/config
env:
- name: NODE_ENV
value: development
Комментарии:
1. не могли бы вы, пожалуйста, добавить вывод
kubectl logs pod_name
и результатls -l /var/config/openhim-core
?2. Заранее спасибо. Я добавил выходные данные. Я запустил chmod 777 -R / var / config/
3. Думаю, моя проблема связана с несколькими зонами доступности AWS EKS.
Ответ №1:
После долгих усилий я обнаружил, что пытаюсь разместить конфигурацию на хосте Linux Bastion, где у меня есть доступ к kubectl, но на самом деле эта конфигурация должна быть на каждом из экземпляров EC2 в каждой зоне доступности.
Решением для меня было использовать initContainer.
apiVersion: apps/v1
kind: Deployment
metadata:
name: openhim-core-deployment
spec:
replicas: 1
selector:
matchLabels:
component: openhim-core
template:
metadata:
labels:
component: openhim-core
spec:
volumes:
- name: core-config
hostPath:
path: /var/config/openhim-core
containers:
- name: openhim-core
image: jembi/openhim-core:5
ports:
- containerPort: 8080
- containerPort: 5000
- containerPort: 5001
volumeMounts:
- name: core-config
mountPath: /usr/src/app/config
env:
- name: NODE_ENV
value: development
initContainers:
- name: install
image: busybox
command:
- wget
- "-O"
- "/usr/src/app/config/development.json"
- https://s3.eu-central-1.amazonaws.com/../development.json
volumeMounts:
- name: core-config
mountPath: "/usr/src/app/config"
volumes:
- name: core-config
emptyDir: {}