학습 보고서

4574 단어 DockerKubernetestech

교재.


Docker+Kubernetes로 구축된 웹 응용 실천 강좌
https://www.udemy.com/course/web-application-with-docker-kubernetes/
참고 문헌
https://qiita.com/Kta-M/items/ce475c0063d3d3f36d5d#pod
https://thinkit.co.jp/series/7342

학습 목적

  • Docker의 숙련도 향상
  • 새로운 학회 Kubbernetes 기술
  • 학습 내용·요점


    Docker


    개인적으로 Docker에 대한 학습 경험이 있기 때문에 재해석과 처음 알게 된 것만 기재했습니다.

    용어


    데몬:컨트롤러(사용자 인터페이스)
  • 이미지: 실행 환경의 정의(설계도)
  • 용기: 실행 환경(실제 상황)
  • 컨테이너와 가상 시스템의 차이


    결론: 내부 핵이 공통되어 있는지 여부.
  • VM: 각 VM에는 커널이 있습니다.(호스트 OS의 커널을 사용하지 않습니다.)
  • 컨테이너: 호스트 OS의 커널을 사용합니다.
  • 명령하다

  • 용기 실행: 그림이 없으면 다운로드하고 있으면 이 그림을 사용해서 용기 실행을 합니다.
  • docker run -d nginx:1.17.2-alpine  # 例
    
  • Docker Hub 로그인
  • docker login -u ユーザ名 -p パスワード
    

    Dockerfile

  • COPY: 호스트 측면에서 파일을 전송합니다.
  • ENTRYPOINT: 기본 실행, 초기화 처리.
  • CMD: 기본 명령입니다.
  • 이미지 태그 이름에 대한 명명 규칙

    ユーザ名 / イメージ名 : タグ

    Kubernetes


    개요


    컨테이너 자동화 = 대량의 컨테이너를 시연하고 관리하는 구조.
    kubectl 명령을 실행하면 그걸 받은 마스터 노드로부터 워커 노드에게 사령관을 준다.(node=실제 서버)
  • worker node: 처리를 수행합니다.
  • Master node: worker node를 관리합니다.
  • 리소스



    Pod


    Kubbernetes의 최소 추출 단위로 컨테이너(+저장용량)를 집합합니다.

    ReplicaSet


    동일한 사양의 Pod에는 지정된 수량으로만 배율(생성, 관리)이 적용됩니다.

    Deployment


    새 버전을 반영할 때의 프로그램 방법을 지정합니다.
  • Recreate: ReplicaSet(Pod군)을 삭제하고 ReplicaSet을 새로 만듭니다.(다운타임 발생)
  • RollingUpdate: Pod의 수량을 줄일 수 있고 증가할 수 있는 수량을 정의하고 이를 기준으로 새 버전의 Pod를 각각 바꿉니다.
  • Service


    내부 네트워크를 정의합니다(이름 해결).L4 로드 밸런서 역할을 합니다.

    Ingress


    외부 네트워크를 정의합니다.L7 로드 밸런서 역할을 합니다.

    ConfigMap


    환경 변수 등의 설정 정보를 정의합니다.

    Secret


    기밀 정보를 정의합니다.

    PersistentVolume(PV)


    저장된 엔티티(물리적)입니다.
    볼륨을 제공하는 외부 시스템과 협업하면 볼륨의 새로 만들기와 기존 볼륨의 삭제 등을 할 수 있다.(AWS의 경우 Node의 EC2가 보유한 EBS)

    PersistentVolumeClaim(PVC)


    PersistentVolume을 요구하는 쪽.필요한 용량을 동적으로 확보합니다.
    이론적으로 추상적으로 저장된 자원.

    네트워킹


    리소스(Pod 등)는 각 Worker node에 분산되어 구성됩니다.
    Kubbernetes 메모리는 두 개의 네트워크에 있습니다.
  • 외부 네트워크
  • 클러스터 네트워크
    외부에서 집단 네트워크에 접근할 수 없습니다.
    Pod에 액세스하는 방법은 다음 세 가지입니다.
  • Pod에 직접 액세스할 수 있습니다.
  • 추가 Pod를 통해 액세스할 수 있습니다.
  • 서비스에서 액세스할 수 있습니다.

  • 자원 구축


    자원 생성


    자원을 만들기 위해 선언 파일에 자원을 정의하고 이 자원을 적용하는 명령을 실행합니다.
  • 선언문 작성
  • apiVersion: v1
    kind: Pod
    metadata:
      name: debug
    spec:
      containers:
        - name: debug
          image: centos:7
          command: ["sh", "-c"]
          args: ["while true; do sleep ${DELAY}; done;"]
          env:
            - name: "DELAY"
              value: "5"
    
  • 리소스 생성
  • kubectl apply -f FILE
    

    자원 확인


    kubectl get TYPE   # TYPE: podなど
    

    자원 삭제


    kubectl delete TYPE/NAME
    

    Pod 실행 명령 실행하기


    kubectl exec -it NAME sh
    

    Pod 호스트 간 파일 전송


    kubectl cp SRC DEST
    

    로그 확인


    kubectl describe TYPE/NAME
    kubectl logs TYPE/NAME
    

    학습 결과

  • 은 교재로서 Kubbernetes의 기본+실제 테스트를 이해하는 내용으로 내용의 기본을 파악할 수 있다.
  • Kubbernetes는 docker-compose와 비슷한 느낌을 받았지만 차이점을 모르고 교재에 해설이 없어 조사를 진행했다.docker-compose는 명령적인 (예: 일반적인 메밀면) 제작 자원이고, Kubbernetes는 선언적인 (예: 작은 그릇 메밀면) 제작 자원으로 자원을 감시하고 있다.
  • Kubbernetes의 전반적인 구조와 요소들을 이해하기 위해 최선을 다했고, 능숙하게 사용하기 위해서는 더 깊은 이해와 경험이 필요하다고 느꼈다.(입맛은 아직 대단하다. 심오한 느낌이다.)그래서 능숙하게 활용하면 실행 환경을 광범위하고 유연하게 구성할 수 있을 것 같고, 이를 계기로 조금씩 공부할 수 있을 것 같다.
  • 네트워크와 볼륨에 대한 이해가 아직 낮다고 느낀다.
  • 학습 전 공정에서 VirtualBox를 사용했기 때문에 Docker(용기)와의 층차를 이해할 수 있다.
  • 좋은 웹페이지 즐겨찾기