Container 62

[Docker] docker-compose 부팅 시 자동 실행

docker-compose 부팅 시 자동 실행 vi /etc/systemd/system/docker-compose.service 을 입력하여 아래 파일을 작성 합니다. service에 등록시키는 과정 입니다. [Unit] Description=Docker Compose Application Service Requires=docker.service After=docker.service [Service] Type=oneshot RemainAfterExit=yes WorkingDirectory=/docker ExecStart=/usr/local/bin/docker-compose up -d ExecStop=/usr/local/bin/docker-compose down TimeoutStartSec=0 [Insta..

Container/Docker 2020.03.20

[Docker] 도커 SCP 사용 시 Permission denied 에러 발생

도커 SCP 사용 시 Permission denied 에러 발생 docker-machine을 통해 scp를 사용할 때 Permission denied 에러가 발생할 수 있습니다. 기본적으로 docker-machine은 scp 사용 시 docker-user 계정을 사용하게 되므로, scp를 통해 업로드할 노드(서버)의 경로에 docker-user 계정에 대한 권한을 부여해주어야 합니다. 아래 이미지와 같이 해당 디렉토리에 쓰기 권한을 부여하거나 chown를 사용하여 docker-user에 대한 권한을 추가 해주면 Permission denied 에러를 해결할 수 있습니다.

Container/Docker 2020.03.18

[Docker] 도커 GCP docker host 프로비저닝 시 "error with pre-create check" 에러 발생

도커 GCP docker host 프로비저닝 시 "error with pre-create check" 에러 발생 GCP에 docker host를 프로비저닝 할 때 "error with pre-create check" 에러가 발생할 수 있습니다. 에러 발생을 유발시키는 명령과 에러 메세지는 아래와 같습니다. 에러 발생 명령어 docker-machine create --driver google \ --google-project Docker-Project \ --google-zone asia-northeast3-a \ --google-machine-type f1-micro \ docker-web 에러 메세지 (docker-web) Check that the project exists Error with pre..

Container/Docker 2020.03.18

[Kubernetes] 쿠버네티스 볼륨 개념 2편 (PersistentVolume, PersistentVolumeClaim)

쿠버네티스 볼륨 개념 1편 (emptyDir, hostPath) : https://nirsa.tistory.com/156?category=871751 쿠버네티스 PV (Persistent Volume)와 PVC (persistent Volume Claim) 이란? PV는 관리자에 의해 생성된 볼륨을 뜻하고, PVC는 사용자가 볼륨을 사용하기 위해 PV에 요청을 하게 됩니다. 컨테이너의 /var/log/test.log 디렉토리를 워커노드의 /tmp/log_backup 경로에 PVC와 PV 설정을 하면 아래와 같은 형태가 될 수 있습니다. PV와 PVC의 Lifecycle PV와 PVC는 크게 4가지 정도의 Lifecycle을 가집니다. 1. 프로비저닝 (provisioning) 정적(static) 또는 동..

[Kubernetes] 쿠버네티스 볼륨 개념 1편 (emptryDir, hostPath)

볼륨을 사용해야하는 이유? 컨테이너 특성 상 어떠한 문제가 발생하여 컨테이너가 삭제 된다면 데이터도 같이 삭제 됩니다. 웹 소스 파일의 경우 이미지에 들어있어 삭제 되더라도 상관 없겠지만(컨테이너에서 웹소스를 변경하지 않는 이상) 로그 파일을 보관해야 한다거나, 데이터 베이스를 사용할 경우 실시간으로 생성되던 데이터가 사라지면 큰 장애가 발생 합니다. 이러한 이유로 컨테이너를 사용할 때 중요한 데이터가 있다면 볼륨을 사용하여 데이터를 보관해주어야 합니다. 1-1. emptryDir 개념과 예시 코드 emptryDir은 Pod가 사라지면 볼륨도 같이 삭제되는 임시 볼륨의 성격을 가지고 있고 Pod가 실행되는 디스크의 공간에 볼륨 마운트를 하게 됩니다. 위의 이유로 Life cycle이 컨테이너가 아닌, P..

[Kubernetes] 쿠버네티스 RBAC-클러스터롤바인딩(clusterrolebinding) 개념 및 설정

RBAC 개념 및 롤바인딩 : https://nirsa.tistory.com/154 쿠버네티스 클러스터롤바인딩(clusterrolebinding) 이란? 클러스터롤은 특정 API나 리소스(pod,deploy 등), 사용권한(get, edit 등)을 매니페스트 파일에 명시해둔 규칙의 집합이 되며 클러스터 전체 사용 권한을 설정 해줍니다. 롤은 특정 네임스페이스의 권한만을 주므로 롤과 클러스터롤은 차이점이 있습니다. 클러스터롤바인딩은 사용자와 클러스터롤을 묶어주는 역할을 수행하고, 지정한 사용자들에 한해서 롤에 명시한 규칙들을 기준으로 권한을 사용할 수 있도록 관리 합니다. 클러스터롤바인딩 구성 구성전에 간단한 디플로이먼트가 필요하며, 코드가 없으신분들은 아래 코드를 사용하시면 됩니다. apiVersion:..

[Kubernetes] 쿠버네티스 RBAC-롤바인딩(rolebinding) 개념 및 설정

쿠버네티스 RBAC 이란? 쿠버네티스의 RBAC(Role-Based Access Control)은 역할(Role) 기반으로 쿠버네티스 시스템의 권한을 관리 합니다. 특정 사용자(User)와 역할(Role) 두가지를 조합하여 사용자에게 특정 권한을 부여할 수 있습니다. 쿠버네티스 롤바인딩(rolebinding) 이란? 롤은 특정 API나 리소스(pod,deploy 등), 사용 권한(get, edit 등)을 매니페스트 파일에 명시해둔 규칙의 집합이 되며 특정 네임스페이스에 대한 권한을 관리 합니다. 롤바인딩은 위에 설명한 롤과 특정 사용자를 묶어주는 역할을 수행하고, 지정한 사용자들에 한해서 롤에 명시한 규칙들을 기준으로 권한을 사용할 수 있도록 권한을 관리 해줍니다. 예를들어 개발팀에게는 개발 전용 네임스..

[Kubernetes] 쿠버네티스 Docker Hub-Private Image 가져오는 방법

쿠버네티스 Docker Hub-Private Image 가져오는 방법 Private Image를 가져와야 할 때 쿠버네티스의 secret을 이용하면 됩니다. 이 글에서는 Docker Hub을 기준으로 작성 합니다. 우선 Private Image 가져오는 방법인 만큼 아래와 같이 이미 Docker Hub에 이미지가 등록되어 있다는 가정하에 진행 합니다. 쿠버네티스 매니페스트 파일 작성 저는 아래와 같이 간단한 Deployment를 설정해주는 매니페스트 파일(.yaml)을 작성 하였습니다. Private Image를 가져와서 사용할 매니페스트 파일을 vi편집기로 여신 후 spec.template.spec.ImagePullSecrets.name 필드에 임의의 값을 설정 해줍니다. 이 값은 이후 생성할 secr..

[Kubernetes] 쿠버네티스 크론잡(cronjob) 개념

쿠버네티스 크론잡(cronjob) 이란? 크론잡은 매일 오후 6시에 특정 파드를 실행시키는 등 지정한 일정에 따라 잡을 실행 시킬 수 있습니다. 잡을 모를 경우 이전에 업로드한 글을 참고 해주세요. (https://nirsa.tistory.com/142) 크론잡 생성 및 확인 아래 코드는 크론잡과 병렬 잡을 같이 사용하는 코드 입니다.. apiVersion: batch/v1beta1 kind: CronJob metadata: name: pi spec: schedule: "*/1 * * * *" jobTemplate: spec: completions: 3 parallelism: 3 template: spec: containers: - name: pi image: perl command: ["perl", "..

[Kubernetes] 쿠버네티스 잡(job) 개념

쿠버네티스 잡(job) 이란? 잡은 하나 이상의 파드를 지정하고 지정된 수의 파드를 성공적으로 실행하도록 하는 설정 입니다. 노드의 H/W 장애나 재부팅 등으로 인해 파드가 정상 실행이 되지 않았을 경우 job은 새로운 파드를 시작하도록 할 수 있습니다. 즉, 백업이나 특정 배치 파일들처럼 한번 실행하고 종료되는 성격의 작업에 사용될 수 있습니다. 잡 생성 및 확인 아래 코드는 원주율은 2000 자리까지 계산 후 출력해주는 코드 입니다. 저는 경로를 "/root/kubespray/inventory/test/job/"에 test-job.yaml 로 저장 하였습니다. apiVersion: batch/v1 kind: Job metadata: name: pi spec: template: spec: contain..