Pod Scheduling, configmap, secret

장동민·2022년 7월 30일
0

CKA 자격증 준비

목록 보기
7/13

1. Pod Scheduling : NodeSelector

  • Worker node에 할당된 label을 이용해 node를 선택

  • node Label 설정

$ kubectl label nodes <노드 이름><레이블 >=<레이블 >

# node Label 설정 예시
$ kubectl label nodes node1.example.com gpu=true

# Label에 gpu가 있는 node들을 조회
$ kubectl get nodes -L gpu

※ 문제1: Pod Scheduling

  • 다음의 조건으로 pod를 생성하세요

    • Name: eshop-store
    • Image: nginx
    • Node selector: disktype=ssd
  1. 어느 node에서 disktype이 ssd인지 확인(k8s-worker1에 존재)

  1. pod 이름이 eshop-store이고 Image가 nginx인 yaml 파일 생성 및 vi 에디터 실행

  1. vi 에디터에서 yaml 파일 수정(Node selector 추가)

  1. 수정한 yaml 파일 apply

  1. eshop-store인 pod 확인(k8s-worker1에 존재하는 것을 확인)


2. ConfigMap

  • 컨테이너 구성 정보를 한곳에 모아서 관리
$ kubectl create configmap NAME [--from-file=source][--from-literal=key1=value1]

※ 문제2: ConfigMap으로 환경변수 전달

(참고 URL : https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#define-container-environment-variables-using-configmap-data)

  • 작업 클러스터 : k8s

  • 다음의 변수를 configMap eshop으로 등록하세요.

    • DBNAME : mysql
    • USER : admin
  • 등록한 eshop configMap의 DBNAME을 eshop-configmap라는 이름의 nginx 컨테이너에 DB라는 환경변수로 할당하세요.

  1. 작업 클러스터 확인

  1. ConfigMap 생성 후 ConfigMap 생성 확인

  1. eshop-configmap라는 이름의 nginx 컨테이너 생성 yaml 파일을 생성

  1. ConfigMap 참조하여 yaml 파일 수정 및 등록

  1. yaml 파일 apply 후 pod 생성 확인

  1. 이름이 eshop-configmap인 pod의 콘솔로 접속하여 환경변수 할당 된 부분 확인


3. Kubernetes Secret

  • Secret : 컨테이너가 사용하는 password, auth token, ssh key와 같은 중요한 정보를
    저장하고 민감한 구성정보를 base64로 인코딩해서 한 곳에 모아서 처리

  • 민감하지 않은 일반 설정파일 configMap을 사용하고 민감한 데이터는 secret을 사용

  • Secret 생성 예시

$ kubectl create secret generic <Secret 이름> \
--from-literal=PASSWORD=<PASSWORD 입력> \
--from-literal=SCORE=<SCORE >

※ 문제3: Create a Kubernetes secret

(참고 URL : https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets)

  • 작업 클러스터 : k8s

    • Secret Name : super-secret
    • Password: bob
  • Create a pod named pod-secrets-via-file, using the redis Image, which mounts a secret named super-secret at /secrets.

  • Create a second pod named pod-secrets-via-env, using the redis Image, which exports password as CONFIDENTIAL

  1. 작업 클러스터 확인

  1. secret 생성 후 확인

  1. 이름이 pod-secrets-via-file인 yaml 파일 생성 및 vi 편집 실행

  1. volumeMounts와 volumes 옵션 추가하여 이름이 pod-secrets-via-file인 yaml 파일 수정 및 저장

  1. 이름이 pod-secrets-via-file인 yaml 파일 apply 후 확인

  1. 이름이 pod-secrets-via-file인 Pod 접속 및 Password가 잘 Mount 되었는지 확인

  1. 이름이 pod-secrets-via-env인 yaml 파일 생성 및 vi 편집 실행

  1. 만들었던 secret에 참조한 값을 추가하여 이름이 pod-secret-via-env인 yaml 파일 수정 및 저장

  1. 이름이 pod-secret-via-env인 yaml 파일 apply 후 확인

  1. 이름이 pod-secrets-via-env인 Pod 접속 후 환경설정 조회하여 확인

profile
나만의 데이터베이스

0개의 댓글