쿠버네티스의 배포
## 쿠버네티스의 배포는 아래와 같이 진행됨
## pod 삭제(kill) -> restart(redeploy) -> ok
Readiness probes
## probe check, 응답이 없으면 end point로 보내지 않는다.
(해당 pod정보를 유효하지 않는다고 판단한다.)
## liveness probe : 응답없으면 kill, 정상적인 image인지 판단
## readiness probe : 대기, 기다리다가 사용자 connection가능하면 연결시켜줌
## 보통 2개를 동시에 사용한다. 서로 보완하는 관계
## tcp socket, http health 등 사용가능
nginx-ingress-controller.yml
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx-ingress-controller namespace: ingress-nginx spec: replicas: 1 selector: matchLabels: app: ingress-nginx template: metadata: labels: app: ingress-nginx annotations: prometheus.io/port: '10254' prometheus.io/scrape: 'true' spec: serviceAccountName: nginx-ingress-serviceaccount containers: - name: nginx-ingress-controller image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.11.0 args: - /nginx-ingress-controller - --default-backend-service=$(POD_NAMESPACE)/default-http-backend - --configmap=$(POD_NAMESPACE)/nginx-configuration - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services - --udp-services-configmap=$(POD_NAMESPACE)/udp-services - --annotations-prefix=nginx.ingress.kubernetes.io env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace ports: - name: http containerPort: 80 - name: https containerPort: 443 livenessProbe: ## nginx ingress default는 livenessProbe와 readinessProbe를 똑같은걸 사용한다는 것을 알 수 있다. failureThreshold: 3 httpGet: path: /healthz port: 10254 scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 readinessProbe: failureThreshold: 3 httpGet: path: /healthz port: 10254 scheme: HTTP periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1
## cli 명령어를 통해서 readinessProbe 체크하기
test-rc.yaml
apiVersion: v1 kind: ReplicationController metadata: name: kubia-readiness spec: replicas: 3 selector: app: kubia template: metadata: labels: app: kubia spec: containers: - name: kubia image: reg.cloud.com/kubia readinessProbe: exec: command: - ls - /var/ready ports: - containerPort: 8080
$ k get svc
$ k create -f test-rc.yaml
$ k get rc
$ k get po -o wide
## STATUS가 running일때 READY가 0/X 이면 아직 컨테이너의 readiness probe가 통과 못했다 라는 것을 알 수 있다.
readinessProbe를 체크하여 start 정상적으로 되는지 확인하기
$ k exec kubia-readiness-5dk2s -- touch /var/ready
$ k get po -o wide
$ k get po -o wide
$ k get ep
## exec touch를 통해 readinessProbe가 준비가 되었음을 확인함
## endpoint(ep)에 추가됨을 알 수 있다.
반응형
'DevOps > 쿠버네티스' 카테고리의 다른 글
쿠버네티스에서 POD, Node의 리스소 관리(CPU, memory, 등) (1111) | 2018.05.03 |
---|---|
쿠버네티스 Deployment를 통한 배포 및 롤백 (931) | 2018.05.03 |
쿠버네티스를 통한 지속적 배포 전략(rolling, blue green) 실습 (959) | 2018.05.03 |
INGRESS를 사용한 쿠버네티스 네트워크 심화(sticky session, ssl connection) (942) | 2018.05.03 |
INGRESS를 사용한 쿠버네티스 네트워크 설치 및 연결 (1412) | 2018.05.03 |
쿠버네티스 service를 사용한 네트워크 설정 (1416) | 2018.05.02 |