반응형


레디니스 프르브

  - pod를 위한

  - 라이브니스 프로브는 상태가 좋지 않은 컨테이너를 종료하고, 새로운 것으로 교체하여 pod의 상태를 좋게 유지한다.

    레디니스 프로브는 오직 pod가 요청을 수신할 수 있는 환경이 됐을때 수신한다.

  - pod의 레디니스 프로브가 실패하면, 해당 pod는 endpoint 오브젝트에서 제거된다.

  - 레디니스 프로브는 클라이언트가 정상 상태인 pod하고만 통신하게 하고, 시스템에 문제가 있다는 것을 알아차리지 못하게 한다. 


서비스를 통해 pod에 접속하지 못할때

  - 외부가 아닌 클러스터 안에서 클러스터IP를 대상으로 연결하고 있다는 것을 명심

  - 서비스가 액세스 가능한지 확인하기 위해 서비스 ip로 ping 보내는 것을 귀찮게 여기지 마라

  - readiness probe를 정의했다면 성공 여부를 확실히 확인하라

  - pod가 서비스의 일부분인지 확인하라(kubectl get endpoints)

  - 대상 port가 아닌 서비스에 의해 노출된 port에 연결하고 있는지를 확인하라

  - pod ip에 직접 연결을 시도해서 pod가 정확한 port의 연결을 수락하고 있는지 확인하라

  


Volume

- pod의 각 컨테이너에는 고유의 분리된 파일 시스템이 있다.

- 실제 데이터가 있는 디렉토리를 보존하기 위해서 저장소 volume을 정의한다.

- 볼륨은 pod의 컴포넌트이다.

- 독립적인 쿠버네티스 오브젝트가 아니며 스스로 생성하거나 삭제할 수 없다.

- volume의 라이프 사이클은 pod 와 같다



[뜬금 명령어]

 - 특정 리소스의 yaml 파일 확인을 위한 명령어 

   $kubectl get [리소스타입] [리소스명] -o yaml

    ex) kubectl get  pod podname -o yaml

          kubectl get configmap configmapname -o yaml


emptyDir 

- 동일한 pod에서 실행중인 컨테이너간에 파일을 공유할 때 유용



ConfigMap 

 - 설정 데이터를 저장하는 쿠버네티스 리소스

 

>ConfigMap을 구성하는 방법들

 1) pod들 중 하나로 ConfigMap을 사용

    $kubectl create configmap [configmap명] --from-literal=[key값]=[value값]


 2) 개별 파일(을 읽어와서) 내용으로 ConfigMap 엔트리 생성

    - 외부의 설정파일을 통해서 설정 데이터를 저장할 수 있다.

      $kubectl create configmap my-config --from-file = config-file.conf

        -> 위 명령어를 실행하면 kubectl 을 실행하는 디렉터리에서 config-file.conf를 찾는다.

        -> 파일이름이 맵의 키로 사용된다. 파일의 내용이 value 로...

        -> 수동으로 key명 지정도 가능하다.

             $kubectl create configmap my-config --from-file = customkey = config-file.conf


 3) 디렉토리에 있는 파일로 부터 ConfigMap 만들기
     - 파일 디렉토리에서 모든 파일을 가져올 수 있다.
       $kubectl create configmap my-config --from-file =/path/to/dir


 4) 위의 3가지 모두를 결합하여 구성할 수 있다.
     $kubectl create configmap my-config --from-file = config-file.conf --from-file =/path/to/dir --from-literal=xxx=yyy




>ConfigMap의 값을 pod의 컨테이너로 가져오는 방법

  1) 환경변수 설정 (valueFrom 필드사용)
apiVersion: v1

kind: Pod

metadata:

  name: fortune-env-from-configmap

spec:

  containers:

  - image: luksa/fortune:env

    env:

    - name: INTERVAL

      valueFrom: 

        configMapKeyRef:

          name: fortune-config

          key: sleep-interval

 

  2) configmap의 모든 항목을 한번에 환경변수로 전달하기

      - envFrom 속성을 사용

        spec:

            containers:

            - image: some-image

               envFrom:

               -  prefix: CONFIG_

                   configMapRef:

                        name: my-config-map


         ->결과는 configMap 의 key 값에 앞에 prefix 가 붙은 값으로의 환경변수가 컨테이너 내부에 존재하게 됨


    

    3) configmap 항목을 명령해 인자로 전달하기

         - 컨테이너에서 실행중인 메인 프로세서로 configMap의 값을 인자로 전달하는 방법임

           


     4) ConfigMap 엔트리를 파일로 노출하기 위해 ConfigMap Volume 사용

         - 설정파일들이 많을 경우에 사용

         - configMap 볼륨은 ConfigMap의 각 엔트리를 파일로 표시한다.

        


> ConfigMap을 사용해 볼륨을 통해 노출시키면 Pod를 다시 만들거나 Container를 다시 시작하지 않고도 설정을 업데이트 할 수 있음

    1)configmap 파일 수정

        $kubectl edit configmap [컨피그맵명]




Secret

- ConfigMap 과 유사 , key /value 쌍

- 일반설정 데이터를 저장할때는 ConfigMap 을 사용

- 중요한 , 민감한 데이터를 저장할때는 Secret을 사용


> secret 리소스 나열

  $kubectl get secret






반응형

'DevOps' 카테고리의 다른 글

쿠버네티스 구조  (0) 2019.01.10
pod-레플리케이션컨트롤러-서비스  (0) 2019.01.10
쿠버네티스 명령어 #4  (0) 2018.12.31
Docker 명령어  (0) 2018.12.28
쿠버네티스 명령어#3  (0) 2018.12.27

+ Recent posts