쿠버네티스 공부2

00_8_3·2021년 4월 30일
0

쿠버네티스 공부

목록 보기
2/11

init container

  • 앱 컨테이너 실행 전에 미리 동작시킬 컨테이너
  • 초기화 컨테이너가 모두 실행된 후에 앱 컨테이너를 실행

예제


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 를 계속 실행시킨다.

infra container(pause)

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 컨테이너가 같이 사라진걸 확인 할 수 있다.

static pod

kubelet Daemon에 의해 동작되는 pod = static pod

  • API 서버 없이 특정 노드에 있는 kubelet 데몬에 의해 직접 관리
  • /etc/kubernetes/manifests/ 디렉토리에 k8s yaml 파일을 저장시 적용

0개의 댓글