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"]
initContainers의 busybox와 init-mydb가 모두 실행되야
myapp-container가 실행된다.
until은 myservice가 실행되지 않으면 뒤의 do 를 계속 실행시킨다.
pod와 container의 차이
pod 생성될 때 pause container도 같이 생성
ip, hostname를 관리, 생성해주는 컨테이너
$ kubectl run webserver --image=nginx --port=80
$ minikube ssh
$ docker ps
$ kubectl delete pod webserver
nginx를 실행시켜 해당 노드로 접속(minikube 사용)하여 nginx와 pause 컨테이너가 같이 실행 되었는지 docker ps로 확인
pod 삭제 후 똑같이 확인 해보면
nginx와 pause 컨테이너가 같이 사라진걸 확인 할 수 있다.
kubelet Daemon에 의해 동작되는 pod = static pod