API resource - pod

문주은·2022년 8월 18일
0

Pod

  • 하나의 pod는 여러 개의 container를 포함할 수 있다.
  • kubernetes의 가장 기본적인 application 배포 단위이다
  • container
    • 일방적인 application 처리 -> runtime container
  • label
    • 역할? pod --- service 간의 연결로
    • 여러개 지정 가능

<삭제시>
kubectl delete pod podname
<강제 삭제시>
kubectl delete pod podname --grace-period=0 --force

Label

  • pod 식별을 통한 그룹화
  • kubectl get pod --show-labels : 모든 라벨값 확인 가능
1) namespace 지정
[root@k8s-master] # kubectl create namespace infra-team-ns1
[root@k8s-master] # get namespaces

2) yaml file 작성
[root@k8s-master label-1]# vi label-1.yaml
apiVersion: v1
kind: Pod
metadata:
  name: label-pod-a
  namespace: infra-team-ns1
  labels:
    types: infra1
spec:
  containers:
  - image: dbgurum/k8s-lab:initial
    name: pod-a-container

---

apiVersion: v1
kind: Pod
metadata:
  name: label-pod-b
  namespace: infra-team-ns1
  labels:
    types: infra1
spec:
  containers:
  - image: dbgurum/k8s-lab:initial
    name: pod-b-container
    
---

apiVersion: v1
kind: Pod
metadata:
  name: label-pod-c
  namespace: infra-team-ns1
  labels:
    types: infra1
spec:
  containers:
  - image: dbgurum/k8s-lab:initial
    name: pod-c-container
    
---

apiVersion: v1
kind: Service
metadata:
  name: infra-svc1
  namespace: infra-team-ns1
spec:
  selector:
    type: infra1
  ports:
  - port: 7777
  
3) 작성한 yaml file 로 pod, svc 생성
[root@k8s-master label-1]# kubectl apply -f label-1.yaml

4) 확인
[root@k8s-master label-1]# kubectl get po,svc -o wide -n infra-team-ns1
[root@k8s-master label-1]# kubectl get all -n infra-team-ns1
[root@k8s-master label-1]# kubectl describe service/infra-svc1 -n infra-team-ns1
  • 마지막 명령문(describe)에서 endpoint 3개가 확인 가능

node scheduler

  • node scheduler 수동 지정도 가능
  • 같은 결과 값이 나오지만 다른 방법을 사용
  • 방법1은 nodeSelector를 이용한 방법
  • 방법2는 nodeName을 이용한 방법
### 방법1) node scheduler yaml code
apiVersion: v1
kind: Pod
metadata:
  name: nosch-pod1
spec:
  nodeSelector:
    kubernetes.io/hostname: k8s-node1
  containers:
  - image: dbgurum/k8s-lab:initial
    name: nosch-container
   
   
### 방법2) node scheduler yaml code
apiVersion: v1
kind: Pod
metadata:
  name: nosch-pod1
spec:
  nodeName: k8s-node1
  containers:
  - image: dbgurum/k8s-lab:initial
    name: nosch-container

kubectl logs pod명 : container가 만들어진 상태에서 확인 가능

profile
Data Engineer

0개의 댓글