티스토리 뷰

Cloud/Cloud 교육

클라우드 정리(2)

NoonGam 2021. 2. 4. 14:49

볼륨 생성

kubectl apply -f volume-azurefile-pvc.yaml

 

-------------------------- Configmap ------------------------------

 

kubectl create configmap hello-cm --from-literal=language=java

 

 

docker build -t user0909.azurecr.io/hello-cm:v1 .

 

푸시 (권한이 없다고 뜸)

docker push user0909.azurecr.io/hello-cm:v1

 

acr로그인

az acr login --name user0909  

 

다시 푸시

docker push user0909.azurecr.io/hello-cm:v1 

 

 

 

configmap->cm-deployment.yaml

19번째줄 image: 를 수정.

 

배포 진행

kubectl apply -f cm-deployment.yaml   

 

 

 

kubectl apply -f cm-service..yaml

 

 

내부접속

kubectl exec -it pod/cm-deployment-5d4c74b8d-2swjn -- /bin/bash

 

내부에서 환경변수 확인 

env | grep LANGUAGE

 

 

 

----------------------------- liveness Probes   VS readiness Probes------------------------------

 

 

 

kubectl apply -f exec-liveness.yaml

 

kubectl describe pod liveness-exec

 

 

 

 

Liveness Probes는 계속 Restart를 진행함.

 

 

 

 

 

 

 

 

 

 

------------------------ Ingress Controller ----------------------

 

Service는 L4레이어로 TCP레벨에서 Pod를 로드밸런싱함.

Ingress는 L7계층에서 로드밸런싱함.(URL기반)

 

 

Helm으로 Ingress Controller 설치

  • helm repo add stable https://charts.helm.sh/stable
  • helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
  • helm repo update
  • kubectl create namespace ingress-basic
  • helm version 확인
  • (helm version 2.x 일때)
    • helm install --name nginx-ingress stable/nginx-ingress --namespace=ingress-basic
  • (helm version 3.x 일때)
    • helm install nginx-ingress ingress-nginx/ingress-nginx --namespace=ingress-basic
  • (설치확인)
    • kubectl get all --namespace=ingress-basic
    • (Ingress Controller의 EXTERNAL-IP가 API Gateway 엔드포인트: 메모 必)

az acr build --registry user0909 --image user0909.azurecr.io/the-blue:v1 .

 

 

 

마지막 라우터 배포

 kubectl apply -f path-based-ingress.yaml

 

 

 

 

kubectl create deploy nginx --image=nginx

 

------------- 동작 확인 -------------

default용 만들고.

kubectl create deploy nginx --image=nginx -n ingress-basic

 

http://20.194.18.6/blue  , green  HTTP로 접속

 

또는

 

kubectl exec pod nginx-f89759699-4fd8p -n ingress-basic -- /bin/bash kubectl exec -it nginx-f89759699-4fd8p -n ingress-basic -- /bin/bash

 

curl http://nginx-blue-svc

curl http://nginx-green-svc

왜 조회가 되는가?

같은 namespace(ingress-basic)으로 만들어서 서로 공유하고 있음.

 

 

다른 pod로 접속(namespace가 다를때)

kubectl exec -it nginx-f89759699-prct8 -- /bin/bash

 

curl http://nginx-blue-svc   ->  못찾음

 curl http://nginx-blue-svc.ingress-basic   ->  ingress-basic 네임스페이스를 명시하면 조회함.

 

 

 

 

 

 

 

 

--------------------------- 아키텍처 ------------------------------------

 

 

모든 Worker Node는 API-server를 바라보고있음. 

Scheduler는 자원분배 및 

 

Master Node는 일반적으로 가져다 쓰면 클라우드(Azure)에서 알아서 관리해줌.

하지만 On-premise로 사용할 경우에는 Master Node도 다 설정해줘야함. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

----------------------- 필수 요소 -----------------

Readiness Probes 또는 Liveness Probes를 선택해서 꼭 적용해야함.

 

 

 

위에거는 다 구현되어있으면 점수 획득함.

Saga패턴

CQRS패턴(분리) -UI에서 상태값을 확인 할 수 있어야함. 

Correlation - 배송상태가 바뀌면 관련되어있는거를 자동으로 update? (find by ID?)

Req/Resp(동기호출) - 아무 라이브러리를써서, 

Gateway - 쿠버네티스ingress, spring framework의 gateway를 쓰던 상관없음.

Deploy/Pipeline - 

Circuit Breaker - 과부하 걸릴때 차단용

Autosacle (HAP) - Scaleout이 되는걸 확인하면 됨.

zero-downtime deploy - rollout할때는 yaml이나 set image를 통해 (부하가 걸려있을때)  -> Readniess가 적용되어있으면 Availability가 100%로 됨(손실된 요청이 없음)

Config Map / Persistence Volume - 만들어진 CM을 MSA가 활용을 해야함. Volume을 만들면 MSA에 마운트시키고 사용을 해야함!

Polyglot - 언어를 바꾸는건 어려움 -> Polyglot persistence를 사용함 -> 다른 DB를 써서 서로 호환되게함? -> mongoDB랑 mysql을 쓰면 될듯.

Self-healing (liveness Probe) - 8080은 정상인데, 8081로 바꾸면 계속 RESTART를함?

 

 

위에 : 0.6초가 넘으면 차단함

아래 : 모델이 너무 로직이 간단해서 아무리 부하를줘도 잘 안걸리니까 해당 함수를 넣어서 과부하를 더줌.

 

 

 

kafka - order에 application.xml -> 

group : 그룹정보는 kafka에서 구별하는거? 1개의 그룹으로 여러개의 요청이 동시에 오면 msa중에서 먼저 가져간놈한테 이 그룹의 데이터를 넘겨준다?

destination : 

 

 

 

RECREATE - 전체 다 내렸다가 다시시작

RAMPED - 하나씩 내렸다가 올림

BLUE/GREEN - 라우터를 A,B를 스왑하면서 사용

CANARY - 점진적으로  배포 ? / 카나리 스코어(IBM) : 어느정도 점수가 이상이되면 내림

A/B TESTING - 

SHADOW - 

 

 

 

 

---------------------- Istio ------------------------

Improved Resilience - Circuit Break + pool Ejection(계속 문제가 생기면 방출) + retry

 

 

 

'Cloud > Cloud 교육' 카테고리의 다른 글

MSA 이해  (0) 2022.04.08
클라우드 정리(3)  (0) 2021.02.06
클라우드 정리(1)  (0) 2021.02.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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
글 보관함