일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 웹
- kubernetes
- docker
- 클라우드
- 이더리움
- 자바스크립트
- node.js
- 리액트
- HTML
- 쿠버네티스
- react
- CSS
- 이슈
- 블록체인
- TypeScript
- es6
- 컴퓨터공학
- 솔리디티
- 타입스크립트
- 가상화
- next.js
- JavaScript
- k8s
- 알고리즘
- 프론트엔드
- AWS
- BFS
- 백준
- 백엔드
- 파이썬
- Today
- Total
목록쿠버네티스 (7)
즐겁게, 코드
@kubernetes/client-node 라이브러리를 통해 웹 콘솔로 쿠버네티스를 제어할 수 있는 프로젝트를 계획중이었는데, 약 일주일간의 데모 스크럼 이후 결과적으로 불가능에 가깝다는 결론을 내리게 되어 이번 글에서 그 이유를 정리해보려 합니다. 프로젝트 기획 배경 쿠버네티스의 학습 난이도와 더불어 개인적으로는 쿠버네티스를 GUI로 지원하는 툴이 아직 많이 부족하다고 느꼈습니다. 또한 공식 쿠버네티스 대시보드와 lens 역시 리소스의 조회만을 지원하고, 생성은 불가능한 것으로 파악해 CRUD를 모두 지원하는 어플리케이션은 충분히 수요가 있을 것이라 생각했습니다. @kubernetes/client-node @kubernetes/client-node 라이브러리는 쿠버네티스에서 제공하는 공식 SDK로, 쿠..
쿠버네티스에서 파드 내 컨테이너의 이미지 이름만 알아내고 싶었던 경우가 있었습니다. 이를 위해 --ouput 플래그를 활용해 결과값을 json 또는 yaml로 포맷팅해 상세 정보를 확인할 수도 있지만, 대부분의 템플릿은 너무나도 방대한 양의 정보를 담고 있어 원하는 정보를 찾기 쉽지 않습니다. 디플로이먼트를 yaml 포맷으로 출력할 경우 apiVersion: apps/v1 kind: Deployment metadata: ... spec ... template: metadata: creationTimestamp: null labels: app: first-app spec: # 약 50줄 가까이의 yaml 템플릿 안에서 찾는 내용을 발견해야 합니다. containers: - image: spacesangso..
CLI 환경에서 쿠버네티스를 조작하다 보면 불편한 점이 종종 생기는데요, 오늘은 쿠버네티스를 조금이라도 더 간편하게 사용하기 위한 방법들을 소개해보려 합니다. 리소스 이름 축약어 사용하기 리소스 이름은 축약어를 사용할 수 있습니다. 자주 사용되는 리소스 축약어 목록 node → no pod → po deployment → deploy service → svc namespace → ns configmap → cm 추가적으로 필요한 리소스들의 축약어 목록은 공식 문서 - 리소스 타입 에서도 확인해볼 수 있습니다. 커맨드 앨리어스 지정하기 kubectl 커맨드를 매번 입력하는 대신 .zshrc 또는 .bash_profile 등의 에디터 설정 파일에서 앨리어스를 지정하면 보다 편하게 커맨드를 작성할 수 있습니다..
헬름을 통해 얻을 수 있는 장점 중 하나는 개발자가 사용할 이미지 및 포트 번호 등의 값을 하드코딩할 필요 없이 변수화해 사용할 수 있다는 것입니다. 설치 링크 에서 헬름을 설치한 다음, helm create 을 통해 새로운 헬름 차트 를 생성합니다. ✅ TIP - 헬름 차트란? 헬름 차트는 작성한 어플리케이션(디플로이먼트, 서비스 등의 YAML 템플릿 조합)을 쿠버네티스의 패키지 형태로 제작한 결과물이며, 생성한 헬름 차트는 퍼블릭 또는 프라이빗 레포지토리에 업로드해 다른 사람(팀원)들과 공유할 수 있습니다. 이제 헬름으로 변수화된 값의 템플릿을 만든 후 이를 기반으로 파드를 만들어 보겠습니다. 파드 템플릿 예시 (헬름 사용 전) apiVersion: v1 kind: Pod metadata: name:..
한번 500MB의 메모리를 갖고 있는 워커 노드 A가 있다고 가정해 보겠습니다. 그런데 어떤 파드가 실행되어 스케줄러가 이를 배치하려 할 때, 만약 파드가 사용할 메모리가 1GB를 넘어선다면 이 파드는 노드 A에 배치될 수 있을까요? 스케줄러가 파드를 효과적으로 배치하려면 각 파드가 최소 / 최대로 사용하고자 하는 자원이 어느 정도인지를 알고 있어야 할 텐데요, 쿠버네티스는 여러 종류의 자원 중 CPU와 메모리를 관리할 수 있습니다. ✅ 다만 CPU와 메모리 사용량 외에 디스크 I/O 작업(IOPS)이나 네트워크 대역폭 등의 정보는 알지 못합니다. 이번 글에서는 컨테이너에서 사용할 CPU 및 메모리를 관리하는 방법인 리소스 요청 / 제한에 대해 소개해보도록 하겠습니다. 리소스 요청 및 제한 쿠버네티스의 ..
여러분의 멋진 서비스가 컨테이너 위에서 실행 중이라고 가정하겠습니다. 그런데, 만약 프로그램에 오류가 발생하거나 컨테이너가기동중인 환경에 문제가 생겨 컨테이너가 의도치 않게 중단된다면 어떨까요? 만약 이런 일이 발생한다면 관리자가 직접 터미널을 열고 docker run을 다시 입력할 때까지 서비스가 중단되는 걸까요? 쿠버네티스를 사용하면 컨테이너가 불의의 사고로 중단되더라도 관리자가 복구 커맨드를 입력할 때까지 기다릴 필요 없이, 마치 오뚜기처럼 컨테이너를 다시 실행해 장애를 최소화합니다. 쿠버네티스의 고가용성을 책임지는 오늘의 주인공, 디플로이먼트(Deployment)와 레플리카셋(ReplicaSet)을 소개해보도록 하겠습니다. 디플로이먼트 (Deployment) 디플로이먼트는 쿠버네티스가 관리해야 ..
여러 개발 도구들 중에서도 쿠버네티스는 어려운 축에 꼽히는데요, 쿠버네티스를 이해하려면 먼저 클러스터를 구성하는 기본 구성 요소들에 대해 알아야 합니다. 이번 글에서는 클러스터를 구성하는 컴포넌트들과 각각의 역할을 간단히 정리해보도록 하겠습니다. 메인 쿠버네티스 컴포넌트 목록 제가 아직 사용해보지 않은 DaemonSet 등 일부 쿠버네티스 컴포넌트는 이 글에서 다루지 않지만, 주로 사용되는 컴포넌트를 정리해 보았습니다. (정리되지 않은 컴포넌트 역시 추후 추가할 수 있도록 해보겠습니다. 🙂) Pod Pod(파드)는 쿠버네티스의 가장 작은 유닛으로, 컨테이너를 감싸 추상화한 결과물을 의미합니다. 주로 1개 파드에서 1개 어플리케이션을 운영하며, 각 파드는 고유한 내부 IP 주소를 부여받아 노드 내에서 파드..