개요
1.헬름을 이용해서 Nginx 설치하기
2. startup probe, liveness probe, readiness probe 알아보기
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo ls
NAME URL
github-ksh https://sunghyun-kim-nhn.github.io/k8s-study-helm
bitnami https://charts.bitnami.com/bitnami
helm search repo nginx
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/nginx 15.11.0 1.25.4 NGINX Open Source is a web server that can be a...
bitnami/nginx-ingress-controller 10.4.0 1.9.6 NGINX Ingress Controller is an Ingress controll...
bitnami/nginx-intel 2.1.15 0.4.9 DEPRECATED NGINX Open Source for Intel is a lig...
helm pull nginx
nginx 헬름 차트가 받아진다.
-rw-r--r--@ 1 nhn staff 231B 2 17 01:25 Chart.lock
-rw-r--r--@ 1 nhn staff 1.0K 2 17 01:25 Chart.yaml
-rw-r--r--@ 1 nhn staff 69K 2 17 01:25 README.md
drwxr-xr-x@ 3 nhn staff 96B 2 19 17:35 charts
drwxr-xr-x@ 17 nhn staff 544B 2 19 17:35 templates
-rw-r--r--@ 1 nhn staff 3.3K 2 17 01:25 values.schema.json
-rw-r--r--@ 1 nhn staff 41K 2 17 01:25 values.yaml
nhn@AL01600616 ~/kube-study/nginx ls templates
NOTES.txt extra-list.yaml ingress.yaml prometheusrules.yaml servicemonitor.yaml
_helpers.tpl health-ingress.yaml networkpolicy.yaml server-block-configmap.yaml svc.yaml
deployment.yaml hpa.yaml pdb.yaml serviceaccount.yaml tls-secrets.yaml
kubectl create ns nginx
kubectl ns nginx
helm install nginx -f my-values.yaml .
현재 위치의 헬름 차트를 이용해서 설치한다.
k get pod -n nginx -o wide
NAME READY STATUS RESTARTS AGE
nginx-6478d87dc-8tqlg 1/1 Running 0 8m14s 10.10.180.240 worker-node1 <none> <none>
nginx-6478d87dc-tw7r2 1/1 Running 0 8m14s 10.10.180.239 worker-node1 <none> <none>
nhn@AL01600616 ~/kube-study/nginx helm ls
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /Users/nhn/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /Users/nhn/.kube/config
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
nginx nginx 1 2024-02-19 17:43:27.287431 +0900 KST deployed nginx-15.11.0 1.25.4
k get all
k get all
NAME READY STATUS RESTARTS AGE
pod/nginx-6478d87dc-8tqlg 1/1 Running 0 8m51s
pod/nginx-6478d87dc-tw7r2 1/1 Running 0 8m51s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx LoadBalancer 10.105.188.107 <pending> 80:31752/TCP 8m51s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 2/2 2 2 8m51s
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-6478d87dc 2 2 2 8m51s
k get deploy,svc,configmap
k get deploy,svc,configmap
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 2/2 2 2 9m55s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx LoadBalancer 10.105.188.107 <pending> 80:31752/TCP 9m55s
NAME DATA AGE
configmap/kube-root-ca.crt 1 10m
## NGINX containers' startup probe.
- startupProbe는 컨테이너가 처음 시작될 때만 실행되는 프로브입니다. 즉, 컨테이너가 처음 시작될 때만 실행되고 그 이후에는 실행되지 않습니다.
- 이 프로브는 애플리케이션이 초기화되는 동안 컨테이너의 상태를 확인하는 데 사용됩니다. 예를 들어, 애플리케이션이 데이터베이스 스키마를 초기화하는 동안에는 startupProbe가 사용될 수 있습니다.
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
## @param startupProbe.enabled Enable startupProbe
## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
## @param startupProbe.periodSeconds Period seconds for startupProbe
## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe
## @param startupProbe.failureThreshold Failure threshold for startupProbe
## @param startupProbe.successThreshold Success threshold for startupProbe
##
startupProbe:
enabled: false
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 6
successThreshold: 1
## NGINX containers' liveness probe.
- livenessProbe는 컨테이너가 현재 실행 중인지 확인하는 데 사용됩니다. 즉, 컨테이너가 계속 실행 중인지 여부를 확인하여 필요에 따라 다시 시작하거나 컨테이너를 복구할 수 있도록 도와줍니다.
- 이 프로브는 컨테이너가 정상적으로 작동하고 있는지 주기적으로 확인하고, 컨테이너가 죽었을 때 이를 감지하여 Kubernetes가 해당 컨테이너를 재시작하도록 유도합니다.
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
## @param livenessProbe.enabled Enable livenessProbe
## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
## @param livenessProbe.periodSeconds Period seconds for livenessProbe
## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
## @param livenessProbe.failureThreshold Failure threshold for livenessProbe
## @param livenessProbe.successThreshold Success threshold for livenessProbe
##
livenessProbe:
enabled: true
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
failureThreshold: 6
successThreshold: 1
## NGINX containers' readiness probe.
- readinessProbe는 컨테이너가 요청을 처리할 수 있는 상태인지를 확인하는 데 사용됩니다. 즉, 컨테이너가 준비되었는지를 확인하고, 서비스 트래픽을 전달할 준비가 되었는지를 결정합니다.
- 이 프로브는 컨테이너가 시작되고 서비스가 정상적으로 제공될 수 있을 때까지 기다릴 수 있도록 합니다. 만약 컨테이너가 아직 준비되지 않았다면 해당 컨테이너에 트래픽을 전달하지 않습니다.
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
## @param readinessProbe.enabled Enable readinessProbe
## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
## @param readinessProbe.periodSeconds Period seconds for readinessProbe
## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
## @param readinessProbe.failureThreshold Failure threshold for readinessProbe
## @param readinessProbe.successThreshold Success threshold for readinessProbe
##
readinessProbe:
enabled: true
initialDelaySeconds: 5
timeoutSeconds: 3
periodSeconds: 5
failureThreshold: 3
successThreshold: 1
- startupProbe는 초기화 중에만 실행되고,
- livenessProbe는 컨테이너의 실행 여부를 주기적으로 확인하며,
- readinessProbe는 컨테이너가 서비스 요청을 처리할 준비가 되었는지를 확인합니다.
이들은 모두 애플리케이션을 관리하고 안정적으로 실행하는 데 중요한 도구입니다.
'Kubernetes > 활용' 카테고리의 다른 글
쿠버네티스 서비스(service) 사용하기 (1) (0) | 2024.02.22 |
---|---|
Helm 헬름 활용(3) (0) | 2024.02.19 |
Helm 헬름 활용(1) (0) | 2024.02.19 |
잘못된 pod 생성 트러블 슈팅 (0) | 2024.02.15 |
쿠버네티스 트러블슈팅의 기본 프로세스 (0) | 2024.02.15 |