개발자의 기록장 블로그

만나서 반가워 !
이거 좋아해?

[ECR] ImagePullSecrets Error
·
DevOps/Kubernetes
ImagePullSecretsECR에서 Image를 Pull해서 실행하기 위해선 AWS CLI 인증이 필요하다.K8S 환경에서는 이를 secret으로 관리해 deployment 및 service를 생성하는 yml에서 사용해 과정을 간략화할 수 있다.SECRET 작업1. AWS Login$ aws configure AWS Access Key ID [None]: # ACCESS KEYAWS Secret Access Key [None]: # SECRET KEYDefault region name [None]: Default output format [None]:2. ECR Loginaws ecr get-login-password --region ap-northeast-2 \--profile default | d..
쿠버네티스 볼륨
·
DevOps/Kubernetes
쿠버네티스 볼륨POD는 Stateless 상태로 관리되어야 한다.POD는 언제든 Down 될 수 있는 자원이기 때문에 POD 외부에 볼륨을 마운트 해놓아야 한다.Volume은 Storage의 추상화 개념으로 컨테이너는 POD에 바인딩 되는 볼륨을 마운트하고, 마치 로컬 스토리지에 있는 것처럼 스토리지에 접근한다.Volume의 종류emptyDirPOD가 Node에 할당될 때 생성되고, POD가 삭제될 때 같이 삭제되는 임시 볼륨이다.동일한 POD에서 실행되는 컨테이너 간에 파일을 공유할 때 사용한다. 사용할 미디어도 지정할 수 있는데 기본값은 Disk고, 빠른 연산을 위해 Memory를 미디어로 사용할 수도 있다.volumes:- name: html emptyDir: {} --- volumes:- n..
쿠버네티스 Ingress
·
DevOps/Kubernetes
쿠버네티스 IngressK8S의 Ingress Resource는 외부에서 클러스터 내부로 들어오는 Ingress 트래픽을 어떻게 처리할지 정의한다. GateWay 역할과 유사하다. Ingress 를 사용하지 않을 때 외부 트래픽에 클러스터를 노출시킬 방법은 NodePort, LB등이 있지만 이런 것들은 일반적으로 Layer4 (TCP, UDP) 에서의 요청을 처리하며 한계가 존재한다. Ingress는 Layer7의 요청을 처리할 수 있다.외부로부터 들어오는 요청에 대한 로드 밸런싱, TLS/SSL 인증서 처리, 특정 HTTP 경로의 라우팅등을 Ingress를 통해 자세하게 정의할 수있다. Ingress를 통해 위와 같은 요구사항을 정의하고, 이를 Ingress Controlle라고 부르는 특별한 웹서버에..
쿠버네티스 Service
·
DevOps/Kubernetes
쿠버네티스 ServiceK8S 클러스터 환경에서 동일한 서비스를 제공하는 POD 그룹에 단일 진입점을 만들기 위해 생성하는 리소스이다. 각 서비스에는 서비스가 존재하는 동안 절대로 변경되지 않는 IP주소:PORT 가 존재한다.클라이언트는 POD에 직접 연결하는 것이 아니라 서비스의 IP:PORT 로 연결을 시도하면 POD로 라우팅된다. 이로써 POD는 서비스에 종속되며, 클러스터 주변을 자유롭게 움직일 수 있다.POD들은 label selector 에 의해 관리되며 Round Robin 혹은 백분율의 Load Balancing 을 서비스가 수행한다.Cluster IP가장 기본 타입으로 클러스터 내부의 노드에서 접근 가능하다.Ingress를 통해 외부에서 내부로 들어오는 GateWay를 만들 것이기 때문에..
쿠버네티스 네트워크
·
DevOps/Kubernetes
쿠버네티스 네트워크Docker HostK8S NodeK8S Environment 다중 Node 환경에서, 만일 docker0 의 IP 가 동일하다면, ( Bridge network IP가 동일하다면 ) POD의 IP가 중복되는 상황이 발생한다. 이러한 상황을 막기 위해서는 K8S 클러스터 환경에서는 docker0가 아닌 cbr0 ( custom bridge ) 를 사용하며 IP를 다르게 해 POD의 IP 중복을 방지한다.
쿠버네티스 POD 배포
·
DevOps/Kubernetes
쿠버네티스 POD 배포쿠버네티스는 POD의 배포를 단일 단위로 하지 않고 Kubernetes Controller 라는 것으로 배치처리한다.Replication ControllerPOD의 개수를 보장한다.어떤 이유로든 POD가 Kill되면 재배포를 진행한다.하지만 Template (yml파일) 의 수정이 이미 배포된 POD들의 update를 보장하지 않는다.삭제kubectl delete rc --cascade=falseReplica SetReplication Controller의 새로운 버전이며 더욱 풍부한 label selector 를 제공한다.옵션In : 라벨의 값이 지정된 값 중 하나와 일치해야 한다.NotIn : 라벨의 값이 지정된 값과 일치해서는 안된다.Exists : pod에는 지정된 키가 있..
쿠버네티스 POD 관리
·
DevOps/Kubernetes
쿠버네티스 POD 관리POD란?K8S에서 배포의 단위가 되며, App Container들로 구성됨. POD란 컨테이너와 마찬가지로 독립된 프로세스 환경을 구성하는데 그렇기 때문에 POD 내부의 컨테이너들은 프로세스 자원을 공유할 수 있다.PAUSE 컨테이너POD를 생성할 때 PAUSE 컨테이너가 우선적으로 생성된다.PAUSE 컨테이너가 생성될 때 이 컨테이너에 네임스페이스가 할당되고, 이후 생성되는 APP Container가 이 네임스페이스를 공유하면서 POD 내부의 프로세스 자원을 공유할 수 있게 된다. 같은 네임스페이스를 공유하기 때문에 localhost로 통신이 가능하다.또한 PAUSE 컨테이너의 네임스페이스를 공유하기 때문에 PAUSE 컨테이너는 APP Container의 PID를 알고있다. 따라..
쿠버네티스 실습
·
DevOps/Kubernetes
실습 환경EC2 3대 - centos7VPC - defaultK8S - 1.23vdocker - latestEC2 구성centos7 이미지 파일로 t2.medium 으로 생성해준다.2코어 이상이 필요하므로 적절한 리소스를 사용하자2024년 6월 21일 부로 오류가 발생했다. 다른 버전을 사용하자 추후 각 ec2에 동일한 포트를 열어주기 위해 생성할 때 같은 보안그룹을 설정해준다.NACL과 보안그룹은 다른 영역의 내용이다. 서브넷 NACL을 개방하더라도 적용되지 않는다. ec2에 접근시 유저 이름을 centos 로 설정해야 정상적으로 접속된다.예를 들어ssh -i "key_file_name.pem" ec2-user@publicDomainName 이라면, ec2-user 를 centos 로 설정해야 정상적으..