- 파드 정의 Yaml
- Metadata : 이름, 네임스페이스, 레이블 및 파드에 관한 기타정보
- Spec : 파드 컨테이너, 볼륨, 기타 데이터 등 파드에 대한 실제 명세
- Status : 파드 상태, 각 컨테이너의 상태, 기타 기본 정보 현재 파드의 현재 정보
- 새 파드 정의 Yaml
- 새 파드 작성 시에는 Status는 작성 할 필요가 없다.
apiVersion: v1 kind: Pod metadata: name: kubia-manual spec: containers: - image: luksa/kubia name: kubia ports: - containerPort: 8080 protocol: TCP
- containerPort는 정보성으로 입력 실제 연결에는 영향을 끼치지 않음.
- 위 설명은 kubectl explain pods 명령어를 통해 확인이 가능
- 위와 같이 yaml을 만들고 kubectl create -f kubia-manual.yaml 명령을 실행하면 파드 생성
- 만들어진 파드의 정보를 보고 싶으면
- kubectl get po kubia-manual -o yaml
- kubectl get po kubia-manual -o json
- 으로 확인 가능 yaml로 실행했더라도 json으로 보기 가능
- kubectl get pods 명령어로 실행중인 파드들 확인 가능
-
- 컨테이너의 로그는 일반적으로 파일에 쓰기보단 표준 출력과 표준 에러에 로그를 남긴다.
- 도커가 이 스트림을 파일로 전달한다.
- ssh로 컨테이너에 접속해 docker logs <container id> 명령을 통해 로그를 가져올 수 있다.
- 하지만 직접 접근할 필요없이 쿠버네티스를 이용해 파드의 로그를 받을 수 있다.
- kubectl logs kubia-manual
- 파드 안의 특정 컨테이너의 로그만 가져올 수도 있다.
- kubectl logs kubia-manual -c kubia
- 여기서 로그는 파드가 삭제되면 함께 사라진다.
- 그렇기 때문에 로그를 유지하기 위해 중앙집중식 로깅을 사용
- 일반적인 Elastic Stack (중앙집중식 로깅의 하나)애플리케이션 로그 보기
- 포트 포워딩
- 일반적으로는 서비스를 거쳐 파드에 접근하지만
- 디버깅이나 테스트 환경을 위해 특정 파드에 직접 접근 할 수 있도록 포트 포워딩을 할 수 있다.
- kubectl port-forward kubia-manual 8888:8080
- 이제 localhost:8888로 kubia-manual에 접근 가능
- 레이블
- 레이블은 쿠버네티스를 활용하게 되면 수많은 오브젝트가 생기게 되는데 이 오브젝트들을 관리하기 쉽게 분류하여 조직화하는 역할을 한다.
- 키-벨류 쌍으로 이루어져 하나의 리소스에 몇개든 붙일 수 있고, 이후 레이블 셀렉터를 이용해 특정 리소스들만 선택해 작업을 할 수 있게 해준다.
- 인스타 태그를 붙이는 느낌
- 레이블은 메타데이터에 붙이면 된다.
... metadata: name: kubia-manual labels: env: dev app: as ...
- 파드의 레이블 확인은 kubectl get po —show-labels를 통해 할 수 있다.
- kubectl get po -l <레이블 조건> 을 통해 특정 부분집합만 확인 가능
- 레이블을 어디에 써먹을까
- 특정 워커노드에 파드 할당 (ssd, GPU 등의 이유)
- 노드에 레이블을 설정하고 pod의 yaml파일에 nodeSelector 추가
spec: nodeSelector: gpu: "true"
- 이 후 레플리케이션컨트롤러와 서비스에서 중요하게 쓰임
- 특정 워커노드에 파드 할당 (ssd, GPU 등의 이유)
- 어노테이션
- 레이블과 비슷하게 키-값 쌍으로 오브젝트를 설명하기 위해 쓰임
- 단 레이블과 다르게 오브젝트를 묶는데는 사용 불가
- 대신 더 많은 정보를 입력할 수 있음.
- ex) 새로운 기능 명시, 만든 사람 이름 등
- 네임스페이스
- 오브젝트들을 겹치지 않게 분리하고 싶을 때 사용
- 레이블은 여러 오브젝트에 들어갈 수 있기 때문에 완전 분리는 불가능
- 리눅스 네임스페이스와는 다른 개념.
- 각 네임스페이스 마다 오브젝트의 이름을 따로 관리하기 때문에 오브젝트의 이름은 네임스페이스 안에서만 유니크하면 된다. ( 네임스페이스가 다르면 같은 이름으로 두어도 된다)
- 네임스페이스가 제공하는 분리가 격리를 제공하지는 않음.
- 리소스의 삭제
- 리소스의 삭제는 위의 레이블 셀렉터, 네임스페이스, 리소스 이름 등을 이용해 삭제 가능
'CS > Infra' 카테고리의 다른 글
쿠버네티스 공부 6일차 :: 서비스는 누구지? 파드를 외부와 연결하기 (0) | 2022.10.24 |
---|---|
쿠버네티스 공부 5일차 :: 파드가 혼자 잘 실행하도록 관리하자 (라이브니스 프로브, 레플리카 셋, 데몬 셋, 잡) (1) | 2022.10.19 |
쿠버네티스 공부 3일차 :: 파드가 정확히 뭐야? (0) | 2022.10.10 |
쿠버네티스 공부 2일차 :: 쿠버네티스는 어떻게 굴러가? (0) | 2022.10.07 |
쿠버네티스 공부 1일차 :: 쿠버네티스는 왜 써? (0) | 2022.10.04 |