전체 글
많은 것을 알고 싶고 변화하는 나의 과정을 기록하고, 공유 하는
-
[ Inflearn : 2024.01 ~ 2024.02 ] 1주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/12주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/23주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/34주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/45주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/56주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/6 [ Ud..
Kubernetes[ Inflearn : 2024.01 ~ 2024.02 ] 1주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/12주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/23주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/34주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/45주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/56주차 - https://github.com/YongsHub/-Kubernetes-Study/issues/6 [ Ud..
2024.01.10 -
컨트롤러는 서비스를 관리하고 운영하는데 크게 아래 4가지 기능으로 도움을 줍니다. Auto Healing : 노드 위에 파드가 있는데, 파드가 다운되거나 파드가 스케줄링이 되어 있는 노드가 다운되면 파드에서 돌아가던 서비스가 장애가 옵니다. 하지만 컨트롤러는 이것을 즉각 인지하고 파드를 다른 노드에 새로 만들어줍니다. Software Update : 여러 파드에 대한 버전을 업그레이트 해야 될 경우 컨트롤러를 통해 한번에 쉽게 할 수 있고, 업그레이드 도중 문제가 생기면 롤백을 할 수 있게 해줍니다. Auto Scaling : 파드의 리소스가 리미트 상태가 되었을 때 컨트롤러는 이 상태를 파악하고 파드를 하나 더 만들어 줌으로써 부하를 분산시키고, 파드가 죽지 않도록 해주는데 그럼 이 서비스는 성능에 장..
8. Replication Controller, ReplicaSet - Template, Replicas, Selector & 실습컨트롤러는 서비스를 관리하고 운영하는데 크게 아래 4가지 기능으로 도움을 줍니다. Auto Healing : 노드 위에 파드가 있는데, 파드가 다운되거나 파드가 스케줄링이 되어 있는 노드가 다운되면 파드에서 돌아가던 서비스가 장애가 옵니다. 하지만 컨트롤러는 이것을 즉각 인지하고 파드를 다른 노드에 새로 만들어줍니다. Software Update : 여러 파드에 대한 버전을 업그레이트 해야 될 경우 컨트롤러를 통해 한번에 쉽게 할 수 있고, 업그레이드 도중 문제가 생기면 롤백을 할 수 있게 해줍니다. Auto Scaling : 파드의 리소스가 리미트 상태가 되었을 때 컨트롤러는 이 상태를 파악하고 파드를 하나 더 만들어 줌으로써 부하를 분산시키고, 파드가 죽지 않도록 해주는데 그럼 이 서비스는 성능에 장..
2024.01.10 -
개요 쿠버네티스 클러스터라 해서 전체가 사용할 수 있는 자원이 있습니다. 일반적으로 메모리, CPU가 있을거고, 클러스터 안에는 여러 네임스페이스들을 만들 수 있고, 네임 스페이스 안에는 여러 Pod를 만들 수 있습니다. 각 Pod는 클러스터 자원을 공유해서 사용하는데, 만약 한 네임스페이스 안에 있는 Pod가 클러스터에 남은 자원을 모두 사용하면 다른 Pod 입장에서는 더 이상 쓸 자원이 없어서 자원이 필요할 때 문제가 발생하게 됩니다. 이런 문제를 해결하기 위해 네임 스페이스마다 ResourceQuota를 달면 최대 한계를 지정할 수 있습니다. Pod가 한계를 넘을 수 없고, Pod 입장에서 자원이 부족해 문제가 될지언정 다른 네임 스페이스에 있는 Pod에는 영향을 끼치지 않게 해줍니다. 한 Pod가..
7. Namespace, ResourceQuota, LimitRange & 실습개요 쿠버네티스 클러스터라 해서 전체가 사용할 수 있는 자원이 있습니다. 일반적으로 메모리, CPU가 있을거고, 클러스터 안에는 여러 네임스페이스들을 만들 수 있고, 네임 스페이스 안에는 여러 Pod를 만들 수 있습니다. 각 Pod는 클러스터 자원을 공유해서 사용하는데, 만약 한 네임스페이스 안에 있는 Pod가 클러스터에 남은 자원을 모두 사용하면 다른 Pod 입장에서는 더 이상 쓸 자원이 없어서 자원이 필요할 때 문제가 발생하게 됩니다. 이런 문제를 해결하기 위해 네임 스페이스마다 ResourceQuota를 달면 최대 한계를 지정할 수 있습니다. Pod가 한계를 넘을 수 없고, Pod 입장에서 자원이 부족해 문제가 될지언정 다른 네임 스페이스에 있는 Pod에는 영향을 끼치지 않게 해줍니다. 한 Pod가..
2024.01.09 -
ConfigMap, Secret의 사용 시기에 대해 알아봐요. 만약 개발 환경과 상용 환경이 있습니다. A라는 서비스가 있는데 이 서비스는 일반 접근과 보안 접근이 가능합니다. 그래서 개발 환경에서는 이 보안 접근을 해제할 수 있는 옵션이 있습니다. 보안 접근을 한다면 접근 User와 Key를 세팅할 수 있습니다. 이처럼 설정하고 있는데, 상용 환경으로 배포를 해야한다면 이 값이 바뀌어야 합니다. 다시 보안 접속으로 설정을 해야하고, User와 Key값도 변경해야 합니다. 근데 이 값은 컨테이너 안에 있는 서비스 이미지에 들어있는 값이기 때문에 이 내용을 바꾼다는 것은 개발 환경과 상용 환경에 컨테이너 이미지를 각각 관리하겠다는 의미가 됩니다. 이미지를 별도로 관리한다는 것은 부담되는 일이에요. 그래서 ..
6. ConfigMap, Secret & 실습ConfigMap, Secret의 사용 시기에 대해 알아봐요. 만약 개발 환경과 상용 환경이 있습니다. A라는 서비스가 있는데 이 서비스는 일반 접근과 보안 접근이 가능합니다. 그래서 개발 환경에서는 이 보안 접근을 해제할 수 있는 옵션이 있습니다. 보안 접근을 한다면 접근 User와 Key를 세팅할 수 있습니다. 이처럼 설정하고 있는데, 상용 환경으로 배포를 해야한다면 이 값이 바뀌어야 합니다. 다시 보안 접속으로 설정을 해야하고, User와 Key값도 변경해야 합니다. 근데 이 값은 컨테이너 안에 있는 서비스 이미지에 들어있는 값이기 때문에 이 내용을 바꾼다는 것은 개발 환경과 상용 환경에 컨테이너 이미지를 각각 관리하겠다는 의미가 됩니다. 이미지를 별도로 관리한다는 것은 부담되는 일이에요. 그래서 ..
2024.01.08 -
1. emptydir : 컨테이너들끼리 데이터를 공유하기 위해 볼륨을 사용하고, 최초 이 볼륨이 생성될 때 볼륨안에 내용이 비어 있기 떄문에 emptyDir이라고 명칭이 된 것입니다. 만약 컨테이너 1번이 웹 역할을 하는 서버, 컨테이너 2번이 백엔드단을 처리해주는 서버라면 이 웹서버로 받은 어떤 특정 파일을 마운트가 된 볼륨에 저장하고, 백엔드단에 있는 2번 컨테이너 역시 이 볼륨을 마운트 해놓으면 이 두 서버가 이 볼륨을 자신의 로컬에 있는 파일처럼 사용하기 때문에 두 서버가 파일을 주고 받을 필요없이 편하게 사용할 수 있습니다. 볼륨은 Pod안에 생성 되기 때문에, Pod 문제가 발생해서 재생성 되면 데이터가 모두 없어진다는 것을 의미합니다. 그래서 이 볼륨에 쓰이는 데이터는 꼭 일시적인 사용 목적..
5. Volume - emptyDir, hostPath, PV/PVC & 실습1. emptydir : 컨테이너들끼리 데이터를 공유하기 위해 볼륨을 사용하고, 최초 이 볼륨이 생성될 때 볼륨안에 내용이 비어 있기 떄문에 emptyDir이라고 명칭이 된 것입니다. 만약 컨테이너 1번이 웹 역할을 하는 서버, 컨테이너 2번이 백엔드단을 처리해주는 서버라면 이 웹서버로 받은 어떤 특정 파일을 마운트가 된 볼륨에 저장하고, 백엔드단에 있는 2번 컨테이너 역시 이 볼륨을 마운트 해놓으면 이 두 서버가 이 볼륨을 자신의 로컬에 있는 파일처럼 사용하기 때문에 두 서버가 파일을 주고 받을 필요없이 편하게 사용할 수 있습니다. 볼륨은 Pod안에 생성 되기 때문에, Pod 문제가 발생해서 재생성 되면 데이터가 모두 없어진다는 것을 의미합니다. 그래서 이 볼륨에 쓰이는 데이터는 꼭 일시적인 사용 목적..
2024.01.08 -
5장은 Mysql 동시성에 영향을 미치는 Lock과 트랜잭션, 트랜잭션의 격리 수준을 살펴보겠다. 트랜잭션은 작업의 완선성을 보장해 주는 것이다. 즉 논리적인 작업 셋을 모두 완벽하게 처리하거나, 그렇지 않으면 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 해주는 기능이다. Lock, 트랜잭션은 서로 비슷하지만 사실 Lock은 동시성을 제어하기 위한 기능이고, 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. 예로 하나의 회원 정보 레코드를 여러 커넥션에서 동시에 변경하는데 Lock이 없다면 하나의 데이터를 여러 커넥션에서 변경할 수 있다. 레코드의 값은 예측할 수 없다. Lock은 여러 커넥션에서 동시에 동일한 자원을 요청할 경우 순서대로 한 시점에는 하나의 커넥션만 변경할 수 있..
5. 트랜잭션5장은 Mysql 동시성에 영향을 미치는 Lock과 트랜잭션, 트랜잭션의 격리 수준을 살펴보겠다. 트랜잭션은 작업의 완선성을 보장해 주는 것이다. 즉 논리적인 작업 셋을 모두 완벽하게 처리하거나, 그렇지 않으면 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 해주는 기능이다. Lock, 트랜잭션은 서로 비슷하지만 사실 Lock은 동시성을 제어하기 위한 기능이고, 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. 예로 하나의 회원 정보 레코드를 여러 커넥션에서 동시에 변경하는데 Lock이 없다면 하나의 데이터를 여러 커넥션에서 변경할 수 있다. 레코드의 값은 예측할 수 없다. Lock은 여러 커넥션에서 동시에 동일한 자원을 요청할 경우 순서대로 한 시점에는 하나의 커넥션만 변경할 수 있..
2024.01.07 -
4.2.12 어댑티브 해시 인덱스 일반적으로 '인덱스'는 테이블에 사용자가 생성해둔 B-Tree 인덱스를 의미한다. 또는 사용자가 직접 테이블에 생성해둔 인덱스가 우리가 일반적으로 알고있는 인덱스일 것이다. 하지만 '어댑티브 해시 인덱스'는 사용자가 수동으로 생성하는 인덱스가 아니라 InnoDB 스토리지 엔진에서 사용하자 자주 요청하는 데이터에 대해 자동으로 생성하는 인덱스이며, 사용자는 innodb_adaptive_hash_index 시스템 변수를 이용해서 어댑티브 해시 인덱스 기능을 활성화하거나 비활성화 할 수 있다. 어댑티브 해시 인덱스는 B-Tree 검색 시간을 줄여주기 위해 도입된 기능이다. InnoDB 스토리지 엔진은 자주 읽히는 데이터 페이지의 키 값을 이용해 해시 인덱스를 만들고, 필요할 ..
4.3 아키텍처 (하)4.2.12 어댑티브 해시 인덱스 일반적으로 '인덱스'는 테이블에 사용자가 생성해둔 B-Tree 인덱스를 의미한다. 또는 사용자가 직접 테이블에 생성해둔 인덱스가 우리가 일반적으로 알고있는 인덱스일 것이다. 하지만 '어댑티브 해시 인덱스'는 사용자가 수동으로 생성하는 인덱스가 아니라 InnoDB 스토리지 엔진에서 사용하자 자주 요청하는 데이터에 대해 자동으로 생성하는 인덱스이며, 사용자는 innodb_adaptive_hash_index 시스템 변수를 이용해서 어댑티브 해시 인덱스 기능을 활성화하거나 비활성화 할 수 있다. 어댑티브 해시 인덱스는 B-Tree 검색 시간을 줄여주기 위해 도입된 기능이다. InnoDB 스토리지 엔진은 자주 읽히는 데이터 페이지의 키 값을 이용해 해시 인덱스를 만들고, 필요할 ..
2024.01.07 -
1.Service : 기본적으로 자신의 Cluster IP를 가지고 있습니다. 그리고 이 서비스를 Pod에 연결시켜놓으면, 서비스의 IP를 통해서 Pod에 접근할 수 있습니다. 앞 글에서 Pod에서 똑같이 클러스터 내에서 접근할 수 있는 IP가 있었는데, 굳이 서비스를 사용하는 이유는 k8s에서 시스템 장애, 성능 장애 등 언제든지 죽을 수 있고, 그러면 다시 재생성되도록 설계되어 있는 오브젝트입니다. 파드의 IP는 재생성되면 변하기 때문에 Pod의 IP에 대한 신뢰성이 떨어집니다. 이 Service의 IP도 클러스터 내에 다른 모든 오브젝트들이 접근할 수 있지만 외부에서는 접근할 수 없습니다. Pod는 여러개 연결이 가능하고, 이렇게 여러개 연결 시켰을 때 서비스가 트래픽을 분산해서 Pod에 전달해줍니..
4. Service - Cluster IP, NodePort, LoadBalancer1.Service : 기본적으로 자신의 Cluster IP를 가지고 있습니다. 그리고 이 서비스를 Pod에 연결시켜놓으면, 서비스의 IP를 통해서 Pod에 접근할 수 있습니다. 앞 글에서 Pod에서 똑같이 클러스터 내에서 접근할 수 있는 IP가 있었는데, 굳이 서비스를 사용하는 이유는 k8s에서 시스템 장애, 성능 장애 등 언제든지 죽을 수 있고, 그러면 다시 재생성되도록 설계되어 있는 오브젝트입니다. 파드의 IP는 재생성되면 변하기 때문에 Pod의 IP에 대한 신뢰성이 떨어집니다. 이 Service의 IP도 클러스터 내에 다른 모든 오브젝트들이 접근할 수 있지만 외부에서는 접근할 수 없습니다. Pod는 여러개 연결이 가능하고, 이렇게 여러개 연결 시켰을 때 서비스가 트래픽을 분산해서 Pod에 전달해줍니..
2024.01.04