본문 바로가기

TEAM STUDY/대세는 쿠버네티스 [초급~중급]

(11)
▶ kubernetes - POD POD - Lifesycle Pod > Status > Phase Pending 최초 상태 PodScheduled : True Initialized : True Running 원할하게 작동이 시작 하나 또는 여러 개가 비정상 작동시 Wating Succeeded 작업 모두 성공 Failed 작업 중 하나라도 에러 발생시 Pod > Status > Conditions Initialized ContainerReady PodScheduled Ready Pod > Status > Reason ContainersNotReady PodComleted Pod > Containers > ContainerStatuses > Status Wating Running Terminated Pod > Containers > Co..
▶ kubernetes - Controller ( DaemonSet, Job, CronJob ) DaemonSet ReplicaSet 은 Node 의 남은 자원을 비교해 Pod 를 할당하지만 DaemonSet 은 자원에 상관없이 공평하게 각 Node 에 Pod 를 할당한다. Job 프로세스가 일을 하지 않으면 pod 는 종료된다. 종료 : 자원을 사용하지 않는 상태로 멈춰있다. Crontab 특정 시간에 반복되야 하는 작업을 주기적으로 실행한다.
▶ kubernetes - Deployment (Recreate, Rolling Update) Deployment 현재 한 서비스가 운영중인데 이 서비스를 업데이트 해야해서 재배포를 해야할 때 도움을 주는 컨트롤러이다. Recreate 다운타임이 발생하기 때문에 일시적인 중단이 가능한 서비스에 알맞는 배포방법. Deployment Pod 1 에서 Pod 2 로 업데이트시 점진적인 업데이트가 이루어진다. Pod 1 Pod 1 Pod 1 Pod 1 Pod 2 Pod 1 Pod 2 Pod 2 Pod 2 Pod 2 위와같이 업데이트가 될 경우에는 빨간 글씨 구간에서는 어떤 사용자는 Pod 1 에 어떤 사용자는 Pod 2 에 다른 서비스를 사용할 수도 있다. 추가적인 자원을 요구하지만 다운타운이 없다는 것이 큰 장점이다. Blue/Green 서비스를 배포하는 Controller 와 Pod 들을 그대로 복제..
▶ kubernetes - Replication Controller, ReplicaSet Controller 서비스를 관리하고 운영하는데 필요한 요소 컨트롤러가 제공하는 기능 Auto Healing node 가 다운되었을 때 서비스가 비정상작동하게 되는데 즉각 인지 후 파드를 다른 노드에 새로 만든다. Software Update 여러 pod 에 대한버전을 업그레이드 해야할 경우 컨트롤러를 통해 쉽게 가능하다. 업데이트 와중에 문제가 생긴다면 롤백을 하는 기능도 제공한다. Auto Scaling pod 의 리소스가 limit 상태가 되었을 때 상태를 파악하고 pod 를 하나 더 만들어줌으로써 파드를 죽지않게 해준다. 해당 서비스는 성능에 대한 장애가 없이 안정적인 서비스운영 가능하다. Job 일시적인 작업을 할 경우에 필요한 순간에만 pod 를 생성해 작업 할당 / 반환를한다. 작업을 할 때..
▶ kubernetes - NameSpace, ResourceQuota, LimitRange NameSpace 한 네임스페이스 안에는 같은 타입의 오브젝트들은 이름이 중복될 수 없다. 오브젝트들마다 별도의 유효아이디가 존재하기는 하지만, 하나의 네임스페이스 안에서는 같은 종류의 오브젝트라면 이름 또한 유효 아이디 같이 유일한 키 역활을 할 수가 있는 셈이다. 네임스페이스의 목적중에 하나가 타 네임스페이스의 자원과 분리가 되어 관리하려는 것이다. 네임스페이스를 지우면 그 안의 자원들도 모두 삭제된다. ResourceQuota 네임스페이스의 자원 한계를 설정하는 오브젝트이다. Compute Resource cpu memory storage ... Object Count Pod Service ConfigMap PVC ... LimitRange 각각의 파드마다 네임스페이스에 들어올 수 있는지 자원을 체..
▶ kubernetes - ConfigMap, Secret 특정 서비스를 개발버전과, 상용버전으로 관리할 때 요구조건 개발 SSH : False User : Dev Key : LS0tLs00000000000 운영 SSH : True User : Prod Key :MII3Ldasdasd 위의 요구조건과 같이 세팅을 하려면 서로 각각 다른 이미지 파일을 가지고 있어야하는데 용량이 큰 이미지 파일을 변수값만 다른 상태로 들고 있는건 잘못된 구조이다. 이런 경우에 아래와 같이 ConfigMap 과 Secret 을 이용할 수 있다. ENV - Liternal 컨피그맵은 키와 밸류로 구성이 되어있다. 파드를 생성할 때 컨피그맵을 가져와서 컨테이너 안의 환경변수에 세팅을 할 수 있다. 시크릿은 보안적인 요소의 값들을 저장하는 용도로 사용한다. 패스워드 인증키 시크릿은 Bas..
▶ kubernetes - Volume emptyDir 컨테이너들끼리 데이터를 공유하기 위해서 볼륨을 사용하는 것 최초 볼륨이 생성될 떄는 항상 볼륨 안에 내용이 비어있기 때문에 empty 라는 명칭을 가지게 되었다. 만약에 컨테이너 1 번이 웹 역할을 하는 서버이고 컨테이너 2번이 백엔드단이라면 1번 컨테이너 웹서버로 받은 특정 파일을 마운트가 된 볼륨에 저장을 해놓고 백엔드단에 있는 2번 컨테이너도 해당 볼륨을 마운트를 하고 있다면 이 두 서버가 이 볼륨을 자신의 로컬에 있는 파일처럼 사용하기 때문에 이 두 서버가 파일을 주고 받을 필요가 없이 편하게 사용 가능하다. pod 안에 생성되기 때문에 파드에 문제가 발생해서 재생성이 되면 데이터가 싹 없어진다는 것을 의미한다. 그래서 이 볼륨에 쓰이는 데이터는 꼭 일시적인 사용목적에 의한 데이터..
▶ kubernetes - Object Service Cluster IP 외부에서 접근 불가능 클러스터 내에서 접근 가능 이 IP 에 접근할 수 있는 대상은 클러스터 내부에 접근을 할 수 있는 운영자와 같은 인가된 사용자 밖에 없다. 주작업 쿠버네티스 대시보드 관리 각 파드의 서비스 상태를 디버깅 할 때 Node Port 물리적인 호스트의 IP 를 통해서 파드에 접근을 할 수 있다. 대부분 호스트 IP 는 보안적으로 내부망에서나 접근을 할 수 있도록 네트워크를 구성하기 때문에 이 노드 PORT 는 클러스터 밖에는 있지만 그래도 내부망안에서 사용을 해야 할 때 사용한다. 또한 일시적인 외부 연동용으로도 사용이 되는데 우리가 내부 환경에서 개발을 하다가 외부에 간단한 데모를 보여줘야 할 때 종종 네트워크 중계기에 포트포워딩을 해서 외부에서 내부 시스템에 연계를..