kubernetes - 매니페스트 파일을 이용하여 컨테이너 생

FromCloud·2023년 6월 22일
0

Kubernetes & Docker

목록 보기
10/12

매니페스트 파일

매니페스트 파일은 yml파일을 지칭하는 말이다 그냥 kubectl create명령어를 이용하여 컨테이너를 생성할 수도 있지만 매니페스트 파일을 이용하여 컨테이너를 생성할 수도 있다 이번 파트는 nginx에 관련된 매니페스트 파일을 만들어 보았다

vi pod-nginx.yml

---
apiVersion: v1
kind: Pod
metadata:
  name: test-nginx
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
    
 kubectl apply -f pod-nginx.yml
 kubectl get pod 
 kubectl get pod -o wide

먼저 매니페스트 파일을 실행시키는 명령어는 kubectl apply -f이다 뒤에는 내가 만들어놓았던 yml파일의 이름을 작성하면 실행이된다

잘 만들어졌는지 확인을 하기 위해서는 kubectl get pod 를 써서 확인을 한다 자세한 내용을 확인하기 위해서는 kubectl get pod -o wide 명령어 사용 어떤 노드에 컨테이너가 생성되었는지 어떤 IP를 가지고 있는지 등등 확인이 가능하다

---
apiVersion: v1
kind: Pod
metadata:
  name: apache
  namespace: 2team
spec:
  containers:
  - name: apache
    image: httpd
    ports:
    - containerPort: 80

이번에는 새로운 항목이 추가되었다 namespace이다 이것을 추가하고 싶은 경우 metadata에 넣어서 파일을 실행해주고 kubectl get pod -n 2team 명령어를 사용하면 확인을 할 수 있다

하지만 매니페스트파일을 실행하여 컨테이너를 생성할때에는 미리 네임스페이스를 만들어 놓아야 한다

vi pod-nginx2.yml

---
apiVersion: v1
kind: Pod
metadata:
  name: test-nginx
  namespace: 1team
spec:
  containers:
  - name: nginx
    image: nginx:1.23
    ports:
    - containerPort: 80

kubectl apply -f pod-nginx2.yml
kubectl get pods -n 1team
kubectl describe pod test-nginx -n 1team

컨테이너를 생성하고 자세한 정보를 보고 싶다면 describe 명령어를 사용하여 확인이 가능하다 안에는 수많은 정보들이 들어있다
여기서 주의해야 할점은 네임스페이스는 1team에 넣었다 그래서 pod를 확인할때에는 -n <namespace> 옵션을 꼭 넣어서 확인을 해줘야한다

그리고 실행을 시켜주기위해선 도커와 비슷하게 exec 명령어를 사용

실행을 하기위해서 사용한 명령어 kubectl exec -n 1team test-nginx -it -- bash 이다 1team에 속해있는 test-nginx를 bash셸을 이용하여 실행시키겠다 라는 의미이다

매니페스트파일을 쓰지않고 컨테이너를 만들기 위해서는 kubectl run test-nginx --image=nginx --port=80 -n 1team 명령어를 사용하면 똑같이 생성되는 것을 볼수 있다

위 사진을 보면 떠있는 IP는 내부의 IP로 외부에서 소통이 불가능하다 내부 소통만 가능하다는 것이다 하지만 외부에서 접속을 확인하고 싶거나 웹서버의 경우 외부에서 확인을 하고 싶다면 expose 명령어를 사용하면 된다
kubectl expose pod test-nginx --type=NodePort -n 1team

이렇게 명령어를 쳐주면 pod가 서비스가 되어 kubectl get svc -n 1team를 해서 확인을 하면 포트번호가 지정된 것을 볼 수 있을 것이다 그 포트번호가 외부에에서 접속이 가능한 포트이다

정상적으로 잘 접속된 모습

profile
매일 발전하는 Cloud Engineer

0개의 댓글