Kubernetes/06. 쿠버네티스 네트워크

[쿠버네티스] Kubernetes 오브젝트를 이용한 Apache(httpd) 웹서비스 구성

Jaden Park 2021. 6. 21. 12:25

들어가며

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 포트로 접근하여 확인해보겠습니다.

 

잘 동작하는 것을 확인할 수 있습니다.