Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- compose.yml로 stackdriver-export 서비스 설정
- 포트 9255 설정
- ADC 사용자 인증
- 방화벽 오픈
- stackdriver exporter 설치
- stackdriver exporter
- prometheus dockerfile
- 리소스전체삭제
- github 사용법
- dockerfile로 stackdriver-export이미지 생성
- github
- prometheus 서버 서비스등록
- prometheus 연동
- GCP VM
- 리소스삭제
- git
- 서비스 계정 키 설정
- 스위치 4대 기능
- Prometheus 서버 설치
- vs code로 ssh 접속
- GCP 모니터링
- prometheus.yml 파일 설정
- 정적 웹 사이트 호스팅
- gke 클러스터 액세스 설정
- minikube 설치 및 실행
- kubectl 설치
- aws-nuke
- Prometheus 서버 설정
- 애플리케이션 기본 사용자 인증 정보
- permission denied 에러 발생
Archives
- Today
- Total
My __ 노트
[ Kubernetes ] Pod 생성 / 조회 /삭제 본문
개념 : Pod는 하나 이상의 컨테이너 그룹이며 해당 그룹 안에서는스토리지 및 네트워크를 공유합니다. 쿠버네티스에서 배포 및 관리 가능한 가장 작은 컴퓨팅 단위입니다.
🫛 Pod는 여러 컨테이너를 감싸고 있는 콩껍질 같다고 생각해도 좋습니다. 🫛
목차
▶ Pod 기본 속성
▶ Pod 생성
▶ Pod 조회
▶ Pod 삭제
▶ Pod 기본 속성
기본 속성은 아래와 같으며 각 속성에 대한 설명은 주석으로 작성하였습니다.
apiVersion: v1 # kubernetes API 버전
kind: Pod # 오브젝트 타입
metadata: # 오브젝트를 유일하게 식별하기 위한 정보
name: test-pod # 오브젝트 이름
namespace: default # 지정하지 않으면 자동으로 default에 위치하며 다른 namespace에 위치하고 싶을 경우 기재
labels: # 오브젝트 집합을 구할 때 사용할 이름표, 여러개 지정 가능
app: test
spec: # 사용자가 원하는 오브젝트의 바람직한 상태
nodeSelector: # Pod을 배포할 노드
containers: # Pod 안에서 실행할 컨테이너 목록
- image : # 컨테이너에서 사용할 이미지
name: # 컨테이너에서 사용할 이름
ports:
- containerPort: # 컨테이너에서 사용할 port, protocol을 지정하지 않으면 TCP로 설정 됨
resources: # 컨테이너가 사용할 리소스 범위 지정 (LimitRange 오브젝트를 통해 설정할 수 있지만 해당 내용은 추후에 다시 언급 예정)
limits: # limits 만 작성하면 requests 값도 동일하게 적용됨
cpu: 100m
memory: 120Mi
requests: # requests 만 작성하면 limits 값도 동일하게 적용되지 않고 default limits 값으로 적용됨
cpu: 100m
memory: 120Mi
status: # 쿠버네티스가 추가해주는 정보이며 해당 필드아래 nodeIP, podIP 상태 등이 포함되어 있음
아래 이미지는 status 속성에는 실제로 어떤 값들이 있는지 확인할 수 있는 예시 이미지입니다.
>> hostIP는 노드 IP이며 podIP는 생성한 pod IP입니다.
해당 정보들은 쿠버네티스 값을 컨테이너로 전달하는 리소스 설정 시 사용됩니다. 참고 링크 ⬅️
▶ Pod 생성
아래 예시는 pod 안에 단일 컨테이너(nginx)를 실행하는 yaml 코드입니다.
sudo vim web.yaml
----------------------------------------
apiVersion: v1
kind: Pod
metadata:
name: test-app
spec:
containers:
- name: test-app
image: nginx:1.14.2
ports:
- containerPort: 8080
resources:
limits:
cpu: "100m"
memory: "120Mi"
yaml 파일을 작성 완료하였다면 실제로 apply를 통해 pod를 생성해 보겠습니다.
kubectl apply -f [pod 생성 yaml 파일]
#옵션: -f, --filename=[] : 적용할 리소스 구성이 포함된 파일
-----------------------------------------------------------
(예시)
$ kubectl apply -f web.yaml
▶ Pod 조회
일반 조회
kubectl get pods
------------------------------------------------
NAME READY STATUS RESTARTS AGE
test-app 1/1 Running 0 7m22s
상세 조회
: -o wide 옵션 추가
kubectl get pods -o wide
------------------------------------------------
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test-app 1/1 Running 0 8m55s 10.240.1.6 gke-blue-test-default-pool <none> <none>
: 양식 지정 가능 ( json, yaml, name, go-template, go-template-file, template, templatefile, jsonpath, jsonpath-as-json, jsonpath-file )
>> yaml 형식으로 조회해보기
kubectl get pods test-app -o yaml
------------------------------------
apiVersion: v1
kind: Pod
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{},"name":"test-app","namespace":"default"},"spec":{"containers":[{"image":"nginx:1.14.2","name":"test-app","ports":[{"containerPort":8080}],"resources":{"limits":{"cpu":"100m","memory":"120Mi"}}}]}}
creationTimestamp: "2023-11-27T04:48:42Z"
name: test-app
namespace: default
... 이하 생략 ...
특정 pod 조회
kubectl get pods [podname] -o wide
------------------------------------------------
(예시)
$ kubectl get pods test-app -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test-app 1/1 Running 0 12m 10.240.1.6 gke-blue-test-default-pool <none> <none>
Pod 안의 컨테이너 조회 :
kubectl get pods -o jsonpath={..spec.containers[*].name}; echo --------------------------------------------------------------- test-app test-app-2-cn1 test-app-2-cn2
특정 Pod 안의 컨테이너 조회 :
kubectl get pod [podname] -o jsonpath={..spec.containers[*].name}; echo (예시) $ kubectl get pod test-app-2 -o jsonpath={..spec.containers[*].name}; echo -------------------------------------------------------------------------- test-app-2-cn1 test-app-2-cn2
▶ Pod 삭제
pod 네임을 이용한 삭제
kubectl delete pod [pod네임]
$ kubectl delete pod test-app
--------------------------------
pod "test-app" deleted
pod 생성 yaml 파일을 이용한 삭제
kubectl delete -f [pod생성yaml 파일명]
$ kubectl delete -f web2.yaml
---------------------------------
pod "test-app-2" deleted
'Kubernetes' 카테고리의 다른 글
[ Kubernetes ] 레이블(labels) 생성 / 수정 / 조회 / 삭제 (0) | 2023.11.28 |
---|---|
[ Kubernets ] 컨테이너에 환경 변수(Node IP/ Pod IP) 정보 넣기 (0) | 2023.11.27 |
[ Kubernetes ] api 오브젝트 목록 조회 & 속성 정보 확인 (0) | 2023.11.27 |
[ WSL -우분투 배포 환경 ] minikube 설치 및 실행 (0) | 2023.09.08 |
[ Window PC ] minikube 설치 및 실행 (0) | 2023.09.01 |