Closed guswns1659 closed 2 months ago
Kubernetes에서 livenessProbe
와 readinessProbe
는 컨테이너의 상태를 모니터링하고 관리하기 위해 사용되는 두 가지 중요한 메커니즘입니다.
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 3
periodSeconds: 5
readinessProbe:
httpGet:
path: /readiness
port: 8080
initialDelaySeconds: 3
periodSeconds: 5
livenessProbe
와 readinessProbe
를 주기적으로 호출합니다.initialDelaySeconds
후 시작하여 periodSeconds
간격으로 프로브를 실행합니다.초기 상태:
첫 번째 단계:
maxSurge
에 따라 2개의 새로운 Pod가 생성됩니다.두 번째 단계:
maxUnavailable
에 따라 종료됩니다.세 번째 단계:
maxSurge
가 2이기 때문에, 동시에 최대 2개의 추가 Pod가 존재할 수 있습니다).maxUnavailable
에 따라).네 번째 단계:
다섯 번째 단계:
Kubernetes의 Deployment
에서 컨테이너가 트래픽을 받을 준비가 되었는지를 판단하는 기준은 Readiness Probe입니다.
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: example-container
image: example-image:latest
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
네, 맞습니다. Kubernetes에서 엔드포인트를 생성할 때, 서비스의 셀렉터(selector)는 해당 라벨(label)을 가진 Pod들을 검색하여 그 Pod들의 IP 주소를 찾아 엔드포인트로 등록합니다.
Pod 생성: 애플리케이션의 인스턴스인 여러 Pod가 특정 라벨을 가지고 클러스터 내에 생성됩니다.
서비스 생성: 서비스가 생성되면, 이 서비스는 지정된 셀렉터(selector)를 사용하여 특정 라벨을 가진 Pod들을 선택합니다.
app: example
라벨을 가진 모든 Pod를 선택합니다.apiVersion: v1
kind: Service
metadata:
name: example-service
spec:
selector:
app: example
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIP
엔드포인트 생성: 서비스가 선택한 Pod들의 IP 주소와 포트를 기반으로 엔드포인트를 자동으로 생성합니다.
트래픽 전달: 서비스에 대한 요청이 들어오면, Kubernetes의 kube-proxy가 요청을 해당 엔드포인트로 전달합니다.
엔드포인트는 kubectl get endpoints
명령어를 사용하여 확인할 수 있습니다. 예를 들어, example-service
라는 이름의 서비스에 대한 엔드포인트를 확인하려면 다음과 같이 실행합니다.
kubectl get endpoints example-service
NAME ENDPOINTS AGE
example-service 10.244.1.5:8080 10m
10.244.1.6:8080 10m
위 출력에서 10.244.1.5:8080
및 10.244.1.6:8080
이 서비스 트래픽을 받을 Pod들의 IP와 포트입니다.
이러한 과정에서 서비스의 셀렉터는 특정 라벨을 가진 Pod들을 검색하여 그 IP 주소를 엔드포인트로 사용합니다. 이를 통해 Kubernetes는 클러스터 내에서 Pod 간의 트래픽을 효율적으로 관리하고 로드 밸런싱을 제공합니다.
7-2주차
대표적인 오브젝트
7-3주차
카카오페이의 k8s