이전 포스트에서 Docker 컨테이너를 이미지로 만들고 이를 Docker hub에 올리는 과정을 다루었습니다.
이번 포스트에서는 hub에 올린 이미지를 활용해서 pod를 생성하는 과정을 다루어보겠습니다.
Kubernetes v1.19
마스터 노드 1개, 워커 노드 1개
노드 환경 : Centos7, VirtualBox
docker-ce-3:20.10.8
먼저, Docker hub에 접근하기 위해 Docker 계정 관련 Secret을 생성해주어야합니다.
아래의 명령어를 통해서 이를 생성하실 수 있습니다.
kubectl create secret docker-registry 시크릿명 --docker-username=도커아이디 --docker-password=도커비밀번호 --docker-server=https://index.docker.io/v2/ --docker-email=도커이메일
여기서 docker-server 부분을 잘 찾아보셔야합니다.
현재(22.05.28) 기준으로는 해당 명령어가 작동하지만 Docker 자체적으로 해당 부분에 입력해야되는 것이 다를 수 있으므로 잘 생성되지 않거나 문제가 생기면 해당 부분을 잘 찾아보시고 진행해주시기바랍니다.
(저도 찾아보던 자료에서 해당 부분이 달라서 삽질을 조금 했습니다..)
먼저 제가 작성한 deploy.yaml은 아래와 같습니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: station
spec:
selector:
matchLabels:
app: station
replicas: 1
template:
metadata:
labels:
app: station
spec:
containers:
- name: station
image: 도커허브에서 가져오기 원하는 이미지명
ports:
- containerPort: 5000
name: flask-port
command: ["/bin/sh", "-ec", "while : ; do echo '.'; sleep 5 ; done"]
imagePullSecrets:
- name: 시크릿명
아래의 명령어를 통해 Depolyment를 생성할 수 있습니다.
kubectl apply -f deploy.yaml
그리고 이를 외부에서 접근하기 위해 아래의 명령어로 NodePort Service를 만들 수 있습니다.
kubectl expose deployment 배포이름 --type=NodePort --port=5000
위와 같이 NodePort가 잘 생성되었음을 확인할 수 있습니다.
참고로 아래와 같은 명령어로 파드 내부로 접속할 수 있습니다.
kubectl exec -it 파드명 /bin/bash