실습

Single-container Pod

  1. Pod 생성

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        volumeMounts:
        - mountPath: /var/log/nginx
          name: log-volume
      volumes:
      - name: log-volume
        emptyDir: {}
    EOF
  2. 배포된 웹서버 호출

    kubectl exec nginx -- curl -s localhost
  3. 웹서버 로그 확인

    kubectl exec nginx -- cat /var/log/nginx/access.log
  4. Pod 삭제

    kubectl delete pod nginx

Multi-container Pod

  1. Pod 생성

  2. Pod 상태 확인

  3. 위의 명령어를 실행하면 아래와 같은 결과를 확인할수 있습니다.

  4. Pod가 정상적으로 실행되지 않는 이유 확인

  5. 사용한 컨테이너 이미지에 대한 상세 내용 확인 - https://hub.docker.com/r/curlimages/curl

  6. Pod 재생성

  7. 생성한 Pod의 명시한 모든 컨테이너가 정상 동작하는지 확인

  8. curl 컨테이너에서 nginx 컨테이너에서 실행중인 웹서버 호출

  9. nginx 컨테이너에서 웹서버 로그 확인

  10. curl 컨테이너에서 마운트한 볼륨에 생성된 파일 확인

  11. curl 컨테이너에서 nginx 컨테이너 실행중인 웹서버가 생성한 로그파일 확인

  12. Pod 삭제

Commands and Arguments

  1. Pod 생성

  2. Pod에 명시한 이미지는 아래와 같은 Dockerfile을 통해서 생성 되었습니다.

  3. 생성된 Pod 확인

  4. Pod 상태 확인

  5. 아래의 명령어를 통해서 Pod 상태가 무엇을 의미하는지 확인

  6. Pod 로그 확인

  7. Pod 재생성

  8. Pod 로그 확인

  9. 터미널에서 아래의 같은 명령어를 실행해서 나오는 결과 확인

  10. Pod 재생성

  11. Pod 로그 확인

  12. Pod 삭제

Pod Networking

  1. Pod 생성

  2. nginx Pod의 IP 주소 확인

  3. nginx Pod의 IP 주소 확인

  4. curl Pod에서 nginx Pod 호출 시도

  5. curl Pod에서 nginx Pod 호출 재시도

  6. Session Manager 플러그인 설치

  7. Node들의 인스턴스 아이디 확인

  8. nginx Pod의 IP 주소 확인

  9. 한개의 Node로 Session Manager 연결

  10. curl 명령어를 통해서 nginx Pod의 IP 호출

  11. Session Manager 종료

  12. Pod 삭제

Init Containers

  1. Pod 생성

  2. Pod에 설정된 환경변수 확인

  3. 웹서버 인덱스 페이지 확인

  4. EC2 Metadata를 통해서 Pod가 배포된 Node의 가용영역 확인

  5. 웹서버 인덱스 페이지 업데이트

  6. 웹서버 인덱스 페이지가 업데이트 됐는지 확인

  7. Pod 생성

  8. Pod가 생성되었는지 확인

  9. Cloud9 인스턴스의 8080 포트를 nginx-int Pod의 80 포트로 포워딩

  10. Preview -> Preview Running Application 을 클릭해서 NGINX 웹서버로 접근

  11. 미리보기 창 및 kubectl port-forward 프로세스 종료

  12. Pod 삭제

Logs

  1. Pod 생성

  2. Pod 로그 확인

  3. 웹서버 호출

  4. Pod 로그 확인

  5. 마지막 5줄의 로그를 확인하고 새로운 라인을 표시

  6. 새로운 터미널을 열고 웹서버 호출

  7. 기존 터미널로 돌아와서 새로운 로그가 보이는지 확인

  8. Ctrl+C를 입력해서 5번에서 실행한 프로세스 종료

  9. Pod가 배포된 Node 확인

  10. Pod가 배포된 노드의 인스턴스 아이디 확인

  11. 다른 터미널로 이동해서 Pod가 배포된 Node로 Session Manager 연결

  12. 실행중인 컨테이너 확인

  13. Pause 컨테이너란??

  14. 다른 터미널로 이동해서 컨테이너에 ps 바이너리 설치

  15. 컨테이너에서 실행중인 프로세스 확인

  16. Pod 상태 확인

  17. Init 프로세스 (PID 1) 종료

  18. Pod 상태 확인

  19. Pod 로그 확인

  20. 이전에 종료된 컨테이너 로그 확인

  21. 생성된 Pod의 재시작 정책 확인

  22. 아래의 명령어를 통해서 Pod 재시작 정책이 무엇을 의미하는지 확인

  23. 다른 터미널로 이동해서 crictl 설치

  24. 실행중인 컨테이너 확인

  25. nginx 컨테이너의 ID 확인

  26. nginx 컨테이너의 로그 경로 확인

  27. 컨테이너 로그 확인

  28. 다른 터미널로 이동해서 Pod 로그 확인

  29. 24번 명령어로 확인한 로그와 25번 명령어로 확인한 로그 비교

  30. Pod 삭제

  31. 23번 명령어로 확인한 로그 경로가 여전히 존재하는지 확인

Environment Variables

  1. Pod 생성

  2. Pod 상태 확인

  3. 위의 명령어를 실행하면 아래와 같은 결과를 확인할수 있습니다.

  4. Pod 로그 확인

  5. kubectl run 명령어의 도움말 확인

  6. Pod 삭제

  7. Pod 재생성

  8. Pod 상태 확인

  9. Pod에 설정된 환경변수 확인

  10. 아래의 명령어를 실행해서 mysql에 접속 시도

  11. Pod 삭제

Last updated