pod の image pull 回数を抑えるための仕組みです。
2つのコンポーネント prepull-daemon と prepull-wait によって動作します。
daemonset の initcontainer で prepull-daemon を起動します。 container では、sleep するような常駐コンテナを起動します。
/var/run をマウントすること/home/docker-compose.yml に pull 対象をマウントすること/root/.aws/config に渡すことAWS_REGION AWS_ACCOUNT_ID を渡すことvolumes:
- name: docker
hostPath:
path: /var/run
- name: aws-credentials
secret:
secretName: aws-credentials
initContainers:
- name: prepull-daemon
image: rhemsjapan/prepull-daemon:latest
imagePullPolicy: IfNotPresent
volumeMounts:
- name: docker
mountPath: /var/run
- name: aws-credentials
subPath: config
mountPath: /root/.aws/config
- name: docker-compose
subPath: docker-compose.yml
mountPath: /home/docker-compose.yml
env:
- name: AWS_REGION
value: "ap-northeast-1"
- name: AWS_ACCOUNT_ID
value: "012345678910"
containers:
- name: pause
image: 602401143452.dkr.ecr.us-east-2.amazonaws.com/eks/pause:3.1-eksbuild.1
aws-credentials
[default]
aws_access_key_id=<< ここにkey >>
aws_secret_access_key=<< ここにsec >>
docker-compose.yml
version: '3'
services:
a:
image: << ここに pull したいイメージ >>
| Name | Description | Required | Default |
|---|---|---|---|
| AWS_REGION | ECRのリージョン | Yes | - |
| AWS_ACCOUNT_ID | AWSのアカウントID | Yes | - |
deployment / pod の init-container で prepull-wait を起動します。
NODE_IP を渡すことinitContainers:
- name: prepull-wait
image: rhemsjapan/prepull-wait:latest
imagePullPolicy: IfNotPresent
env:
- name: NODE_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
| Name | Description | Required | Default |
|---|---|---|---|
| NODE_IP | pod がスケジュールされる node の ip アドレス | Yes | - |
| DAEMON_NAMESPACE | Daemonset: prepullが存在する namespace | No | prepull-daemon |
Content type
Image
Digest
sha256:bc51c164f…
Size
6.4 MB
Last updated
about 3 years ago
docker pull rhemsjapan/prepull-wait