# 파드(Pod)
쿠버네티스 워크로드 리소스 중에 가장작은 리소스 단위, 가장 핵심
쿠버네티스가 제어할수있는 가장 작은 단위 파드 (쿠버네티스가 컨테이너를 직접 제어하지 않는다)
여러개의 컨테이너가 정의될수있다
# 파드 정의
vagrant@k-control:~$ cat ldh-pod.yaml
apiVersion: v1
kind: Pod
metadata: #파드의 이름
name: ldh-pod
spec:
containers:
- image: ghcr.io/c1tsdskd/sdsd
name: ldh #컨테이너의 이름
ports: #필드 이름이 복수형인것은 거의 리스트 형태
- containerPort: 8080 #컨테이너에서 노출 할 포트
protocol: TCP
# 파드 생성
vagrant@k-control:~$ kubectl create -f ldh-pod.yaml
pod/ldh-pod created #종류/이름
# 전체 파드 목록 확인
vagrant@k-control:~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
ldh-pod 1/1 Running 0 80s
# 1/컨테이너의 갯수 컨테이너의 재시작 횟수
# ldh-pod 목록 확인
vagrant@k-control:~$ kubectl get pods ldh-pod
NAME READY STATUS RESTARTS AGE
ldh-pod 1/1 Running 0 4m3
# ldh-pod 목록 확인 wide
vagrant@k-control:~$ kubectl get pods ldh-pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ldh-pod 1/1 Running 0 8m4s 192.168.82.130 k-node1 <none> <none>
#node1에 배치
# ldh-pod 정의 확인 (yaml 형태로 출력 )
vagrant@k-control:~$ kubectl get pods ldh-pod -o yaml
apiVersion: v1
kind: Pod
metadata:
annotations:
cni.projectcalico.org/podIP: 192.168.82.130/32
cni.projectcalico.org/podIPs: 192.168.82.130/32
creationTimestamp: "2021-07-07T07:34:50Z"
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:spec:
f:containers:
k:{"name":"ldh"}:
...(생략)...
# ldh-pod 정보 자세히 확인
vagrant@k-control:~$ kubectl describe pods ldh-pod
Name: ldh-pod
Namespace: default
Priority: 0
Node: k-node1/10.0.2.15
Start Time: Wed, 07 Jul 2021 07:34:50 +0000
Labels: <none>
...(생략)...
Events: #이벤트 확인 가능 -리소스에 대한 활동로그
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 9m34s default-scheduler Successfully assigned default/ldh-pod to k-node1
Normal Pulling 9m33s kubelet Pulling image "ghcr.io/c1tgfgf7/ggfgfb"
Normal Pulled 9m31s kubelet Successfully pulled image "ghcr.io/c1gfg/go-gf in 2.251503867s
Normal Created 9m31s kubelet Created container ldh
Normal Started 9m31s kubelet Started container ldh
# 어디에 배치 되어야 할지 default-scheduler가 정한다
# 파드에 있는 컨테이너를 생성, 실행 하려면 kubelet이 Docker에 명령-도커데몬을 컨트롤
# 로그 확인
vagrant@k-control:~$ kubectl logs ldh-pod
2021/07/07 07:34:54 Start MyWeb Application
2021/07/07 07:34:54 Listen: 0.0.0.0:8080
# 포트포워딩
# 파드를 임시로 외부로 포워딩
# 서비스라는 리소스를 만들지 않고 작동하는지 확인만 할때사용
vagrant@k-control:~$ kubectl port-forward ldh-pod 8080:8080
Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080
#다른 터미널에서 확인
vagrant@k-control:~$ curl http://localhost:8080
Hello World!
ldh-pod
# 로그 확인, 포트 포워딩에 오류가 난다면?
# 네트워크 확인 후 각 컨트롤,노드의 ip 변경
vagrant@k-node1:~$ echo "KUBELET_EXTRA_ARGS='--node-ip 192.168.200.51'" | sudo tee /etc/default/kubelet
KUBELET_EXTRA_ARGS='--node-ip 192.168.200.51'
vagrant@k-node1:~$ sudo systemctl daemon-reload && sudo systemctl restart kubelet
'클라우드 > 쿠버네티스(Kubernetes)' 카테고리의 다른 글
쿠버네티스 Kubernetes 레이블 (Label) (0) | 2021.07.08 |
---|---|
쿠버네티스 Kubernetes 오브젝트 관리 / 명령형 커맨드 (Imperative Commands) (0) | 2021.07.08 |
쿠버네티스 Kubernetes API 2 (0) | 2021.07.07 |
쿠버네티스 Kubernetes API 1 (0) | 2021.07.07 |
쿠버네티스 Kubernetes YAML (0) | 2021.07.07 |