Kubernetes in Action 8장 애플리케이션에서 포드 메타 데이터와 그 외의 리소스에 접근하기

  1. Downward API를 통한 메타 데이터 전달
    1. 사용 가능한 메타 데이터
    2. 환경 변수를 통한 메타 데이터 노출
      1. yaml spec.env
      2. kubectl exec downward env
    3. Downward API 볼륨 내의 파일을 통한 메타 데이터 전달
      1. yaml spec.containers.image:busybox.volumes.downwardAPI.items.{path, resourceFieldRef} /etc/downward
      2. kubectl exec downward ls -lL /etc/downward (key=value\n)
      3. yaml spec.volumes.downwardAPI.items.{path, resourceFieldRef}
      4. 라벨과 주석 업데이트
      5. 볼륨 스펙에서 컨테이너-레벨 메타 데이터 참조
      6. Downward API 사용시 이해해야 할 점
  2. 쿠버네티스 API 서버와 통신하기
    1. 쿠버네티스 REST API 탐색
      1. kubectl cluster-info
      2. curl https://192.168.99.100:8443 -k
      3. kubectl proxy를 통한 API 서버 접근
      4. kubectl proxy
      5. kubectl proxy를 통한 쿠버네티스 API 탐험
      6. curl localhost:8001 (json)
      7. 배치 API 그룹의 REST 엔드포인트 탐험
      8. 클러스터에 있는 모든 잡 인스턴스 목록
      9. 이름으로 특정한 잡 인스턴스 가져오기
      10. curl http://localhost:8001/apis/batch/v1/namespaces/default/jobs/my-job
      11. kubectl get job my-job -o json
    2. 포드 내에서 API 서버와 통신
      1. API 서버와의 통신을 시도해서 포드 실행하기
      2. yaml spec.containers.command:[“sleep”, “999999”]
      3. kubectl exec -it curl bash
      4. API 서버 주소 찾기
      5. kubectl get svc
      6. env | grep KUBERNETES_SERVICE
      7. curl https://kubernetes (-k)
      8. 서버의 신원 검증
      9. ls /var/run/secrets/kubernetes.io/serviceaccount
      10. curl –cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt https://kubernetes
      11. export CURL_CA_BUNDLE=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      12. curl https://kubernetes
      13. API 서버로 인증
      14. TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
      15. curl -H “Authorization: Bearer $TOKEN” https://kubernetes
      16. 실행 중인 포드의 네임스페이스 가져오기
      17. NS=$(cat /var/run/secrets/kubernetes.io/servieaccount/namespace)
      18. curl -H “Authorization: Bearer $TOKEN” https://kubernetes/api/v1/namespaces/$NS/pods
      19. 포드가 쿠버네티스와 통신하는 법 자세히 알아보기
    3. 앰배서더 컨테이너와의 API 서버 통신 간소화
      1. 앰배서더 컨테이너 패턴 소개
      2. 추가적인 앰배서더 컨테이너로 curl 포드 실행하기
      3. yaml spec.containers.name:{ambassador, luksa/kubectl-proxy:1.6.2}
      4. kubectl exec -it curl-with-ambassador -c main bash
      5. 앰배서더를 통한 API 서버와의 통신
      6. curl localhost:8001
    4. 클라이언트 라이브러리를 사용해 API 서버와의 통신
      1. 기존의 클라이언트 라이브러리 사용
      2. FABRIC8 자바 클라이언트를 사용한 쿠버네티스와의 상호작용 예시
      3. 스웨거와 OpenAPI를 사용해 자신만의 라이브러리 구축
      4. 스웨거 UI로 API 탐색
  3. 요약
    1. 포드의 이름, 네임스페이스, 그 밖의 메타 데이터가 환경 변수 또는 downwardAPI 볼륨의 파일을 통해 프로세스에 노출되는 방법
    2. CPU 및 메모리 요청 및 제한이 애플리케이션에 필요한 모든 유닛에서 애플리케이션으로 전달되는 방식
    3. 포드에서 downwardAPI 볼륨을 사요해 포드의 수명 동안 변경될 수 있는 최신 메타 데이터를 가져오는 방법 (예: 라벨 및 주석)
    4. kubectl proxy를 통해 쿠버네티스 REST API를 검색하는 방법
    5. 쿠버네티스에 정의된 다른 서비스와 마찬가지로 환경 변수 또는 DNS를 통해 포드가 API 서버의 위치를 찾는 방법
    6. 포드에서 실행 중인 애플리케이션이 API 서버와 통신하고 있으며 자신을 인증하는 방법을 확인할 수 있는 방법
    7. 앰배서더 컨테이너를 사용해서 애플리케이션 내에서 API 서버와 훨씬 더 간단하게 통신할 수 있는 방법
    8. 클라이언트 라이브러리를 사용해 쿠버네티스로 몇 분만에 상호작용할 수 있는 방법

Loading

Published
Categorized as xacdo

By xacdo

Kyungwoo Hyun

Leave a comment

Your email address will not be published. Required fields are marked *