모든 게시물 보기
![[쿠버네티스 인 액션] 9장 - 디플로이먼트: 선언적 애플리케이션 업데이트](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6oRnZ%2FbtrCiQuAbFH%2Fo6MBXoWO0NbPAJjJ6Z6fS0%2Fimg.png)
[쿠버네티스 인 액션] 9장 - 디플로이먼트: 선언적 애플리케이션 업데이트
파드에서 실행 중인 애플리케이션 업데이트 오래된 파드를 삭제하고 새 파드로 교체 RC의 파드 템플릿을 변경하여 기존 파드를 삭제하여 파드 업데이트 짧은 시간의 다운 타임 존재 새 파드 기동과 이전 파드 삭제 블루-그린 디플로이먼트: 한 번에 이전 버전에서 새 버전으로 전환 새 버전 파드를 불러오는 동안 서비스는 파드의 이전 버전에 연결 새 파드가 모두 실행되면 서비스의 레이블 셀렉터를 변경하여 서비스를 새 파드에 연결 전환 후 새 파드가 정상 작동하면 이전 파드들을 RC를 통해 삭제 롤링 업데이트 : 파드를 단계별로 교체하는 업데이트 이전 RC를 천천히 스케일 다운하고 새 파드를 스케일 업해 수행 서비스의 파드 셀렉터에 이전 파드와 새 파드를 모두 포함하게 해 요청을 두 파드 세트로 보냄 → 수동으로 하..
![[쿠버네티스 인 액션] 8장 - 애플리케이션에서 파드 메타데이터와 그 외의 리소스에 액세스하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlYtaf%2FbtrCkKtkJve%2FDP2Csc5dCOOd4ccWKs0cc1%2Fimg.png)
[쿠버네티스 인 액션] 8장 - 애플리케이션에서 파드 메타데이터와 그 외의 리소스에 액세스하기
Downward API로 메타데이터 전달 “파드 자체의 메타데이터를 해당 파드 내에서 실행 중인 프로세스에 노출 할 수 있게 하는 기능” 파드 매니패스트에 정의한 메타 데이터를 기준으로 볼륨을 정의하고 이를 환경변수에 할당하여 사용 다음 정보를 컨테이너에 전달 가능 -파드의 이름 -파드의 IP 주소 -파드가 속한 네임스페이스 -파드가 실행 중인 노드의 이름 -파드가 실행 중인 서비스 어카운트 이름 -각 컨테이너의 CPU와 메모리 요청 / 제한 -파드의 레이블/ 어노테이션 downwardAPI 볼륨에 파일로 메타데이터 전달하기 환경변수 대신 파일로 메타데이터를 노출하려는 경우 downwardAPI 볼륨을 정의해서 컨테이너에 마운트할 수 있다. downwardAPI 볼륨을 정의하고 컨테이너의 /etc/dow..
![[쿠버네티스 인 액션] 7장 - 컨피그맵과 시크릿: 애플리케이션 설정 (2/2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQZGO8%2FbtrAZfoFsLm%2FKZLZH7a4QXeN4kuqKBeuR1%2Fimg.png)
[쿠버네티스 인 액션] 7장 - 컨피그맵과 시크릿: 애플리케이션 설정 (2/2)
시크릿 “설정 안에 보안이 유지되어야 하는 자격증명과 개인 암호화 키와 같은 민감한 정보를 보관하고 배포하기 위한 키-값 쌍을 가진 오브젝트” 환경변수로 시크릿 항목을 컨테이너에 전달, 시크릿 항목을 볼륨 파일로 노출할 때 사용 시크릿에 접근해야 하는 파드가 실행되고 있는 노드에만 개별 시크릿을 배포해 시크릿을 안전하게 유지 노드 자체적으로 시크릿을 항상 메모리에만 저장 시크릿과 컨피그맵 사용 결정 민감하지 않고, 일반 설정 데이터는 컨피그맵 사용 본질적으로 민감한 데이터는 시크릿을 사용해 키 아래에 보관 민감한 데이터와 그렇지 않는 데이터를 모두 가지고 있다면 해당 파일은 시크릿 안에 저장 기본 토큰 시크릿 소개 “모든 파드에는 시크릿 볼륨이 자동으로 연결되어 있다” 시크릿이 갖고 있는 세 가지 항목은..
![[쿠버네티스 인 액션] 7장 - 컨피그맵과 시크릿: 애플리케이션 설정 (1/2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1URuG%2FbtrA43mt0Su%2F7aGdQ8rhW2DigMLBYvfsm1%2Fimg.png)
[쿠버네티스 인 액션] 7장 - 컨피그맵과 시크릿: 애플리케이션 설정 (1/2)
컨테이너화된 애플리케이션 설정 필요한 모든 설정을 앱에 포함하는 경우를 제외하면 일반적으로 명령줄 인수를 통해 앱에 필요한 설정을 넘겨주면서 앱을 실행 옵션 목록이 커지면 이 옵션들을 파일에 저장하고 사용하거나 서버의 환경변수를 통해 전달 쿠버네티스는 설정 데이터를 최상위 레벨의 리소스에 저장하고 이를 기타 다른 리소스 정의와 마찬가지로 깃 저장소 혹은 다른 파일 기반 스토리지에 저장할 수 있음. 이 리소스를 컨피그맵이라 함. Docker에서 명령어와 인자 정의 Entrypoint : 컨테이너가 시작될 때 호출될 명령어 정의 CMD: Entrypoint에 전달되는 인자 정의 Kubernetes에서 명령어와 인자 재정의 쿠버네티스에서 컨테이너를 정의할 때, ENTRYPOIN와 CMD 둘 다 재정의할 수 있..
![[쿠버네티스 인 액션] 6장 - 볼륨: 컨테이너에 디스크 스토리지 연결](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F11tuc%2FbtrAYuFptw4%2F00AjVbEU8JCTeSJ4SVwodK%2Fimg.png)
[쿠버네티스 인 액션] 6장 - 볼륨: 컨테이너에 디스크 스토리지 연결
Volume “컨테이너의 디스크 스토리지” 파드 구성 요소로 컨테이너와 동일하게 파드 스펙에서 정의됨 독립적인 쿠버네티스 오브젝트가 아니므로 자체적으로 생성, 삭제 x 각 파드의 모든 컨테이너에서 사용 가능하지만 접근하려는 컨테이너에서 각각 마운트되어야 함 *마운트: 물리적인 장치를 디렉토리에 연결시켜 사용 가능하게 하는 것 같은 볼륨을 두 개의 컨테이너에 마운트하면 컨테이너는 동일한 파일로 동작 가능 위의 경우 볼륨 두 개를 세 개의 컨테이너에 마운트하여 컨테이너 세 개는 함께 동작할 수 있고, 유용한 작업 가능 사용 가능한 볼륨 유형 -emptyDir: 일시적인 데이터를 저장하는데 사용되는 간단한 빈 디렉터리 -hostPath: 워커 노드의 파일 시스템을 파드의 디렉터리로 마운트하는데 사용 -gitR..
![[쿠버네티스 인 액션] 5장 - 클라이언트가 파드를 검색, 통신 가능하게 함(2/2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr6q6l%2FbtrvPfOkTet%2FiCksj3gQt8okJ7QkVAKja0%2Fimg.png)
[쿠버네티스 인 액션] 5장 - 클라이언트가 파드를 검색, 통신 가능하게 함(2/2)
Readiness Probe “주기적으로 호출되며 특정 파드가 클라이언트 요청을 수신할 수 있는지 결정” 컨테이너의 레디니스 프로브가 성공을 반환하면 컨테이너가 요청을 수락할 준비가 되었다는 신호 라이브니스 프로브는 상태가 좋지 않은 컨테이너를 제거하고 새롭게 컨테이너 교체하여 파드 상태 유지하지만, 레디니스 프로브는 요청을 처리할 준비가 된 파드의 컨테이너만 요청을 수신 파드의 레디니스 프로브가 실패하면 파드는 엔드포인트 오브젝트에서 제거됨 → 파드의 레이블이 서비스 레이블 셀렉터와 일치하지 않을 때와 같은 효과 파드에 레디니스 프로브를 추가하지 않으면 파드가 시작하는 즉시 서비스 엔드포인트가 된다. 헤드리스 서비스 “클라이언트가 모든 파드에 연결해야 하는 경우나 파드가 다른 파드에 각각 연결해야 하는..
![[쿠버네티스 인 액션] 5장 - 클라이언트가 파드를 검색, 통신 가능하게 함(1/2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbT3RnV%2FbtrvQhrIOfR%2F5JrnNkBlGpbjDdFbMDIkbK%2Fimg.png)
[쿠버네티스 인 액션] 5장 - 클라이언트가 파드를 검색, 통신 가능하게 함(1/2)
서비스 “동일한 서비스를 제공하는 파드 그룹에 지속적인 단일 접점을 만들려고 할 때 생성하는 리소스” 각 서비스는 존재하는 동안 절대 바뀌지 않는 IP주소와 포트가 있음 클라이언트는 해당 IP와 포트로 접속하여 해당 서비스를 지원하는 파드 중 하나로 연결 → 이런 방식으로 서비스의 클라이언트는 서비스를 제공하는 개별 파드 위치 알 필요 x 서비스가 지원하는 파드는 한 개 이상일 수 있음. → 서비스 연결은 뒷단의 모든 파드로 로드밸런싱 됨. → 파드에 레이블 셀렉터로 서비스 지정 동일한 서비스에서 여러 개의 포트 노출 가능 이름이 지정된 포트 사용 가능 서비스 검색 환경변수를 통한 서비스 검색 -파드가 시작되면 쿠버네티스는 해당 시점에 존재하는 각 서비스를 가리키는 환경변수 세트 초기화 -클라이언트 파드..
![[쿠버네티스 인 액션] 4장 - Replication과 그 밖의 컨트롤러 (2/2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAiAxx%2FbtrvUCnZBCv%2FhleMhVgUVKtUwjWZknLa60%2Fimg.png)
[쿠버네티스 인 액션] 4장 - Replication과 그 밖의 컨트롤러 (2/2)
Demon Set “클러스터의 모든 노드에, 노드당 하나의 파드만 실행되길 원하는 경우” ex) kube-proxy 프로세스, 서비스 작동 위해 모든 노드에서 실행되어야 하는 것 Job Job “작업을 완료한 후에는 종료되는 태스크인 완료 가능한 태스크” 파드의 컨테이너 내부에서 실행 중인 프로세스가 성공적으로 완료되면 컨테이너를 다시 시작하지 않는 파드를 실행 노드에 장애가 발생한다면 다른 노드에 파드를 스케줄링하여 실행 → 잡은 한번 완료되면 끝이지만, 한번 완료될때가지 스케줄링 됨. 작업이 제대로 완료되는 것이 중요한 임시 작업에 유용 Cron Job “Job이 미래의 특정 시간 또는 지정된 간격으로 반복 실행될 때 사용” “0,15,30,45 * * * ” : 0,15,30,45(15분 간격) *..
![[쿠버네티스 인 액션] 4장 - Replication과 그 밖의 컨트롤러 (1/2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1KW1a%2FbtrvXVtiJwg%2F2uVkkaEi9AEcbSmy3B8YT1%2Fimg.png)
[쿠버네티스 인 액션] 4장 - Replication과 그 밖의 컨트롤러 (1/2)
파드 안정적 유지 Liveness Probe “liveness probe를 통해 컨테이너가 살아 있는지 확인할 수 있다” Pod의 상태를 체크하다, Pod의 상태가 비정상적인 경우 kubelet을 통해 재시작 컨테이너의 상태를 스스로 판단하여 교착 상태에 빠진 컨테이너를 재시작 버그가 생겨도 높은 가용성을 보임 “/” 경로와 8080 포트에 HTTP GET을 요청해서 컨테이너가 정상 동작하는지 확인 → 다섯 번의 요청 후 HTTP 상태 코드 500 반환 → 프로브 실패 → 컨테이너 재시작 Replication Controller “쉽게 말해 클러스터에서 노드가 사라지거나 노드에서 파드가 제거된 경우, RC가 사라진 파드를 감지해 교체 파드를 생성한다.” RC는 실행 중인 파드 목록을 지속적으로 모니터링하..
![[쿠버네티스 인 액션] 3장 - 쿠버네티스에서 컨테이너 실행 (2/2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdERFia%2FbtruNWBrTpz%2FK8ccDZi9Lcxp9736RP1dK1%2Fimg.png)
[쿠버네티스 인 액션] 3장 - 쿠버네티스에서 컨테이너 실행 (2/2)
YAML 디스크립터 “파드 포함 쿠버네티스 리소스는 쿠버네티스 REST API 엔드포인트에 JSON혹은 YAML로 생성” YAML 디스크립터 Metadata : 이름, 네임스페이스, 레이블 및 파드에 관한 기타 정보 포함 Spec: 파드 컨테이너, 볼륨, 기타 데이터 등 파드 자체에 관한 실제 명세 Status: 파드 상태, 각 컨테이너 설명과 상태, 파드 내부 IP, 기타 기본 정보 등 현재 실행 중인 파드에 관한 현재 정보 포함 레이블, 레이블셀렉터, 어노테이션 레이블 “파드 수가 증가함에 따라 파드를 부분 집합으로 분류하기 위한 방법 → 조직화” 리소스에 첨부하는 키 - 값 쌍으로, 이 쌍은 레이블셀렉터를 사용해 리소스 선택에 활용 레이블은 파드에만 붙힐 수 있는 것은 아님, 모든 쿠버네티스 오브젝..