일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 구조분해 할당
- Endpoints
- 비구조화 할당
- On-Premise
- prometheus
- DynamoDB
- grafana
- 옵셔널 체이닝
- 온프레미스
- docker
- optional chaining
- docker swarm
- cognito
- api gateway
- 자바스크립트
- AWS
- VPC
- Service
- Site-to-Site VPN
- transit gateway
- 단축 평가
- Await
- elasticsearch
- JavaScript
- null 병합 연산자
- Proxy Resource
- vgw
- CloudFormation
- Custom Resource
- Kubernetes
- Today
- Total
만자의 개발일지
[Kubernetes] Pod 구성 및 생성하기 본문
이번 포스팅에서는 YAML파일로 Pod를 구성하고 Pod를 생성하는 법에 대해 포스팅하도록 하겠습니다.
Pod란?
Pod는 쿠버네티스에서 컨테이너의 기본 단위로, 가장 기본적인 배포 단위이며, 1개 이상의 컨테이너로 구성된 컨테이너의 집합입니다.
자세한 내용은 아래 글을 참고하시길 바랍니다.
https://yoo11052.tistory.com/189
Pod 구성하기
먼저 다음과 같이 YAML 파일을 구성해줍니다.
apiVersion: v1
kind: Pod
metadata:
name: web
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
metadata 섹션을 통해 Pod의 이름과 라벨을 지정해 줄 수 있습니다. 지금은 라벨을 굳이 생성해줄 필요는 없지만 나중에 서비스의 라벨 셀렉터를 통해 Pod를 묶어줄 수 있습니다.
spec 섹션은 Pod에서 실행될 컨테이너의 스펙(이미지, CPU, 메모리 등등..)을 지정해 줄 수 있습니다.
Pod 생성하기
YAML 파일을 구성해주셨다면 다음 명령어를 통해 Pod를 생성합니다.
$ kubectl apply -f pod.yaml
pod/web created
생성된 Pod는 다음 명령어를 통해 확인할 수 있습니다.
$ kubectl get pod [-n namespace]
NAME READY STATUS RESTARTS AGE
web 1/1 Running 0 3m37s
metadata 섹션에서 별도의 Namespace를 지정해주지 않은 경우 Pod는 기본적으로 default Namespace에 생성됩니다.
default Namespace는 생략이 가능하며 다른 Namespace에 Pod를 생성했을 경우 -n 옵션을 통해 접근할 수 있습니다.
Pod의 정보를 보고 싶은 경우 다음 명령어를 통해 확인할 수 있습니다.
$ kubectl describe pod [pod] [-n namespace]
Name: web
Namespace: default
Priority: 0
Node: docker-desktop/192.168.65.4
Start Time: Tue, 19 Jul 2022 11:11:41 +0900
Labels: app=nginx
Annotations: <none>
Status: Running
IP: 10.1.0.59
IPs:
IP: 10.1.0.59
Containers:
nginx:
Container ID: docker://9cb0e3e8207bb792a221532459f9960204922e6f6d28d7b57ab468a77ff77014
Image: nginx:latest
Image ID: docker-pullable://nginx@sha256:db345982a2f2a4257c6f699a499feb1d79451a1305e8022f16456ddc3ad6b94c
Port: <none>
Host Port: <none>
State: Running
Started: Tue, 19 Jul 2022 11:11:45 +0900
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-bzjdn (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kube-api-access-bzjdn:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 4m30s default-scheduler Successfully assigned default/web to docker-desktop
Normal Pulling 4m29s kubelet Pulling image "nginx:latest"
Normal Pulled 4m27s kubelet Successfully pulled image "nginx:latest" in 2.6174692s
Normal Created 4m27s kubelet Created container nginx
Normal Started 4m26s kubelet Started container nginx
Pod를 지정하면 해당 Pod에 대한 정보만 볼 수 있고 Pod를 지정하지 않은 경우에는 해당 Namespace에 있는 모든 Pod에 대한 정보를 출력합니다.
생성된 Pod는 다음 명령어를 통해 삭제할 수 있습니다.
$ kubectl delete pod <pod> [-n namespace]
pod "web" deleted
모든 Pod를 한번에 삭제하고 싶은 경우 Pod 대신 --all 옵션을 붙이면 됩니다.
$ kubectl delete pod --all [-n namespace]
다음 포스팅에서는 Pod에 서비스를 적용하여 외부에서 접근하는 법에 대해 포스팅하도록 하겠습니다.
'Kubernetes' 카테고리의 다른 글
[Kubernetes] Endpoints란 (1) | 2022.07.20 |
---|---|
[Kubernetes] 서비스(Service) 구성 및 생성하기 (0) | 2022.07.20 |
[Kubernetes] 서비스(Service)의 유형 (0) | 2022.07.19 |
[Kubernetes] Kubernetes Object란 (1) | 2022.07.14 |
[Kubernetes] Kubernetes란 (0) | 2022.07.11 |