일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- aws #engineer
- mongodb operator
- httpd실행
- 초간단파이썬
- ioredirection
- multivm
- DOIK
- Engineer
- Strimzi
- docker
- k8s
- 파이썬
- Vagrant
- python
- devops #jenkins
- container
- 컨테이너
- nginx
- variable
- 쿠버네티스
- 도커
- springboot
- Kubernetes
- java
- linux
- namespace
- devops #engineer
- RSS
- bash
- WEB
- Today
- Total
목록Container/Kubernetes 기본 (9)
샤인의 IT (막 적는) 메모장
네임스페이스 리소스 관리를 위한 ResourceQuota와 LimitRange에 대해 알아본다. ResourceQuota는 네임스페이스, LimitRange는 각 컨테이너에 대한 자원을 제한한다. ResourceQuota #ResourceQuota 오브젝트 apiVersion: v1 kind: ResourceQuota metadata: name: mem-cpu-demo spec: hard: requests.cpu: "1" #Request 정보 requests.memory: 1Gi limits.cpu: "2" # Limit 정보 limits.memory: 2Gi pods: "2" # 파드 수 제한 #리소스 쿼타 생성하고 해당 resourceQuota 리소스의 status를 확인하면 현재 사용 중인 정보를 ..
Label Label은 Object에 첨부된 키와 값의 쌍이다. Object의 특성을 식별하는 사용하지만 시스템에 직접적인 의미는 없다. 유효한 Label값 63자 이하, 시작과 끝은 영숫자, '-', '_', '.' 사용 가능 ... metadata: name: my-pod labels: app: my-app spec: ... Annotation Annotation은 임의의 비-식별 메타데이터를 오브젝트에 첨부할 수 있다. 키와 값은 문자열이어야 하며 각각 기록할 수 있는 정보들은 다르게 사용할 수 있다. 예를 들어 빌드 정보, 릴리스 날짜, 타임스탬프, Git 정보, 디버깅 정보 등등.. 개발자가 추가할 수 도 있고 다른 오픈소스에서도 해당 어노테이션을 통하여 설정정보를 입력하기도 한다. (Annot..
Namespace는 클러스터 내에서 리소스 그룹을 격리하는 환경을 제공한다. 동일한 네임스페이스 내에서 리소스를 구별하기 위해서 Label을 사용함. 초기 클러스터 구성 시 생성되는 네임스페이스는 4가지 default - 다른 네임스페이스가 없는 오베직트를 위한 기본 네임스페이스 kube-system - 쿠버네티스 시스템에서 생성한 오브젝트를 위한 네임스페이스 kube-public - 모든 사용자가 읽기 권한으로 접근, 클러스터 중 읽을 수 있는 리소스를 위해 예약되어 있음 kube-node-lease - scale될 때 노드 하트비트의 성능을 향상시키는 노드와 관련된 lease 오브젝트 네임스페이스는 서비스를 생성할 때 DNS 엔트리가 생성된다. ..svc.cluster.local # Namespace..
오브젝트란 K8s 시스템에서 영속성(Persistent)를 가지는 오브젝트 K8s에서 클러스터 상태를 나타내기 위하여 오브젝트를 사용한다. 오브젝트를 통해 클러스터 상태를 나타내기 위하여 구체적으로 말하면 다음과 같음. 1. 어떤 컨테이너화 된 App이 동작 중인가? 2. 컨테이너화 된 App이 사용하는 리소스는 무엇인가? 3. 컨테이너화 된 App이 재구동 정책, 업그레이드, 내고장성 같은 것들을 어떻게 동작해야 하는가? 오브젝트를 생성, 수정, 삭제 등 이용하기 위해서 K8s API를 이용해야 함. 오브젝트는 크게 spec 과 status로 나눌 수 있는데 spec은 리소스의 원하는 특징에 대해서 설정하는 필드 status는 K8s 시스템 컴포넌트에 의해 제공되고 업데이트 된 현재 상태를 설명하는 필..
K8s 네임스페이스의 공식적인 Official 정의는 쿠버네티스의 물리 클러스터에 가상 클러스터를 지원하는데 이 가상 클러스터를 네임스페이스라고 부른다고 명칭 구조화된 인프라 환경에서 개발-검증-운영으로 나눌수 있는데(하나의 물리적인 클러스터라고 가정시) dev-namespace / verif-namespace / oper-namespace 이런식으로 각각의 네임스페이스를 만들고 해당 네임스페이스에서 각각의 작업을 수행할 수 있다. 생성은 단순하다. #Create Namespace kubectl create ns my-namespace YAML도 단순한데 크게 설정하는 부분은 없다. apiVersion: v1 kind: Namespace metadata: creationTimestamp: null nam..
쿠버네티스가 직접 관리하는 사용자 계정 인증방법으로는 기본 RootCA 인증서, Key를 통한 인증, TLS 인증, Bearer Token 지원 Bearer Token은 HTTP 헤더에 포함하여 인증하기 때문에 JWT(JSON Web Token)을 사용하는데 BASE64로 인코딩 되어 있음 (sa.key, sa.pub) 생각보다 오픈소스 배포할 때 굉장히 많이 사용하는데 SA 생성 -> Clusterrole 생성 -> Clusterrolebinding 연결 작업이 많다. #ServiceAccount 생성 kubectl create sa -n #ServiceAccount 확인 kubectl get sa -n #생성 후 yaml 확인 kubectl get sa default -n kube-system -oy..
기본 구조. Kubernetes에서 배포할 때 기본적으로 Deployment나 Statefulset을 이용하여 Pod를 배포한다 Pod는 하나의 컨테이너 뿐 아니라 내부에 복수 컨테이너를 집어넣어 배포할 수 있다. 예로들면 개발자가 App을 만들어 이미지로 만들고(Dockerfile) App이 올라가는 곳이 파드이다. 보통 Pod만 배포해서 사용하지 않고 그 Pod들을 관리하기 위해 Deployment나 Statefulset을 사용한다. Deployment = Stateless Pod 배포 리소스 Statefulset = Stateful Pod 배포 리소스 Stateless와 Stateful에 대해서 알아야하는데 해석 그대로 상태를 가지냐 안가지냐로 나뉜다. 나는 주로 데이터를 저장하느냐 안하느냐로 St..
쿠버네티스는 Container Orchestration Framework로 컨테이너를 조화롭게 해주는 틀을 제공항한다. 앞전에 도커 설명할 떄 Host 위에 바로 컨테이너가 올라가는 것과 같이 이렇게 올라가는 컨테이너들을 관리해준다. 주요기능으로 서비스 디스코버리, 셀프 힐링, 로드밸런싱, 롤링업데이트를 지원한다. (K8s 리소스의 기능들) 여기서 쿠버네티스에서 사용하는 컴포넌트와 오브젝트에 대해 알아보면 kube-api-server : 모든 요청을 처리하는 API 서버 etcd : 분산 데이터 키-값 저장소, 클러스터의 모든 설정 및 상태 저장 kube-controller-manager : K8s의 모든 리소스를 관리하는 역할 수행 cloud-controller-manager : 퍼블릭 클라우드에 특화..
Container란 무엇일까요? 보통 VM과 비교하여 많이 설명되긴 하지만 더 깊게 알아볼 필요가 있습니다. VM은 아키텍처 중간에 하이퍼바이저(Hypervisor)라 불리우는 요소가 격리된 환경을 구성해주기 위해 올라가고 Container는 Container Engine이 올라가는 형태입니다. 하이퍼바이저는 VMware, Citrix, Nutanix등 가상화 업체가 유명하고 컨테이너런타임은 그 유명한 Docker가 있습니다. 그런데 왜 VM보다 Container가 더 가볍고 빠르다고 말하는 것일까요? 그 이유는 Hypervisor는 App을 올리기 위해 다시 OS를 설치하는 과정이 중간에 있습니다. OS 위에 하이퍼바이저를 위한 OS를 다시 설치해서 App을 배포하는 것과 OS 위에 Container ..