공부집

코멘토 실무PT 후기 챌린지_쿠버네티스 강의 2주차 후기 본문

comento/Kubernetes

코멘토 실무PT 후기 챌린지_쿠버네티스 강의 2주차 후기

ikemen_hk 2022. 10. 7. 19:40

 

필수링크: https://bit.ly/3D9XCOz

 

helm

현재 오버라이드 기능에서 null 값을 넣을 수 없음

helm repository: 도커 허브 같은 거

실제 사용 예시

Pod

파드와 컨테이너의 다른 점은 독립성을 부여할 수 있음
    - 컨테이너 안에 컨테이너를 넣으면 종속됨
    - Pod안에 컨테이너 2개인 경우: 사이드카 패턴

 

Deployment: Pod를 관리(replicas), 파드 갯수를 보장

 

Deployment와 Repilcaset의 차이: DeploymentRepilcaset도 관리해주는 상위개념

Deployment와 Repilcaset의 기능적인 측면에서의 차이: declarative updates (선언적 업데이트)를 제공함

 

StatefulSets: Deployment와 달리 파드의 순서를 보장함, 0~9의 파드가 있을 때 삭제시 마지막에 만들어진 파드를 먼저 삭제함

DaemonSet: 각 노드마다 꼭 하나씩 파드를 띄워줌

 

Job와 Cronjob는 용도차이

Job: 최소 몇 번 안에 무조건 성공해야 하는 작업
    - (일시적인 작업을 처리)필요한 순간에만 pod를 만들고 해당 작업을 수행하고 수행이 끝나면 pod를 삭제
    - backoffLimit: 4 # 4번까지 실패를 허용

Cronjob: cron과 유사하게 주기적인 작업을 수행하는 컨테이너를 띄우고 삭제

 

Airflow

사용이유: 이전 태스크 실패시 다음 태스크 실행시키지 않도록 가능 "depends_on_past"

k8s에서도 가능하지만 추가 설정필요

 

환경설정

# 1. Helm install
brew install helm
helm create comment-charts
rm -rf comment-charts/templates
mkdir comment-charts/templates
helm install mygolang .
# ------------------------------------------
% cat values.yaml 
image: asia-northeast3-docker.pkg.dev/k8s-project-365610/gar/comment:latest
% grep image templates/mypod.yaml 
  - image: {{ .Values.image }}
# 2. gcloud install (tar.gz 다운)
https://cloud.google.com/sdk/docs/install?hl=ko#installation_instructions
gcloud auth login
gcloud config set project k8s-project-365610
gcloud auth activate-service-account comment@k8s-project-365610.iam.gserviceaccount.com --key-file=k8s-project-365610-comment.json
gcloud components update
gcloud services enable artifactregistry.googleapis.com
# 3. gke set
gcloud components install gke-gcloud-auth-plugin
gcloud container clusters get-credentials autopilot-cluster-1 --region asia-northeast3 --project k8s-project-365610
# 4. docker
docker build -t comment .
docker run comment
# 5. gar set
gcloud auth configure-docker asia-northeast3-docker.pkg.dev
docker tag comment asia-northeast3-docker.pkg.dev/k8s-project-365610/gar/comment
docker push asia-northeast3-docker.pkg.dev/k8s-project-365610/gar/comment
docker pull asia-northeast3-docker.pkg.dev/k8s-project-365610/gar/comment:latest
# 6. kubectl
% brew install kubectl
% kubectl run mypod --image=asia-northeast3-docker.pkg.dev/k8s-project-365610/gar/comment:latest \
            --labels app=mygolang \
            --dry-run=client -o yaml > mypod.yaml

% kubectl create deployment mygolang --image=asia-northeast3-docker.pkg.dev/k8s-project-365610/gar/comment:latest \
            --replicas=3 \
            --dry-run=client -o yaml > mydeploy.yaml

% kubectl create cronjob mycronjob --image=asia-northeast3-docker.pkg.dev/k8s-project-365610/gar/comment:latest \
            --schedule="*/1 * * * *" \
            --dry-run=client -o yaml > mycronjob.yaml

% cat <<_EOF_ > myjob.yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: comment
spec:
  template:
    spec:
      containers:
      - name: comment
        image: asia-northeast3-docker.pkg.dev/k8s-project-365610/gar/comment:latest
      restartPolicy: Never
  backoffLimit: 4
_EOF_

 

context = 클러스터
k8s update strategy
    max surge: 기존 팟 남겨두고 새로 띄움
    (replicas=3, max surge=100%)인 경우 3 -> 6 -> 3
    max unavailable: 기존 팟 삭제하고 새로 띄움 (배포속도 때문에 사용)
    (replicas=3, max unavailable=100%)인 경우 3 -> 0 -> 3

Comments