K8s의 Django(섹션 3: Kubernetes에서 실행)

어서 오세요,
마지막 부분에서, 우리는 Django 프로그램을 용기화하고, Docker에서 그것을 실행하여 정상적으로 작동하도록 할 수 있습니다.이 부분에서 Kubernetes에 이 이미지를 불러오는 방법을 보여 주고 배치를 추가하며 PC와 네트워크에서 연결하는 방법을 보여 드리겠습니다.그럼 가자.

Kubernetes에 그림 추가하기


실제 환경을 모의하기 위해 MiniKube는 자신의 Docker 등록표를 가지고 있기 때문에 이 등록표에 이미지를 올려서 용기를 시작할 수 있도록 해야 합니다. 두 가지 방법이 있습니다.

  • 디스크의 docker save 명령을 사용하여 로컬 등록표에서 이미지를 다운로드하고 docker load 명령을 통해 미니쿠버의 docker 등록표에 불러옵니다
    또는
  • 두 번째 부분에서 보여준 docker build 명령을 사용하여 미니쿠브의 등록표에 이미지를 다시 구축하면 더욱 빠르고 쉽다. 왜냐하면 우리는 매번 전체 이미지를 저장하거나 불러오지 않기 때문이다.
  • 주의: 미니쿠브의 docker 등록표와 상호작용을 하려면 ENV 변수를 변경해야 합니다. 다음 명령을 실행하면 쉽게 완성할 수 있습니다.eval $(minikube docker-env) 따라서 미니쿠버 등록표에 따라 이미지를 구축하려면 아래 명령을 실행하십시오
    섹션
    ~/django-on-k8s$ eval $(minikube docker-env)
    ~/django-on-k8s$ docker build -t django-example:v1.0 .
    
    마지막으로 실행을 통해
     docker images
    
    다음 그림과 비슷한 내용을 표시합니다

    현재 Google은 Google 프로그램을 Kubernetes에 배치해서 어떻게 실현하는지 보여 드리려고 합니다.

    쿠베르네트스에 배치


    Kubernetes에서 가장 작은 대상은'Pod'이다. 이것은 함께 실행되는 용기 집합이고 하나 이상의 Pod(같은 용기 이미지)는 부본 집합으로 배치를 형성한다. 따라서 우리는 하나의 배치를 만들 것이다. 그 중 하나는 부본 계수가 1이고 우리는 우리의 이미지를 용기 이미지로 사용할 것이다.
    Dell은 django-example_initial.yaml를 사용하여 이러한 이점을 실현합니다.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: django-example
      labels:
        app: django-example
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: django-example
      template:
        metadata:
          labels:
            app: django-example
        spec:
          containers:
          - name: web-app
            image: django-example:v1.0
            ports:
            - containerPort: 80
    
    그래서 우리는 복제 세트와 용기 django-example, 우리의 web-app 이미지를 바탕으로 80 포트를 내보내는 배치 django-example 를 만들었다.
    따라서
    kubectl apply -f django-example_initial.yaml
    
    너는 아래의 출력을 받아야 한다

    그리고 배치 상태를 점검해 봅시다.
     kubectl get deploy
    
    다음 그림과 같이 배치가 준비된 것을 보실 수 있습니다.

    애플리케이션에 연결


    현재 배치가 끝났습니다. 웹 응용 프로그램으로 내비게이션을 해야 합니다. 두 가지가 필요합니다.
  • 네트워크 배포 공개
  • IP 확보
  • 미니쿠버 네트워크로 통하는 터널 열기
  • 1. 공개 배포


    Kubernetes에 공개 배치를 알려야 합니다. 그러면 저희 네트워크에서 상호작용을 할 수 있고, 포트가yaml 파일에서 알고 있기 때문에 아래 명령을 통해 간단하게 실현할 수 있습니다.
    kubectl expose deployment django-example
    

    2. 크레인 IP 획득


    공개 배포 후 IP를 통해
    kubectl get services
    
    IP는

    현재, 새로운 브라우저 창을 열고 http://IP/ 로 이동하면 Pod에 연결할 수 없습니다. 미니쿠브 네트워크에 루트가 없기 때문에 터널을 열어야 합니다. 다음 절과 같습니다.

    3. 터널 열기


    미니 kube의 컨테이너는 docker 컨테이너 아래에서 운행하기 때문에, 그 네트워크는 CIDR이기 때문에, 우리는 그것들에 도달할 수 있도록 노선을 변경해야 한다. 이것은 아래 명령을 통해 완성할 수 있다
    minikube tunnel
    
    주의: sudoer 계정이 필요합니다. 이 명령은 계속 실행될 것입니다. 아래와 같습니다.

    따라서 브라우저 창에 들어가기 전에 열고 새로 고치면 프로그램의 로그인 페이지를 볼 수 있고 다음과 같이 로그인할 수 있습니다.

    장점: 인터넷 공개 서비스


    이것은 Mini Kube에서 작동하지 않습니다. Kubernetes는 하나의 용기 아래에서 PC에서 작동하지만, 실제 생산 환경에서 Kubernetes는 네트워크에서 접근할 수 있는 서버에서 실행될 것입니다. 따라서 서비스를 네트워크에 공개하려면 다음과 같은 'NodePort' 를 사용할 수 있습니다.
    kubectl expose deployment django-example --type NodePort
    
    를 사용하여 서비스 목록에서 포트 가져오기
    kubectl get service
    
    출력은 다음과 같다.

    Minikube에서 실행할 수 있습니다
    $ minikube ip
    192.168.49.2
    
    새 브라우저 창을 열고
    http://192.168.49.2:31394
    
    아래와 같은 웹 응용 프로그램에 접근할 수 있습니다.

    주: 실제 환경을 모의하는 터널은 필요 없어요.

    우리가 만든 것을 치우다


    kubectl delete service django-example
    kubectl delete deploy django-example
    

    마무리


    현재 Google 웹 응용 프로그램이 Kubernetes에서 실행되고 있습니다. 접근할 수 있습니다. 그러나 웹 응용 프로그램에 사용자를 추가하기 시작하면 용기가 실패하고 데이터베이스가 분실됩니다. 이것은 웹 응용 프로그램에 있어서 받아들일 수 없는 것입니다. 다음 부분은 용기 리셋 사이에 데이터베이스 파일을 오래 저장하는 방법을 보여 드리겠습니다. 따라서 계속 관심을 가져 주십시오.

    좋은 웹페이지 즐겨찾기