Giter VIP home page Giter VIP logo

changmink.github.io's Issues

helm chart

helm은 k8s의 패키지 매니저 역할

차트 구조

helm은 차트라고 불리는 포맷을 패키징에 사용한다.

  • Chart.yaml : 차트에 대한 정보를 기술하는 파일
  • values.yaml : 템플릿에서 치환될 값들을 저장하는 파일
  • templates/ : k8s yaml 파일의 템플릿들이 있는폴더. 템플릿들은 차트가 평가 될때 렌더링 엔진으로 보내짐

템플릿

{{ }}사이에 오는 값들을 치환한다. {{ .Release.Name }} 에서 .은 네임스페이스에 있는 요소를 구분한다.

빌트인 오브젝트

Release

Values

Chart

Files

Capabilities

Template

values 파일

기본적으로 values.yaml 파일에 있는 값이 사용 됨. -f file.yaml 옵션으로 install시에 넘길 수 있음. --set a=a으로 value 전달 가능 --set으로 준게 기존 걸 덮어쓰기함.

Template Function and Pipelines

60개 이상의 함수가 있고 Go template language로 정의할 수 있다.

함수 사용

{{ quote .Values.favorite.food }} : quote라는 함수를 적용한다. 이는 값에 쌍따옴표를 붙인다.

파이프 라인 사용

{{ Values.favorite.food | upper | quote }} : upper라는 함수 적용(대문자로 변경) 후 quote 적용

디폴트 함수

drink: {{ .Values.favorite.drink | default "tea" | quote }} : 값이 없으면 "tea"를 사용

WebWork

Pull based - 가지고 와서 상태를 보여줌?
커맨드 패턴기반

Istio

개념

복잡한 클러스터를 관리해주는 서비스 매쉬, Pod들을 관리함(트래픽, 보안, 모니터, 확장). side car 형태로 envoy 프록시를 주입해서 연결됨

구성

Pliot

  • envoy 설정관리
  • service discvoery 제공

Mixer

  • 엑세스 제어 및 정책 관리
  • 모니터링 지표 수집

Citadel

  • 인증
  • 암호화

Gallery

  • 설정의 유효성 검사

jpeg

Compression mode

Sequential

위에서 아래로. 각 컬러 컴포넌트는 싱글 스캔으로 인코딩 됨.

Progressive

다중 스캔(2~896)으로 인코딩 됨. 디코드 되면서 보임. 스캔 수가 증가할 수록 뚜렷해짐 (최종 사진에 가까워짐).네트워크 다운로드에 유리.

Hierarchical

부분이미지인 프레임으로 다운 샘플링한다. 전송률이 낮은 네트워크에서 유리하지만, 매우 복잡하다.

Lossless

원본이미지 손상이 가지 않게 한다. 대신에 압축률이 적을 수 밖에 없다.
JPEG-LS라는 새로운 것이 나왔다.

Basic Tech

Byte Ordering

JPEG에서는 Big endian이다.

Sampling frequency

샘플링된 상대적인 주파수. 아날로그에서 디지털로 표현될때 주파수이다. 높을 수록 구체적인 정보를 포함한다. YCbCr에서는 Y에 비해서 CbCr이 사람이 볼때 덜 민감하게 느끼므로 이 부분을 줄여서 압축이 가능하다.

Scans

데이터의 블록

Data units

특정 사이즈의 픽셀 블록(ex : 8*8)

MCU(Minimum Coded Unit)

Interleving된 Scan이 Data unit의 그룹으로 인코딩된 것을 의미

Interleaving

교차로 같이 보여줌
ex) YCbCr 은 휘도와 색차를 Interleaving한다.

서블릿

서블릿

자바의 WAS 표준?

프로젝트 생성하기(IntelliJ)

New - Project - Java Enterprise - Web Application 체크 후 생성

생성후 폴더 구조

image

web.xml

  • Deployment Descriptor.
  • webapp 설정파일 역할.
  • URL과 서블릿 매핑 정보가 포함 됨.

서블릿 컨테이너

기능

  • 라이프 사이클 관리
  • 멀티쓰레드 지원
  • 풀링
  • 보안

3가지 상태 종류

Standalone

하나의 프로그램에 웹서버와 서블릿 컨테이너가 같이 있음 ex) tomcat만 띄운경우

In-process

웹서버와 서블릿 컨테이너가다른 프로그램으로 분리되어 있음. 플러그인 형태로
연결 됨 ex) Jboss안에 tomcat

Out-of-process

웹서버와 서블릿 컨테이너가다른 프로그램으로 분리되어 있음

k8s ConfigMap

ConfigMap

설정을 컨테이너와 분리하기 위해서 사용

정의하기

apiVersion: v1
kind: ConfigMap
metadata:
  name: [원하는 이름]
  ...
data:
  key:value 
  key:value
  ......
  key:value

생성하기

kubectl apply -f [파일명]

적용법

특정 값만 사용하기

spec:
  containers:
  ...
    env:
      - name: [환경 변수로 사용될 이름]
      valueFrom:
        configMapKeyRef:
          name: [선언한 configMap 이름]
          key: [configMap에서 정한 값]

Pod에 들어가서 확인 가능

echo $[환경변수로 사용될 이름]

전체를 사용하기

spec:
  containers:
  ...
    envFrom:
      - configMapRef:
         name: [선언한 configMap 이름]

볼륨으로 사용하기

spec:
  containers:
  ...
  volumes:
    - name: config-volume
      configMap:
        name: [선언한 configMap 이름]

Spring MVC

DispatcherServlet

상속 및 구현 구조(괄호는 구현하는 인터페이스)

DispatcherServlet - FrameworkServlet(ApplicationContextAware) - HttpServletBean(EnvironmentCapable, EnvironmentAware) - HttpServlet - GenericServlet(Servlet, ServletConfig, Serializable)

k8s

쿠버네티스 개요

쿠버네티스 오브젝트

기본 오브젝트

  • 파드
  • 서비스
  • 볼륨
  • 네임스페이스

높은 수준의 추상화

  • 디플로이먼트
  • 데몬 셋
  • 스테이트 풀 셋
  • 레플리카 셋

쿠버네티스 컨트롤 플레인

컨트롤 플레인은 시스템 내 모든 쿠버네티스 오브젝트의 레코드를 유지하면서 오브젝트의 상태를 관리하는 제어루프를 지속적으로 구동시킨다.

쿠버네티스 마스터

클러스터에 대해 바라는 상태를 유지할 책임. kubectl로 상호작용하면 마스터와 통신하는 것

쿠버네티스 노드

VM, 물리 서버 등이다. 마스터는 각 노드를 관리한다.

쿠버네티스 컴포넌트

마스터 컴포넌트

클러스터에 관한 전반 적인 결정(스케줄링 같은거) 과 이벤트에 감지하고 반응

kube-apiserver

k8s api를 노출하는컨포넌트. k8s 컨트롤 플레인의 프론트 엔드, 수평확장.

etcd

모든 클러스터 데이터를 담는 key-value store

kube-scheduler

노드가 배정되지 않는 새로생성된 pod를 감지하고 그것이 구동될 노드를 선택하는 컴포넌트
다양한 요소가 결정을 위해서 고려됨

kube-controller-manager

컨트롤러를 구동하는 마스터 상의 컴포넌트
논리적으로는컨트롤러는 개별 프로세스 이미지만, 복잡성을 낮추기 위해 단일 바이너리로 컴파일되고 단을 프로세스상에 실행된다.

  • 컨트롤러 : API 서버를 통해 클러스터의 공유된 상태를 감시하고 현재 상태를 원하는 상태로 이행시키는 컨트롤 루프
  • 노드 컨트롤러 : 노드가 다운되었을때 통지와 대응에 대한 책임
  • 레플리케이션 컨트롤러 : 알맞은 수의 파드들을 유지
  • 엔드 포인트 컨트롤러: 서비스와 파드를 연결
  • 서비스 어카운트 & 토큰 컨트롤러 : 새로운 네임스페스에대한 기본 계정과 API 접근 토큰을 생성

cloud-controller-manager

클라우드 제공 사업자와 상호 작용하는 컨트롤러를 작동. 다음 컨트롤러는 클라우드 제공사업자의 의존성을 갖는다.

  • 노드 컨트롤러 : 노드가 응답을 멈추면 삭제되었는지 클라우드 제공사업자에게 확인
  • 라우트 컨트롤러 : 클라우드 인프라에 경로를 구성
  • 서비스 컨트롤러 : 클라우즈 제공 사업자 로드밸런서를 생성, 업데이트, 삭제
  • 볼륨 컨트롤러 : 볼륨의 생성, 부착, 마운트, 조정을 위해 클라우드 제공사업자와 상호작용

노드 컴포넌트

동작 중인 Pod 유지, 쿠버네티스 런타임 환경 제공, 모든 노드 상에서 동작

kubelet

에이전트로 파드에서 컨테이너가 확실하게 동작하도록 관리한다. PodSpec에 맞게 동작하는지 보장한다.

kube-proxy

네트워크 프록시, 쿠버네티스 Service 개념의 구현, 노드의 네트워크 규칙을 관리한다.

컨테이너 런타임

컨테이너 실행을 담당

애드온

쿠버네티스 리소스(데몬 셋, 디플로이먼트)를 통한 클러스터 기능 구현

DNS

모든 쿠버네티스 클러스터는 DNS가 존재, DNS를 제공한다.

웹 UI

대시보드 클러스터를 위한 범용의 웹기반 UI

컨테이너 리소스 모니터링

시계열 매트릭스, 조회를 위한 UI

클러스터 레벨 로깅

중앙로그 저장소에 컨테이너 로그를 저장. 검색과 열람 인터페이스 제공

나머지 애드온 들

https://kubernetes.io/docs/concepts/cluster-administration/addons/

쿠버네티스 API

쿠버네티스 오브젝트

쿠버네티스에서 영속성을 가지는 개체, 클러스터의 상태를 나타냄. 의도를 담은 레코드

오브젝트 Spec & Status

쿠버네티스 시스템은 Status를 Spec에 맞도록 능동적으로 관리한다.

Spec

의도한 상태를 기술

Status

오브젝트의 실제 상태를 기술, 쿠버네티스에 의해 제공되고 업데이트

오브젝트 기술

보통은 .yaml파일로 기술하고 kubectl에 정보를 제공해준다.

필수 필드

  • apiVersion: 해당 오브젝트를 생성하기 위해 사용하고 있는 쿠버네티스 API 버전이 무엇인지
  • kind : 어떤 종류의 오브젝트를 생성하는지
  • metadata : 오브젝트를 유일하게 구분지어 줄 데이터
  • spec : 오브젝트에 대해 어떤 상태를 의도하는지

오브젝트 관리 방법

명령행 명령어

kubectl을 이용해서 직접 동작시키는 방식. 간단하지만 관리가 어려움

명령행 오브젝트 구성

YAML 파일을 이용한 방법. 관리하기 좋지만, 문법이해가 필요. 많이 사용하는 방식

선언형 오브젝트 구성

(이해 안됨)
파일에서 수행할 작업을 정의하지 않고 로컬 오브젝트 구성파일을 대상으로 동작함, kubectl에 의해 생성, 업데이트, 삭제가 감지된다. 보통 디렉토리를 대상으로 동작.
예측이 불가능한 상황에서 디버깅의 어려움, 복잡해짐

이름

클러스터의 각 오브젝트는 해당 유형의 리소스에 대해 고유한 이름과 UID을 가지고 있다.

Name

동일한 물리 클러스터에서 다중의 가상클러스터를 지원하기 위해 사용하는 추상화

UID

오브젝트를 중복없이 식별하기 위해 쿠버네티스 시스템이 생성하는 문자열

네임스페이스

동일 물리 클러스터를 기반으로 하는 복수의 가상 클러스터, 이름의 범위를 제공

네임 스페이스에 속하지 않는 경우

노드, 퍼시스턴트 볼륨등의 저수준 리소스, 네임스페이스 자체

레이블

파드와 같은 오브젝트의 첨부 된 키와 값의 쌍, 사용자에 오브젝트의 특성을 식별하는 데 사용 된다. 레이블은 언제가 수정이 가능하다.

셀렉터

레이블은 고유하지 않다. 많은 오브젝트에 같은 레이블을 가질 수 있다. 레이블 셀렉터를 통해 오브젝트를 식별할 수 있다.

  • 일치성 기준 : 일치 또는 불일치로 레이블의 키와 값의 필터링을 허용한다.
//accelerator=nvidia-tesla-p100인 레이블을 가진 노드를 선택하는 경우
apiVersion: v1
kind: Pod
metadata:
  name: cuda-test
spec:
  containers:
    - name: cuda-test
      image: "k8s.gcr.io/cuda-vector-add:v0.1"
      resources:
        limits:
          nvidia.com/gpu: 1
  nodeSelector:
    accelerator: nvidia-tesla-p100
  • 집합성 기준 : 레이블 요건에 따라 값집합을 키로 필터링 할 수 있다.

어노테이션

쿠버네티스 어노테이션을 사용하여 임의의 비식별 메타데이터를 오브젝트에 첨부 할 수 있다.

오브젝트에 첨부

레이블과 달리 식별하는데 사용하지 않는다.

필드 셀렉터

한 개 이상의 리소스 필드 값에 따라 쿠버네티스 리소스를 선택하기 위해 사용한다.

ex)

  • metadata.name=my-service
  • metadata.namespace!=default
  • status.phase=Pending

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.