CKA를 준비해보자 2일차 - Pod

0

CKA

목록 보기
2/43

Pod

kubernetes에서는 container를 container로만 올리지않고, pod안에 감싸서 배포한다.

-------------------Node------------------
|   ----------------Pod--------------       |
|   |                               |       |
|   |   --------Container---------  |       |
|   |   |                         | |       |
|   |   --------------------------- |       |
|                                           |
|   ----------------Pod--------------       |
|   |                               |       |
|   |   --------Container---------  |       |
|   |   |                         | |       |
|   |   --------------------------- |       |
---------------------------------------------

pod가 바로 kuberntes cluster를 이루는 가장 중요한 요소가 되는 것이다.

사용자가 많아지면 pod를 늘리고, 사용자가 적어지면 pod를 줄이기만 하면 되는 것이다. 이렇게 스케일링이 가능한 것이다.

기본적으로 pod는 1개의 pod에 1개의 container 규칙이 적용되어있지만, 아닌 경우도 있다. 이를 multi-container pod라고 하는데, 이 경우 main이 되는 application인 main container가 있고, 이를 도와주는 helper container가 있다.

-------------------Node------------------
|   ----------------Pod---------------  |
|   |                                |  |
|   |  --Container--   --Container-- |  |
|   |  |    main   |   |   helper  | |  |
|   |  -------------   ------------- |  |
|   ----------------------------------  |     
-----------------------------------------

위의 그림은 같은 pod안에 두 개의 container가 있다는 것을 나타내는 것이다. 이들은 같은 pod이기 때문에 같은 network를 사용하고 있어서 localhost를 통해 접근이 가능하다. 또한, 같은 storage 공간을 사용하고 있어, data들도 쉽게 공유가 가능하다.

이들은 같은 pod에 있기 때문에 pod의 생명주기에 따라 같이 생성되고, 같이 죽는다는 특성이 있다.

  • deploy pod
kubectl run nginx --image nginx

nginx pod를 만들되, image로 nginx를 쓰겠다는 것이다. nginx image는 dockerhub나 private registry에서 다운받게 된다.

  • 확인하는 방법
kubectl get pods

Pods with YAML

kubernetes는 pod, replicaset, service 등과 같은 object 생성을 위해서 yaml파일을 input으로 받는다.

모든 kubernetes object yaml파일은 다음의 4가지 section을 반드시 갖는다.

apiVersion:
kind:
metadata:

spec:
  1. apiVersion: 우리가 만드려는 kubernetes object의 version을 적어주면 된다.
  2. kind: kuberntes object를 적어주면 된다. 가령 pod인지 service인지를 써주면 된다.
  3. metadata: object의 이름, label들을 타겟으로 쓸 수 있다.
  4. spec: spec안은 kuberntes object의 특성들을 적어주면 된다. 이는 object가 무엇이냐에 따라 다르지만, 대부분 container를 포함한다.
  • pod-definitions.yaml
apiVersion: v1
kind: Pod
metadata: 
  name: myapp-pod
  labels:
    app: myapp
    type: front-end
spec:
  containers:
    - name: nginx-container
      image: nginx

다음과 같이 생겼으며, 생성은 다음과 같다.

kubectl create -f pod-definitions.yaml

다음의 명령어로 pod가 생성되면 아래의 명령어를 통해서 생성된 pod의 정보를 확인할 수 있다.

kubectl describe pod myapp-pod

0개의 댓글