K8S 공식사이트쿠버네티스는 컨테이너 기반 환경에서 서비스의 고가용성, 운영, 스케일아웃, 네트워크, 로드밸런싱을 쉽게 할 수 있도록 나온 오픈소스이다. 기업에서 쿠버네티스만을 쓰는 곳은 없고, 관리형 쿠버네티스인 EKS와 같은 서비스를 이용한다고 한다. 1.24v 이
centos7 이미지 파일로 t2.medium 으로 생성해준다. 2코어 이상이 필요하므로 적절한 리소스를 사용하자 추후 각 ec2에 동일한 포트를 열어주기 위해 생성할 때 같은 보안그룹을 설정해준다.NACL과 보안그룹은 다른 영역의 내용이다. 서브넷 NACL을 개방하더
K8S에서 배포의 단위가 되며, App Container들로 구성됨. POD란 컨테이너와 마찬가지로 독립된 프로세스 환경을 구성하는데 그렇기 때문에 POD 내부의 컨테이너들은 프로세스 자원을 공유할 수 있다. POD를 생성할 때 PAUSE 컨테이너가 우선적으로 생성된다
쿠버네티스는 POD의 배포를 단일 단위로 하지 않고 Kubernetes Controller 라는 것으로 배치처리한다. POD의 개수를 보장한다. 어떤 이유로든 POD가 Kill되면 재배포를 진행한다. 하지만 Template(yml파일)의 수정이 이미 배포된 POD들의
다중 Node 환경에서, 만일 docker0 의 IP 가 동일하다면, ( Bridge network IP가 동일하다면 ) POD의 IP가 중복되는 상황이 발생한다.이러한 상황을 막기 위해서는 K8S 클러스터 환경에서는 docker0가 아닌 cbr0 ( custom br
K8S 클러스터 환경에서 동일한 서비스를 제공하는 POD 그룹에 단일 진입점을 만들기 위해 생성하는 리소스이다. 각 서비스에는 서비스가 존재하는 동안 절대로 변경되지 않는 IP주소:PORT 가 존재한다. 클라이언트는 POD에 직접 연결하는 것이 아니라 서비스의 IP:P
K8S의 Ingress Resource는 외부에서 클러스터 내부로 들어오는 Ingress 트래픽을 어떻게 처리할지 정의한다. GateWay 역할과 유사하다. Ingress 를 사용하지 않을 때 외부 트래픽에 클러스터를 노출시킬 방법은 NodePort, LB등이 있지만
POD는 Stateless 상태로 관리되어야 한다. POD는 언제든 Down 될 수 있는 자원이기 때문에 POD 외부에 볼륨을 마운트 해놓아야 한다. Volume은 Storage의 추상화 개념으로 컨테이너는 POD에 바인딩 되는 볼륨을 마운트하고, 마치 로컬 스토리지에
ECR에서 Image를 Pull해서 실행하기 위해선 AWS CLI 인증이 필요하다. K8S 환경에서는 이를 secret으로 관리해 deployment 및 service를 생성하는 yml에서 사용해 과정을 간략화할 수 있다.
AWS Admin 권한을 얻을 수 없는 상황에서 EKS에 대한 충분한 iam role을 부여받을 수 없는 상황 아래, 프로젝트를 진행함에 있어서 Managed K8S 를 사용할 수 없었고 이에 Centos 3대의 EC2로 K8S Cluster를 구성하였다.기존에 사용하
프로그램 소스, Kubernetes 리소스 그리고 심지어 인프라까지 코드로 구현될 수 있다. 여러 환경에 흩어져 있는 코드들을 Git을 사용해 한 곳에 보관하고, 현재 운영중인 상태 (Ops) 와 동일하게 맞추는 것이 깃옵스의 의미이다.운영 중의 서비스는 반드시 하나의
EC2 인스턴스를 비용 관리를 위해서 중지 할 일이 자주 있는데 클러스터를 초기화해서 다시 연결해야 하는 필요성이 생겼다. 본 개시글은 kubeadm init 을 통해 구축한 클러스터에 한 해 작동한다.kubeadm reset 이후 로그에 나온 대로 파일들을 삭제해준다
비용적 이유 때문에 클러스터를 종료할 때 클러스터를 초기화시키거나, 데이터 플레인만을 종료해서 다시 클러스터에 join시키는 방법이 있다. 즉 컨트롤 플레인은 24/7 운영해야 한다.K8S 클러스터에 join하기 위한 토큰은 아래와 같은 형식이다.Token값이 있는데,
이전에 실습을 진행하던 환경은 kubernetes v1.23.x 버전이였다.당시에도 depreciated였던 버전을 사용한 이유는, v1.24 이후부터 Docker를 기본 CRI에서 제거했기 때문이다. Docker를 쓸 수 없다는 것이 아닌, Docker를 kubern