-
쿠버네티스 기초 개념Server 2021. 7. 27. 22:57
쿠버네티스에는 여러가지 오브젝트들이 있다. 아래 오브젝트들은 이해해야 한다!
Pod
- 쿠버네티스에서 관리하는 가장 작은 배포단위
- pod은 1개이상의 컨테이너를 포함 할 수도 있다.(보통은 1개를 사용한다)
- libenessProbe
-컨테이너가 정상적으로 동작하는지 체크
-정상적으로 동작하지 않는 다면 컨테이너를 재시작하여 문제를 해결
- readingnessProbe
-컨테이너가 준비되었는지 체크
-정상적으로 준비되지 않는다면 pod으로 들어오는 요청을 제외
ReplicaSet
- pod을 정해진 수만큼 복제하고 관리해주는 것
- pod만 단독으로 만들면 서버가 죽어서 pod이 사라지는등 문제가 생기면 자동으로 복구가 되지 않음.
- resplicaset은 label을 체크해서 원하는 수의 Pod이 없으면 새로운 pod을 생성함
- 실제로는 replicaset을 단독으로 쓰는 경우는 없다(deployment가 resplicaset을 이용하고 주로 deployment를 사용함)
Deployment
- replicaset을 이용해서 pod을 업데이트하고, 이력을 관리하여 롤백하거나, 특정버전으로 돌아갈 수 있게 해줌
- 쿠버네티스에서 가장 많이 사용되는 오브젝트
- 다양한 배포 전략이 있음 ex) rolliongUpdate방식...
Service
- 쿠버네티스는 pod과 직접 통신 하는 방법 대신 별도의 고정된 Ip를 가진 서비스를 만들고 그 서비스를 통해 pod에 접근하는 방식을 이용
- pod은 자체ip를 가지고 다른 pod과 통신 할 수 있지만, 쉽게 사라지고 생성되는 특징때문에 직접통신하는 방법은 권장하지 않음
<service> Cluster IP(내부용)
- 클러스터 내부에 새로운 IP를 할당하고 여러개의 pod을 바라보는 로드밸런서 기능을 제공
- 서비스 이름을 내부 도메인서버에 등록하여 Pod간에 서비스 이름으로 통신을 가능하게 해줌
NodePort(외부용)
- 클러스터 외부에서 접근 할 수 있게 해주는 것
- 포트 미지정시 30000~32768 자동 할당
- 클러스터의 모든 노드에 포트를 오픈함
LoadBalancer
- 자동으로 살아 있는 노드에 접근하기 위해 모든 노드를 바라보는 오브젝트(알아서 살아 있는 노드에 접근함)
- NodePort의 단점은 노드가 사라졌을 때 자동으로 다른 노드를 통해서 접근이 불가능하다
- 만약 3개의 노드가 있다면 3개중 아무 노드로 접근해도 NodPort로 연결 할 수 있지만, 어떤 노드가 살아 있는지는 알수가 없음.
<LoadBalaner> Ingress
- 포트는 1개만 오픈하고, 도메인이나 주소에 따라 분기를 해주는 역할
- 어떻게 동작?
1) ingress controller는 Ingress 변화를 감시함
2) ingresss contorller는 변경된 내용을 Nginx에 설정하고 프로세스 재시작(설정 변경시 자동적용)
<Ingress> Volume
- 컨테이너의 디렉토리를 외부저장소와 연결하고 다양한 플러그인하여 흔히 사용하는 대부분의 스토리지를 별도 설정없이 사용할 수 있음
- aws사용 할 경우 aws Elastick Block Store같은 volum을 사용함
- 컨테이너가 사라지면 내부 디렉토리도 사라지기 때문에..중요데이터는 외부 저장소랑 연결을 해야함
- 보통 사이드카라는 패턴을 이용함 ex) 특정 컨테이너에서 생성되는 로그 파일을 별도의 컨테이너가 수집 할 수 있게 함
- emptry dir
- hostpath
ConfigMap
- 컨테이너에서 설정파일을 관리하는 방법은 이미지를 빌드할때 복사하거나, 컨테이너를 실행할때 외부 파일을 연결하는 방법이 있음 , 쿠버네티스는 configmap으로 설정을 관리함!
Scret
- configmap에 비밀번호를 넣어 놓기는 부적합하여, 해당 오브젝트가 생김
- 하지만 암호화되지는 않음...base64로 저장됨
'Server' 카테고리의 다른 글
[Ubuntu] 우분투 마우스 미끄러짐 현상 해결법 (0) 2019.06.15 Tomcat 과 Aphache를 같이 사용하는 이유 (0) 2018.07.30