Probe

Devops·2022년 12월 20일

Kubernetes 강의

목록 보기
6/15
post-thumbnail

readnessProbe

service 분배시 트래픽을 보통 node 1 , node2 50 : 50 분배 중 node2가 죽으면
node1로 100 유지 하고 node3 재구동시 readness걸려있으면 pod 생성 될 때 까지
node1 100 주고 생성되면 50 : 50 다시 분배

service

apiVersion: v1
kind: Service
metadata:
  name: svc-readiness
spec:
  selector:
    app: readiness
  ports:
  - port: 8080
    targetPort: 8080
    

pod

apiVersion: v1
kind: Pod
metadata:
  name: pod1
  labels:
    app: readiness  
spec:
  containers:
  - name: container
    image: kubetm/app
    ports:
    - containerPort: 8080	
  terminationGracePeriodSeconds: 0




apiVersion: v1
kind: Pod
metadata:
  name: pod-readiness-exec1
  labels:
    app: readiness  
spec:
  containers:
  - name: readiness
    image: kubetm/app
    ports:
    - containerPort: 8080	
    readinessProbe:
      exec:
        command: ["cat", "/readiness/ready.txt"]
      initialDelaySeconds: 5
      periodSeconds: 10
      successThreshold: 3
    volumeMounts:
    - name: host-path
      mountPath: /readiness
  volumes:
  - name : host-path
    hostPath:
      path: /tmp/readiness
      type: DirectoryOrCreate
  terminationGracePeriodSeconds: 0
  
  

kubectl get events -w | grep pod-readiness-exec1
kubectl describe pod pod-readiness-exec1 | grep -A5 Conditions
kubectl describe endpoints svc-readiness
touch ready.txt

livenessProbe

Pod 구동시 App Error 발생시 pod 는 running 상태지만 app은 error
상태를 재기동시켜줌

service

    apiVersion: v1
    kind: Service
    metadata:
      name: svc-liveness
    spec:
      selector:
        app: liveness
      ports:
      - port: 8080
        targetPort: 8080

pod

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod2
      labels:
        app: liveness
    spec:
      containers:
      - name: container
        image: kubetm/app
        ports:
        - containerPort: 8080
      terminationGracePeriodSeconds: 0

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-liveness-httpget1
      labels:
        app: liveness
    spec:
      containers:
      - name: liveness
        image: kubetm/app
        ports:
        - containerPort: 8080
        livenessProbe:
          httpGet:
            path: /health
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 10
          failureThreshold: 3
      terminationGracePeriodSeconds: 0  

sampleYaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-probe
  labels:
    app: probe
spec:
  containers:
  - name: probe
    image: kubetm/app
    ports:
    - containerPort: 8080	
    readinessProbe:
      exec:                   # command 내용으로 점검
        command: ["cat", "/readiness/ready.txt"]   
      initialDelaySeconds: 10
      periodSeconds: 5
      successThreshold: 3     # 3번 성공시 Service와 연결됨
    livenessProbe:
      httpGet:                # HttpGet 메소드로 점검
        path: /health         # 체크할 경로
        port: 8080            # 체크할 Port
      initialDelaySeconds: 5  # 최초 5초 후에 LivenessProbe 체크를 시작함
      periodSeconds: 10       # 10초마다 LivenessProbe 체크
      failureThreshold: 3      # 3번 실패시 Pod Restart
  
  

Object들의 모든 Event 정보를 지속적으로 조회해서 | 그중에 pod-readiness-exec1라는 단어와 매칭되는 내용만 출력

kubectl get events -w | grep pod-readiness-exec1

pod-readiness-exec1이름의 Pod 상세 내용중에 | Events와 매칭되는 단어에서 20번째 줄까지 지속적으로 출력

watch "kubectl describe pod pod-readiness-exec1 | grep -A20 Events"

profile
Cloud Engineer , backend developer

0개의 댓글