본문 바로가기

⭐ Kubernetes & EKS/Kubernetes (쿠버네티스)

init 컨테이너 실행하기

728x90
반응형

# Init 컨테이너

- 초기화를 실행해주는 컨에티너

- 주 컨테이너가 실행되기 전에 미리 실행되어 초기화를 해주는 컨테이너

# 쿠버네티스 공식 사이트에서 Init Containers 검색 : kind: 검색하여 소스코드 찾기

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox:1.28
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']
  initContainers:
  - name: init-myservice
    image: busybox:1.28
    command: ['sh', '-c', "until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for myservice; sleep 2; done"]
  - name: init-mydb
    image: busybox:1.28
    command: ['sh', '-c', "until nslookup mydb.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for mydb; sleep 2; done"]
vim pop-init-container.yaml

- 소스코드 붙여넣기

kubectl create -f pop-init-container.yaml

kubectl get pod

- init에 대한 조건이 만족하기 전까지는 pod 가 실행되지 않고 아래와 같이 남아 있는다.

myapp-pod           0/1     Init:0/2   0               41s

# 이전 소스코드에 있던것과 같이 myservice 와 mydb 를 실행해야 한다.

apiVersion: v1
kind: Service
metadata:
  name: myservice
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376
---
apiVersion: v1
kind: Service
metadata:
  name: mydb
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9377
vim svc-pod-mydb.yaml

kubectl create -f svc-pod-mydb.yaml

kubectl get pod -w

- 모니터링을 해보면 init 컨테이너 쪽에 0/2 였던 상태정보가 2/2로 바뀌면서 pod가 실행이 되는것을 확인 할 수 있다.

myapp-pod           1/1     Running   0               6m17s
728x90
반응형