쿠버네티스에서 특정 팟에 대한 로그를 얻고싶을떄 사용하는 방식.
명령어는 간단하게 다음과 같다. 만일 webapp-1이라는 pod의 로그를 보고싶다면
kubectl logs webapp-1
만약에 webapp-2라는 이름을 가진 pod이 두개의 컨테이너에서 돌고있다면 컨테이너 지정을 해줘야한다.
따라서, simple-webapp이라는 컨테이너안의 webapp-2의 로그를 보고싶다면 다음과같은 명령어로 확인한다
kubectl logs webapp-2 -c simple-appweb
Commands & Args
쿠버네티스에도 Dockerfile처럼 커맨드를 파일에 첨부해서 날려줄수있다
Dockerfile에서는 ENTRYPOINT, CMD등이 있다면
쿠버네티스에는 yaml파일안에 spec - containers안에다가 command로 선언해줄수있다. 다음은 sleep 이라는 명령어를 날려줄때의 예시이다
그리고 만약에 Dockerfile안에도 커맨드가 존재하고, yaml파일안에도 커맨드가 존재할때는
무조건 쿠버네티스에서 실행하는 파일의 커맨드가 우선순위가 배정된다.
만일 yaml파일의 image에서 arguments를 넣어주고싶다면 containers안에 args 를 넣어주면된다
Env
쿠버네티스에서 환경변수를 설정해주는 방식은 다음과같다.
먼저 pod을띄우는것처럼 환경변수 정보가 담긴 "configMaps"을 띄울수가있다.
기존에 띄워져있는 configmaps을 보려면. 다음과같은 명령어로 보면되고
kubectl get configmaps
configmaps에 어떤 환경변수가 선언되어있는지 보려면 describe 명령어를 사용하면된다. (예시로는 webapp이름을 가진 configmap)
kubectl describe configmaps webapp
이렇게 configmap파일을 만들려면 pod을 만들었던것처럼 yaml파일안에 kind부분을 "ConfigMap"으로 설정해주면된다
자, 이제 만들어준 ConfigMap을 띄우고자하는 Pod에 연결시켜주려면 다음과같이 Pod yaml파일에 명시를 해주면된다.
containers에 envFrom-configMapRef 을써줘서 대응되는 configMap 이름을 넣어주면된다.
Secret
특정DB에 암호와 계정 정보를 넣어두고싶다면 어떻게할까, 위의 ConfigMaps은 암호화 처리가 안되어있어서 쉽게유출될수있는 단점이 있다. 쿠버네티스에선 이러한 유출을 막기위해서 Secret이라는 타입도 제공한다.
command/output | ConfigMaps | Secret |
describe | 안에 들어있는 환경변수값이 그대로 노출된다 | 안에 들어있는 환경변수값의 데이터 크기만 노출된다 |
데이터를 안에 들여다봐도(get 명령어) 암호화 처리가 되어있어서 쉽게 볼수가없다. 강의에서는 base64로 암호화가 되어있다고하는데, 다른 암호화방식도 가능할것같다.
또한, 다음과같은 특징이 있다
- 대응되는 Pod이 데이터 요청을할때 데이터를 전송해준다
- 대응되는 Pod이 삭제될경우 Secret정보도 같이 삭제된다
- 디스크 저장소에 저장되는것이 아닌 tmpfs에 저장된다(tmpfs: 휘발성 메모리)
'Develop > DevOps' 카테고리의 다른 글
[Airflow] Ubuntu20.04 Anaconda 상에서 Airflow 간단설치 (0) | 2021.08.13 |
---|---|
[MLOps] Airflow 트러블슈팅 정리 (0) | 2021.08.04 |
[MLOps] Kubernetes CKA자격증 공부 (2) (0) | 2021.07.05 |
[MLOps] Kubernetes CKA자격증 공부(1) (0) | 2021.06.30 |
[MLOps] Basic Structures (0) | 2021.06.05 |