반응형
쿠버의 Object를 생성하기 위한 YAML은, Pod, Deployment, Service, ReplicaSet, 뭐든 상관없이 대강 아래처럼 생겼으며, 아래의 3가지 root level properties를 꼭 가져야한다.
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
type: frontend
spec:
containers:
- name: nginx-container # -는 YAML에서 리스트의 첫 항목임을 가리킴
image: nginx
- name: busybox
image: busybox
apiVersion / kind
- Pod, Service: v1
- ReplicaSet, Deployment: apps/v1
metadata
오브젝트에 대한 정보
Dictionary 구조의 child로 name, labels 등을 가짐
기본적으로 쿠버에서 정한 종류의 메타데이터만 추가할 수 있음
label 차일드 아래에는 아무 종류의 k-v 페어나 넣을 수 있다
- 나중에 Selector를 이용해 오브젝트를 필터링할 때 사용한다.
- 예시:
kubectl get pods --selector='app=myapp'
- 예시:
- 나중에 Selector를 이용해 오브젝트를 필터링할 때 사용한다.
annotations 차일드 아래에도 아무 종류의 k-v 페어나 넣을 수 있다
- 이건 그냥 사람이 읽는 용도고 selector와는 상관없다
spec
특정 오브젝트에 부수되는 객체를 가리킴
Pod에 대해서는 containers가 대표적이다.
하나의 Pod은 컨테이너를 여러 개 가질 수 있다. 예를 들어 1개의 웹서버와 그 웹서버를 감시하는 로깅 데몬이 언제나 한 세트로 배포되어야 한다고 해 보자. 이런 상황에 이 2개의 컨테이너를 하나의 Pod에 담아서 배포하면 삶이 편해지는 것이다.
kubectl create -f filename.yml
/ kubectl apply -f filename.yml
describe
kubectl describe pod webapp
정보를 보여준다
➜ kubectl describe pod webapp
Name: webapp
Namespace: default
Priority: 0
Service Account: default
Node: controlplane/192.22.35.9
Start Time: Fri, 26 Apr 2024 12:50:11 +0000
Labels: <none>
Annotations: <none>
Status: Pending
IP: 10.42.0.13
IPs:
IP: 10.42.0.13
Containers:
nginx:
Container ID: containerd://255e04a630afa086a3a0423133e534a1dee661b0f1e9298893694a144330a140
Image: nginx
Image ID: docker.io/library/nginx@sha256:ed6d2c43c8fbcd3eaa44c9dab6d94cb346234476230dc1681227aa72d07181ee
Port: <none>
Host Port: <none>
State: Running
Started: Fri, 26 Apr 2024 12:50:12 +0000
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-r6vxw (ro)
agentx:
Container ID:
Image: agentx
Image ID:
Port: <none>
Host Port: <none>
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-r6vxw (ro)
Conditions:
Type Status
PodReadyToStartContainers True
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
kube-api-access-r6vxw:
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 17s default-scheduler Successfully assigned default/webapp to controlplane
Normal Pulling 17s kubelet Pulling image "nginx"
Normal Pulled 16s kubelet Successfully pulled image "nginx" in 233ms (233ms including waiting)
Normal Created 16s kubelet Created container nginx
Normal Started 16s kubelet Started container nginx
Normal BackOff 14s (x2 over 15s) kubelet Back-off pulling image "agentx"
Warning Failed 14s (x2 over 15s) kubelet Error: ImagePullBackOff
Normal Pulling 1s (x2 over 16s) kubelet Pulling image "agentx"
Warning Failed 0s (x2 over 16s) kubelet Failed to pull image "agentx": failed to pull and unpack image "docker.io/library/agentx:latest": failed to resolve reference "docker.io/library/agentx:latest": pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
Warning Failed 0s (x2 over 16s) kubelet Error: ErrImagePull
위에서 "webapp" Pod을 구성하는 컨테이너 2개 중 1개가 뻑나있음을 알 수 있다.
(kubectl get pods
를 하면, 다음과 같이 READY 상태가 1/2
로 되어 있다)
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 6m1s
newpods-nl459 1/1 Running 0 5m48s
newpods-82w95 1/1 Running 0 5m48s
newpods-vmdm4 1/1 Running 0 5m48s
webapp 1/2 ErrImagePull 0 3m36s
Pod 날리기
kubectl delete pod webapp
pod "webapp" deleted
반응형
'콤퓨우터 > 필기: KodeKloud CKA 강의' 카테고리의 다른 글
44. Imperative v. Declarative (0) | 2024.05.14 |
---|---|
41. Namespaces (0) | 2024.05.14 |
36. Services (0) | 2024.05.14 |
29-32. ReplicaSet과 Deployment (0) | 2024.05.14 |
16-20. kube-apiserver, kube-controller-manager, kube-scheduler, kubelet, kube-proxy (0) | 2024.05.14 |