반응형
Pod란
Pod란 컨테이너를 표현하는 k8s API의 최소 단위
Pod에는 하나 또는 여러 개의 컨테이너가 포함될 수 있음
Pod 실행
- CLI
kubectl run <pod-name> --image=<imange-name>:<version> --port=<port>
#ex)
kubectl run web --image=nginx:1.14 --port=80
- Yaml
apiVersion: v1
kind: Pod
metadata:
name: web
spec:
containers:
- image: nginx:1.14
name: web
ports:
- containerPort: 80
kubectl apply -f web.yaml
- CLI로 Yaml 추출
kubectl run web --image=nginx:1.14 --port=80 --dry-run -o yaml > web.yaml
예제 1
'cka-exam'이라는 namespace를 만들고, 'cka-exam' namespace에 아래와 같은 Pod를 생성하시오.
• pod Name: pod-01
• image: busybox
• 환경변수 : CERT = "CKA-cert"
• command: /bin/sh • args: -c "while true; do echo $(CERT); sleep 10;done"
1. namespace 생성
kubectl create namespace cka-exam
2. pod생성 yaml 출력
kubectl run pod-01 --image=busybox --dry-run=client -o yaml > 2-1.yaml
3. yaml 수정
apiVersion: v1
kind: Pod
metadata:
name: pod-01
namespace: cka-exam #추가
spec:
containers:
- image: busybox
name: pod-01
command: ["/bin/sh"] #추가
args: [ "-c", "while true; do echo $(CERT); sleep 10;done"] #추가
env: #추가
- name: CERT #추가
value: CKA-cert #추가
4. yaml 적용
kubectl apply -f 2-1.yaml
반응형
예제 2
custom-app 파드의 log에서 'file not found'메세지를 포함하는 로그 라인인 추출하여 /opt/REPORT/2022/custom-app-log에 저장하시오.
kubectl logs custom-app | grep "file not found" > /opt/REPORT/2022/custom-app-log
Static Pod
- API 서버 없이 특정 노드에 있는 kubelet 에 의해 직접 관리
- /etc/kubernetes/manifests/ 디렉토리에 pod yaml 파일을 저장 시 적용됨
- 위 경로는 고정이 아니고 각 노드의 /var/lib/kubelet/config.yaml 파일에 설정되어있음
- 디렉토리 경로 수정시 kubelet 데몬 재실행 해야함.
- systemctl restart kubelet
예제 3
hk8s-w1 노드에 nginx-static-pod.yaml 라는 이름의 Static Pod를 생성하세요.
• pod name: nginx-static-pod
• image: nginx
• port : 80
1. ssh로 워커노드로 이동
ssh hk8s-w1
2. staticPodPath 확인
grep staticPod /var/lib/kubelet/config.yaml
3. staticPodPath 로 이동
cd /etc/kubernetes/manifests/
4. yaml 생성
apiVersion: v1
kind: Pod
metadata:
name: nginx-static-pod
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
protocol: TCP
Multi Container Pod
- 하나의 파드에 여러개의 컨테이너가 동작하는 파드
예제 4
4개의 컨테이너를 동작시키는 eshop-frontend Pod를 생성하시오.
• pod image: nginx, redis, memcached, consul
1. nginx 컨테이너 하나 실행하는 yaml 생성
kubectl run eshop-frontend --image=nginx --dry-run=client -o yaml > multi.yaml
2. yaml 수정
apiVersion: v1
kind: Pod
metadata:
name: eshop-frontend
spec:
containers:
- image: nginx
name: nginx
- image: redis
name: redis
- image: memcached
name: memcached
- image: consul
name: consul
반응형
'Tools > Kubernetes' 카테고리의 다른 글
[CKA 도전 시리즈] 8. Node 관리 / Pod Scheduling (0) | 2023.01.22 |
---|---|
[CKA 도전 시리즈] 7. Deployment (0) | 2023.01.19 |
[CKA 도전 시리즈] 5. RBAC 인증 (1) | 2023.01.13 |
[CKA 도전 시리즈] 4. kubernetes upgrade (0) | 2023.01.12 |
[CKA 도전 시리즈] 3. ETCD backup & restore (0) | 2023.01.09 |