o(2/2) - 쿠버네티스 위에서 Minio 동작하기(k8s+minio)
1. Deployment와 Service의 야믈파일
1-1 minio-deployment.yml
MiniO 서비스를 위한 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: minio
spec:
replicas: 1
selector:
matchLabels:
app: minio
strategy:
type: Recreate
template:
metadata:
labels:
app: minio
spec:
nodeSelector:
key: localhost
nodeName: da-pc-0118
volumes:
- name: storage
hostPath:
path: /data/minio
containers:
- name: minio
image: minio/minio:latest
args:
- server
- --console-address
- ":9001"
- "/storage"
env:
- name: MINIO_ACCESS_KEY
value: "minio"
- name: MINIO_SECRET_KEY
value: "minio123"
- name: TZ
value: Asia/Seoul
- name: LANG
value: ko_KR.utf8
ports:
- containerPort: 9000
hostPort: 9000
- containerPort: 9001
hostPort: 9001
volumeMounts:
- name: storage
mountPath: "/storage"
1-2 minio-service.yml
MiniO 서비스를 외부로 노출하기 위한 Service를 선언
spec:
type: NodePort
ports:
- port: 9000
targetPort: 9000
nodePort: 30333
name: api
- port: 9001
targetPort: 9001
nodePort: 30334
name: ui
selector:
app: minio
2. 실행
2-1. 쿠버네티스(rancher-desktop)
rancher-desktop을 이용하여 진행(wsl-ubuntu 사용)
- rancher-desktop 다운로드(https://rancherdesktop.io/)
- rancher-desktop 설치
- WSL Integration에서 사용하고 있는 Ubuntu를 체크하면 됨.
2-2. MiniO 사용
- 가지고 있는 yml파일을 이용해 create
- 외부 주소를 이용해 파일을 create
MiniO 서비스를 위한 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: minio
spec:
replicas: 1
selector:
matchLabels:
app: minio
strategy:
type: Recreate
template:
metadata:
labels:
app: minio
spec:
nodeSelector:
key: localhost
nodeName: da-pc-0118
volumes:
- name: storage
hostPath:
path: /data/minio
containers:
- name: minio
image: minio/minio:latest
args:
- server
- --console-address
- ":9001"
- "/storage"
env:
- name: MINIO_ACCESS_KEY
value: "minio"
- name: MINIO_SECRET_KEY
value: "minio123"
- name: TZ
value: Asia/Seoul
- name: LANG
value: ko_KR.utf8
ports:
- containerPort: 9000
hostPort: 9000
- containerPort: 9001
hostPort: 9001
volumeMounts:
- name: storage
mountPath: "/storage"
MiniO 서비스를 외부로 노출하기 위한 Service를 선언
spec:
type: NodePort
ports:
- port: 9000
targetPort: 9000
nodePort: 30333
name: api
- port: 9001
targetPort: 9001
nodePort: 30334
name: ui
selector:
app: minio
2-1. 쿠버네티스(rancher-desktop)
rancher-desktop을 이용하여 진행(wsl-ubuntu 사용)
- rancher-desktop 다운로드(https://rancherdesktop.io/)
- rancher-desktop 설치
- WSL Integration에서 사용하고 있는 Ubuntu를 체크하면 됨.
2-2. MiniO 사용
- 가지고 있는 yml파일을 이용해 create
- 외부 주소를 이용해 파일을 create
참고 내용
- apply VS create
- apply : 리소스가 존재하지 않을 경우 새로운 리소스가 생성/ 리소스가 이미 존재할 경우 리소스를 구성(부분적인 spec을 적용)
- create : 리소스가 존재하지 않을 경우 새로운 리소스가 생성 / 리소스가 이미 존재할 경우 ERROR가 발생
2-2-1. 가지고 있는 yml 파일을 이용해 create
- Deployment 생성
kubectl create -f minio-deployment.yml
#또는
kubectl apply -f minio deployment.yml
- Deployment 확인
kubectl get deployment
- service 생성
kubectl create -f minio-deployment.yml
# 또는
kubectl apply -f minio deployment.yml
- service 확인
kubectl get svc
- pods 확인
kubectl get pods
#또는
kubectl get pod
- 상세 내용 확인
# pod 전체
kubectl describe pods
# 해당 포드 상세 내용 확인
kubectl describe pods {포드명}
2-3. MniO console 브라우저 접속
- 주소창에 localhost:30333 입력
- console port를 30333으로 지정해 놓았음. 별도로 지정하지 않는다면 랜덤한 숫자가 부여됨
- 아이디 minio / 비밀번호 minio123
- 아이디와 비밀번호를 해당 문자로 지정해 놓았음.
- 접속 완료 화면
3. 이슈 사항 정리
3-1. 노드 선택
- deployment에서 노드를 지정하지 않아서 에러가 발생했었다.
- nodename을 명시해 주어 해결
3-2. Pod 무한 생성
- deployment를 create하는 순간 pod가 무한 생성 된다.
- describe로 확인해보면 아래와 같은 이벤트가 보인다.
- deployment에서 nodeSelector로 key : localhost를 명시해 주었는데 현재 노드에 라벨링 되어 있지 않아서 발생하는 문제였던것 같다.
- node에 라벨링을 해주어서 해결
kubectl label nodes da-pc-0484 key=localhost
- nodename을 명시해 주어 해결
- node에 라벨링을 해주어서 해결
kubectl label nodes da-pc-0484 key=localhost
이렇게 로컬 환경에서 rancher-desktop을 이용해 kubernetes를 사용 하고 kubernets위에 MiniO를 띄워 MiniO 콘솔 브라우저에 접속하는 실습을 진행해 보았습니다.
Author And Source
이 문제에 관하여(o(2/2) - 쿠버네티스 위에서 Minio 동작하기(k8s+minio)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wkfwktka/쿠버네티스-위에서-Minio-동작하기k8sminio저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)