Kubernetes

    [Amazon] EC2 인스턴스에 S3 스토리지 마운트하기

    구성환경 EC2 인스턴스 3대입니다. OS는 Redhat CentOS 7.8 version을 사용했습니다. Amazon S3에 파일 시스템을 위한 플러그인들 S3FS-FUSE 이것은 무료 오픈 소스 FUSE 플러그인이며 주요 Linux 배포판 및 MacOS를 지원하는 사용하기 쉬운 유틸리티입니다. S3FS는 또한 성능을 향상시키기 위해 파일을 로컬로 캐싱합니다. 이 플러그인은 단순히 Amazon S3 버킷을 시스템의 드라이브로 표시합니다. ObjectiveFS ObjectiveFS는 Amazon S3 및 Google Cloud Storage 백엔드를 지원하는 상용 FUSE 플러그인입니다. 전체 POSIX 호환 파일 시스템 인터페이스를 제공한다고 주장하므로 추가 기능이 전체 파일을 다시 쓸 필요가 없습니다..

    [Kubernetes 공식문서 파헤치기] 고가용성 테스트(pod 부하분산, auto scaler 적용하기)

    앞의 내용에서 이어서 진행합니다. [Kubernetes 공식문서 파헤치기] Redis를 사용한 PHP 방명록 애플리케이션 배포하기 + PV, PVC, Affinity 사용해보기 고가용성 고가용성이란 "서버, 네트워크, 프로그램같은 시스템이 절대 고장나지 않고 오랫동안 유지하는 능력"을 얘기합니다. 그럼 쿠버네티스에서의 고가용성 또한 다르지 않을겁니다. 그럼 쿠버네티스가 고장나는 상황은 무엇일까요? 1. 사용자가 많아져서 서버가 제 역할을 하지 못한다. 2. 애플리케이션이 동작하는 도중에는 예상치못한 중지들이 생길 수 있다. 3. 관리자가 쿠버네티스를 관리하다가 실수로 pod, node들을 중지시킬 수 있다. 4. 클라우드 제공 업체에서 제공해주는 클러스터에 대한 자원이 부족할 때 해결 방안 1번에 대한 ..

    [Kubernetes 공식문서 파헤치기] Redis를 사용한 PHP 방명록 애플리케이션 배포하기 + PV, PVC, Affinity 사용해보기

    원래는 react와 node js, mysql을 이용한 웹 어플리케이션을 돌리기로 마음을 먹었었지만, 1. 가상머신의 고정 용량으로 설정한 하드디스크의 용량 부족.. 2. 메인 컴퓨터의 docker 오류와 docker image build가 안됨 이러이러한 이유들로 kubernetes에서 제공해주는 image들을 사용하기로 마음먹고 공식문서에 있는 Redis와 PHP로 방명록 애플리케이션을 만드는 것으로 쿠버네티스의 고가용성을 테스트하기로 마음먹었습니다. 전체적인 틀 1. 방명록을 저장하는 단일 인스턴스 Redis 마스터 (pod 한 개) 2. 읽기를 제공하는 여러 개의 복제된 Redis 인스턴스 (pod 두 개) 3. 여러 개의 웹 프론트엔드 인스턴스 (pod 세 개) 까지가 공식문서에 나와있는 것입니..

    Kubespray와 Ansible을 이용한 Kubernetes 설치하기 - 4편

    아래의 포스트들은 저 혼자 kubernetes에 대한 이해와 실습을 위해서 시행착오들을 적어놓은 포스트들입니다. 완벽하지 않고 순서가 뒤죽박죽임을 알아주시고 참고해주시면 감사하겠습니다! Mysql Docker Image를 이용해서 React-Node.js-MySQL 애플리케이션 구현해보기 1. React 설치 2. Node.js 설치 3. React와 Node.js 동시 구동 4. mySQL image pull하기 5. mySQL, React, Node.js 연동하기 React와 Node.js 애플리케이션 Docker image build 6. React-Node.js image 생성하기 Kubespray와 Ansible을 이용한 Kubernetes 설치하기 - 1편 7. 가상머신을 통해 멀티 노드 환경..

    Kubespray와 Ansible을 이용한 Kubernetes 설치하기 - 2편

    아래의 포스트들은 저 혼자 kubernetes에 대한 이해와 실습을 위해서 시행착오들을 적어놓은 포스트들입니다. 완벽하지 않고 순서가 뒤죽박죽임을 알아주시고 참고해주시면 감사하겠습니다! Mysql Docker Image를 이용해서 React-Node.js-MySQL 애플리케이션 구현해보기 1. React 설치 2. Node.js 설치 3. React와 Node.js 동시 구동 4. mySQL image pull하기 5. mySQL, React, Node.js 연동하기 React와 Node.js 애플리케이션 Docker image build 6. React-Node.js image 생성하기 Kubespray와 Ansible을 이용한 Kubernetes 설치하기 - 1편 7. 가상머신을 통해 멀티 노드 환경..

    React와 Node.js 애플리케이션 Docker image build하기

    아래의 포스트들은 저 혼자 kubernetes에 대한 이해와 실습을 위해서 시행착오들을 적어놓은 포스트들입니다. 완벽하지 않고 순서가 뒤죽박죽임을 알아주시고 참고해주시면 감사하겠습니다! Mysql Docker Image를 이용해서 React-Node.js-MySQL 애플리케이션 구현해보기 1. React 설치 2. Node.js 설치 3. React와 Node.js 동시 구동 4. mySQL image pull하기 5. mySQL, React, Node.js 연동하기 React와 Node.js 애플리케이션 Docker image build 6. React-Node.js image 생성하기 Kubespray와 Ansible을 이용한 Kubernetes 설치하기 - 1편 7. 가상머신을 통해 멀티 노드 환경..

    쿠버네티스 podSpec의 호스트(host)에 대해서

    ※주의 이 글은 제가 혼자 공부하면서 여기저기 찾아보고 정리하는 곳이라서 글의 퀄리티나 내용상 맞지 않는 부분들이 있습니다. 공식문서가 더욱 더 큰 도움이 될 수 있습니다! 궁금점 podSpec에 명세 해주는 호스트의 default값은 무엇일까 그리고 설정은 어떻게 할까? docker-compose의 user의 이름을 설정해줄 때에는 user 라는 필드를 통해서 사용을 했다. 쿠버네티스에는 어떻게 될까? 행동 파드 스펙(Pod spec)에는 선택적 필드인 hostname이 있다. 이 필드는 파드의 호스트네임을 지정할 수 있다. hostname 필드가 지정되면, 파드의 이름보다 파드의 호스트네임이 우선시된다. 예를 들어 hostname 필드가 "my-host"로 설정된 파드는 호스트네임이 "my-host"..

    쿠버네티스 네트워킹(networking)과 포트 포워딩(port forwarding)에 대해서

    ※주의 이 글은 제가 혼자 공부하면서 여기저기 찾아보고 정리하는 곳이라서 글의 퀄리티나 내용상 맞지 않는 부분들이 있습니다. 공식문서가 더욱 더 큰 도움이 될 수 있습니다! 궁금점 쿠버네티스에서 네트워킹은 어떤 식으로 진행되고, 어떻게 연결되며 포트 포워딩에 대해서 궁금했다. 행동 쿠버네티스 클러스터 네트워킹 쿠버네티스에는 4가지 대응해야 할 네트워킹 문제가 있는데 1. 고도로 결합된 컨테이너 간의 통신 2. 파드 간 통신 3. 파드와 서비스 간 통신 4. 외부와 서비스 간 통신 서비스에 대해서 3,4번에 대해서 알기 위해서는 우선 서비스를 알아야 한다. 쿠버네티스에서 서비스는 파드의 논리적 집합과 그것들에 접근할 수 있는 정책을 정의하는 추상적 개념이다. 서비스가 대상으로 하는 파드 집합은 일반적으로 ..

    쿠버네티스 레플리카셋(replicaset)의 실패 복구(failover)와 proxy에 대해서

    ※주의 이 글은 제가 혼자 공부하면서 여기저기 찾아보고 정리하는 곳이라서 글의 퀄리티나 내용상 맞지 않는 부분들이 있습니다. 공식문서가 더욱 더 큰 도움이 될 수 있습니다! 궁금점 레플리카셋이 만약에 3이면 3개의 pod를 동시에 실행하는 것인데, 동시에 실행한다라는 말이 조금 와닿지 않는다. 그리고 동시에 실행했을 때 어느 하나의 pod에 접근을 한다면 3개중에 어느 pod에 접근을 하는 것인가? 또, 세 개중 하나가 오류가 나서 재실행을 할 때에는 정확히 어떤식으로 동작하는가? 행동 정말 궁금했던 내용들인데.. 위의 궁금점들이 공식사이트의 ReplicaSet 파트에 나오는 것이 아니라, ReplicaSet으로 생성된 복제된 pod들의 HTTP 요청에 대한 내용은 Service에서 나온다고 합니다.. ..

    쿠버네티스 스케줄러 : 노드(node)에 파드(pod)의 배치 방법

    ※주의 이 글은 제가 혼자 공부하면서 여기저기 찾아보고 정리하는 곳이라서 글의 퀄리티나 내용상 맞지 않는 부분들이 있습니다. 공식문서가 더욱 더 큰 도움이 될 수 있습니다! 궁금점 클러스터 안에 단일 노드가 아닌 멀티 노드일때, 파드 생성 시 어떤 방식으로 파드가 노드에 배치가 되고 파드는 노드를 어떻게 선택할까? 행동 1. 멀티 노드일 때 파드 생성 시 아무것도 지정안해줬을 때에 파드는 무슨 노드에 배치가 될까? 2. pod를 생성할 때 pod의 spec에 여러 조건을 추가함으로써 원하는 노드에 배치를 할 수 있습니다. 마스터 컴포넌트(컨트롤-플레인 컴포넌트)에서 kube-scheduler 라는 컴포넌트가 pod가 할당 될 노드를 결정합니다. 우리가 kubectl apply 등의 명령어를 통해서 사용자..

    쿠버네티스 "kubectl get all" 명령어에 나오는 모든 것들에 대해서

    ※주의 이 글은 제가 혼자 공부하면서 여기저기 찾아보고 정리하는 곳이라서 글의 퀄리티나 내용상 맞지 않는 부분들이 있습니다. 공식문서가 더욱 더 큰 도움이 될 수 있습니다! 궁금점 kubectl get all 명령어를 입력했을 때 나오는 목록들의 의미를 알고싶었습니다. 행동 Pod NAME 이 부분은 kubectl get pods / kubectl get pod 로도 얻을 수 있는 부분입니다. 둘의 차이점은 kubectl get all 명령어는 오브젝트를 구분해주기 위해 앞에 오브젝트의 이름이 붙고 그 다음에 name이 붙습니다. kubectl get all = pod / pod의 name kubectl get pod = pod의 name READY READY 필드는 파드(pod)에 몇 개의 컨테이너가 ..

    쿠버네티스 YAML 파일 작성 시 실행 순서에 대해서

    ※주의 이 글은 제가 혼자 공부하면서 여기저기 찾아보고 정리하는 곳이라서 글의 퀄리티나 내용상 맞지 않는 부분들이 있습니다. 공식문서가 더욱 더 큰 도움이 될 수 있습니다! 궁금점 YAML 하나의 파일안에 여러 개의 오브젝트를 생성했을 때, 실행 순서는 위에서부터 아래로 생성이 될까? 행동 apiVersion: apps/v1 kind: Deployment # deployment metadata: name: jenkins # deployment의 이름 = jenkins labels: app: MyApp # deployment의 레이블 = MyApp spec: replicas: 1 # 최대 생성 pod 개수 selector: matchLabels: app: MyApp # MyApp이라는 레이블을 가진 con..