Recent Study/Kubernetes 학습과정
-
Deployment는 현재 한 서비스가 운영 중인데 이 서비스를 업데이트 해야 돼서 재배포를 해야 할 때 도움 주는 컨트롤러 입니다. 크게 아래와 같이 4가지 방식이 있습니다. ReCreate : Deployment를 만들면 이렇게 v1의 파드가 생성됩니다. 그리고 Pod 하나당 위와 같이 하나씩 자원이 사용된다고 가정하겠습니다. Deployment는 먼저 Pod 모두 삭제합니다. 그렇게 되면 서비스에 대한 다운타임이 발생하고, 자원 사용량도 없어지게 됩니다. 그 후 v2에 대한 Pod 2개를 만들어 줍니다. 단점은 다운타임이 발생해서 일시적인 정지가 가능한 서비스인 경우에만 가능한 방법입니다. Rolling Update : 원래의 상태에서 업그레이드 할 때 Deployment는 먼저 v2의 Pod를 하..
9. Controller - Deployment & 실습Deployment는 현재 한 서비스가 운영 중인데 이 서비스를 업데이트 해야 돼서 재배포를 해야 할 때 도움 주는 컨트롤러 입니다. 크게 아래와 같이 4가지 방식이 있습니다. ReCreate : Deployment를 만들면 이렇게 v1의 파드가 생성됩니다. 그리고 Pod 하나당 위와 같이 하나씩 자원이 사용된다고 가정하겠습니다. Deployment는 먼저 Pod 모두 삭제합니다. 그렇게 되면 서비스에 대한 다운타임이 발생하고, 자원 사용량도 없어지게 됩니다. 그 후 v2에 대한 Pod 2개를 만들어 줍니다. 단점은 다운타임이 발생해서 일시적인 정지가 가능한 서비스인 경우에만 가능한 방법입니다. Rolling Update : 원래의 상태에서 업그레이드 할 때 Deployment는 먼저 v2의 Pod를 하..
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 -
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