들어가며
replicaSet(Apache[httpd]) 오브젝트 구성
Service(LoadBalancer) 오브젝트 구성
동작 확인
들어가며:
ReplicaSet 과 Service 를 먼저 명령형 오브젝트를 이용하여 클러스터를 구성하고 loadbalancer 서비스를 이용하여 웹서비스를 구성해보는 포스트입니다.
replicaSet(Apache[httpd]) 오브젝트 구성
vagrant@kube-control1:~/q3$ cat myapp-rs.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-rs
spec:
replicas: 3
selector:
matchLabels:
app: myapp-rs
template:
metadata:
labels:
app: myapp-rs
spec:
containers:
- name: myapp
image: httpd
ports:
- containerPort: 80
protocol: TCP
livenessProbe:
httpGet:
path: /
port: 80
startupProbe:
httpGet:
path: /
port: 80
- apiVersion: 오브젝트를 생성하기 위한 API 버전.
- 오브젝트 API 버전은 kind 의 종류에 따라 다릅니다.
- kind: 오브젝트의 종류
- 예: pod, services, replicaset ...
- metadata: name, UID, namespace 등을 포함하는 기본적인 정보
- spec: 오브젝트의 상태 정의
- spec 내의 정의할 요소는 정의하고자 하는 오브젝트의 종류에 따라 다릅니다.
- selector.matchLabels: 일치성 기준 레이블 셀렉터 지정
프로브는 3가지 종류를 가집니다.
- livenessProbe
- 컨테이너가 동작 중인지 확인
- 진단에 실패하면 재시작 정책을 적용
- livenessProbe 를 선언하지 않으면, 기본 상태는 Success
- readinessProbe
- 컨테이너가 요청을 처리할 준비가 되었는지 확인
- 진단에 실패하면 엔드포인트(Endpoint) 컨트롤러는 파드의 IP 주소의 엔드포인트에서 제거
- readinessProbe를 선언하지 않으면, 기본 상태는 Success
- startupProbe
- 컨테이너 내의 애플리케이션이 시작되었는지 확인
- startupProbe가 선언되었을 경우, 진단을 통과하기 전까지 다른 프로브를 활성화하지 않음
Service(loadBalancer) 오브젝트 구성
타겟 포트는 파드의 포트를 의미합니다
포트의 동작은 다음과 같습니다.
selector 를 myapp-rs 로 하여 레플리카셋에서 지정했던 matchLabels 와 일치시켜 줍니다.
동작확인
오브젝트를 생성 후 확인해봅니다.
약간의 시간을 기다리면 각 파드들이 엔드포인트에 연결되어 있는 것을 확인할 수 있습니다.
이제 로드밸런서의 external-ip 에 8080 포트로 접근하여 확인해보겠습니다.
잘 동작하는 것을 확인할 수 있습니다.
'Kubernetes > 06. 쿠버네티스 네트워크' 카테고리의 다른 글
[쿠버네티스] 쿠버네티스 인그레스 (ingress) 소개 및 실습 (0) | 2021.06.24 |
---|---|
[쿠버네티스] 클러스터 외부 서비스 / loadBalancer (0) | 2021.06.20 |
[쿠버네티스] 클러스터 내부 서비스 / clusterIP (0) | 2021.06.18 |