분류 전체보기
-
Istio Session Affinity 정리K8S 2021. 6. 22. 15:15
이스티오에서는 Consistent hashing을 이용하여 session을 유지할 수 있다. consistent hasing이란? 공식문서를 참고해보면 다음과 같다. 로드밸런서에서는 hash 알고리즘을 이용하여 client로부터 받은 데이터를 hashing한 후 데이터를 포드로 전송한다. 이 때 해쉬된 값을 이용하여 sticky session을 유지한다. 이스티오에서는 다음과 같이 consistent hasing에 대한 속성들을 제공한다. ※ 참고 이스티오에서 stickey session과 카나리를 위한 virtual service의 weighted 옵션을 동시에 사용할 수 없다. weight 옵션과 consistentHash가 설정된 virtual service에서는 weighted 옵션만 적용되어 나..
-
Istio kiali를 이용한 카나리 구성과 virtual service, destination rule 정리K8S 2021. 6. 21. 10:58
이번 포스팅에서는 키알리를 이용해서 카나리를 구현하고 생성된 virtual service와 destination rule에 대해서 알아본다. 1. 키알리를 이용한 카나리 구현 다음은 Kiali dashboard를 통해서 본 fleetman-staff-service 서비스로 들어온 트래픽을 staff-service deploylment와 staff-service-risky-version deployment 워크로드로 로드밸런싱하는 상황이다. (staff-service-risky-version가 카나리가 된다!) (api-gateway와 Position-tracker는 무시하자) a..
-
Cloud Watch를 이용한 EC2 CPU Utilization Alarm 생성AWS 2021. 6. 21. 00:46
이번 포스팅에서는 EC2의 CPU 사용률을 cloud watch를 이용해서 모니터링하고 CPU 사용률이 50% 이상일 때 이메일을 통해 알람을 받고 인스턴스를 재부팅한다. Cloud Watch에 대한 실습이 목적이기 때문에 EC2 생성에 대한 자세한 내용은 생략한다. 1. EC2 인스턴스 생성 다음 사양으로 인스턴스를 생성한다. Amazon Linux 2 AMI : 64bit(x86) t2.micro vCPU(1) MEM(1GiB) 2. Cloud watch 경보 생성 1) cloud watch 콘솔로 접속한 후, 경보를 생성한다. 2) 지표 생성 -> EC2 -> 인스턴스별 지표 -> CPUUtilization 지표 선택하고 기간을 1분으로 설정 (5분 밑으로는 비용이 청구된다고 한다. ) 3) 조건에..
-
AWS 용어 정리 1AWS 2021. 6. 20. 23:32
해당 지리적인 영역 내에서 격리되고 물리적으로 분리된 여러 개의 가용 영역(AZ)의 모음 데이터 센터들의 모음으로 각 센터는 광통신 전용망으로 연결되어 있다. 외부 인터넷과 AWS 글로벌 네트워크망과 연결하는 별도의 센터로 CloudFront와 같은 CDN 서비스의 데이터 캐시 기능을 제공한다. - 온디맨드 인스턴스: 인스턴스에 대한 비용을 초 단위로 지불 - 예약 인스턴스: 1년 또는 3년 기간 동안 인스턴스를 약정하는 방식으로 비용을 절약할 수 있음. - 스팟 인스턴스: 미사용 인스턴스를 요청하여 비용을 절약할 수 있음. 인스턴스를 중단시 정상적으로 종료하고 stopped 상태가 된다. 인스턴스의 모든..
-
K8S Operating System UpgradeK8S 2021. 6. 17. 15:55
이번 포스팅에서는 클러스터 내의 노드 패치 또는 업그레이드시 노드를 unschedule하는 방법에 대해 다룬다. 다음 상황을 가정한다. 나는 쿠버네티스 클러스터 내 node를 패치하거나 업그레이드하고 싶다. 이때 노드 내의 포드는 노드 업그레이드 시 문제가 생길 수 있기 때문에 우선 노드를 unscheule한 상태로 만들어준다. 이때 노드내 포드가 만약 replicas로 지정된 포드라면 노드에 장애가 생겨도 self-healing되어 문제가 없으므로 노드 내 모든 포드를 지운 후, unschedulable하게 해도 괜찮다. 하지만 replicaset이 지정되어 있지 않은 포드가 노드 내 존재한다면 노드 내 포드만 그대로 놔두고 노드를 Unschedule하게 한다. 이번 포스팅에서는 Replicas가 설정..
-
Istio Automation InjectionK8S 2021. 6. 17. 14:32
istio 서비스 매쉬를 구성하기 위해서는 데이터 플레인 각 pod안에 proxy 컨테이너가 있어야 한다. 프록시 컨테이너를 만드는 방법은 여러가지가 있다. 직접 yaml에 프록시 컨테이너를 정의해주는 방법이 있지만 기존의 yaml을 건드려야 하기 때문에 좋은 방법이 아니다. 그래서 자동으로 프록시 컨테이너를 포드에 inject해주는 방법을 사용한다. 이를 sidecar injection이라 하며 생성을 원하는 네임 스페이스에 레이블을 달면 알아서 프록시를 생성해준다. 참고로 기존에는 istio-sidecar-injector라는 포드가 injection을 하는 역할이었는데 현재 이 기능은 control plane의 istiod 포드가 담당한다. kubectl get pods -n istio-system ..
-
K8S command와 argsK8S 2021. 6. 15. 19:11
Dockerfile의 CMD, ENTRYPOINT와 K8S의 command, args를 비교함으로써 yaml 파일에서 command와 args의 역할을 알아보자. Dockerfile의 CMD와 ENTRYPOINT에 대해서 잘 모른다면 다음을 참고 Dockerfile CMD vs ENTRYPOINT Dockerfile을 이용해서 ubnutu image를 빌드하고 컨테이너가 시작되자마자 sleep 5라는 커맨드를 실행하고 싶다. 이때는 dockerfile에서 CMD sleep 5 라고 지정해주면 컨테이너가 시작하자마자 sleep 5가 실행된 seungjuitmemo.tistory.com 위 도커파일을 통해서 만들어진 ubuntu-sleeper 이미지는 컨테이너가 실행되자 마자 sleep 5 커맨드가 실행된다..
-
Dockerfile CMD vs ENTRYPOINTK8S 2021. 6. 15. 17:56
Dockerfile을 이용해서 ubnutu image를 빌드하고 컨테이너가 시작되자마자 sleep 5라는 커맨드를 실행하고 싶다. 이때는 dockerfile에서 CMD sleep 5 라고 지정해주면 컨테이너가 시작하자마자 sleep 5가 실행된다. 하지만 sleep 5 CMD를 가진 우분투 이미지를 가지고 sleep 10을 실행하고 싶을때는 어떻게 해야할까? docker run ubuntu-sleeper sleep 10 으로 실행할 수도 있겠지만 sleep이 아닌 복잡한 커맨드라면 힘들 수 있다. 이때 ENTRYPOINT를 이용하면 이러한 문제를 쉽게 해결할 수 있다. 위와 같이 ENTRYPOINT sleep으로 지정한 후, container를 생성할 때, docker run ubuntu-sleeper ..