일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- APM
- 정보처리기사실기 기출문제
- CloudWatch
- Java
- aws
- CKA 기출문제
- AI
- 티스토리챌린지
- kotlin querydsl
- 공부
- AWS EKS
- Pinpoint
- 코틀린 코루틴의 정석
- 정보처리기사 실기
- Linux
- 기록으로 실력을 쌓자
- Kubernetes
- kotlin spring
- PETERICA
- CKA
- 정보처리기사 실기 기출문제
- minikube
- Elasticsearch
- kotlin coroutine
- kotlin
- Spring
- MySQL
- IntelliJ
- 오블완
- mysql 튜닝
- Today
- Total
피터의 개발이야기
[kubernetes] MongoDB 환경 구축 본문
ㅁ 개요
개발 회의 도중에 kubernetes 환경에서 구성된 mongoDB의 볼륨을 변경하는 작업이 안건으로 나왔다.
빠르게 kubernetes > mongoDB의 환경을 구성해 보았다.
ㅁ 참조 페이지
ㅇ 2개정도 페이지를 참조하여 시도하였지만 실패하였다.
ㅇ namespace로 분리를 하여 실패 시 namespace를 지우면 깔끔하게 초기화를 할 수 있다.
[ec2-user@ip-172-31-43-214 ~]$ kubectl delete namespaces mongodb
namespace "mongodb" deleted
위 페이지 기준으로 성공하였다.
ㅁ git 소스 다운로드
git clone https://github.com/scriptcamp/kubernetes-mongodb.git
위 가이드에 사용된 모든 Kubernetes Mngdb YAML 매니페스트는 Github에서 호스팅되어 있다.
각 매니페스트를 생성하는 과정을 빠르게 실행하기 위해서 다음 명령어를 실행하면 된다.
ㅁ kubectl apply
[ec2-user@ip-172-31-43-214 kubernetes-mongodb]$ kubectl apply -f . persistentvolume/mongo-data-pv created Error from server (NotFound): error when creating "mongodb-client.yaml": namespaces "mongodb" not found Error from server (NotFound): error when creating "mongodb-deployment.yaml": namespaces "mongodb" not found Error from server (NotFound): error when creating "mongodb-nodeport-svc.yaml": namespaces "mongodb" not found Error from server (NotFound): error when creating "mongodb-pvc.yaml": namespaces "mongodb" not found Error from server (NotFound): error when creating "mongodb-secrets.yaml": namespaces "mongodb" not found
ㅇ 오류가 발생하였다. namespace를 먼저 생성해 두어야 한다.
[ec2-user@ip-172-31-43-214 kubernetes-mongodb]$ kubectl create namespace mongodb
namespace/mongodb created [ec2-user@ip-172-31-43-214 kubernetes-mongodb]$ kubectl apply -f . deployment.apps/mongo-client created
deployment.apps/mongo created
service/mongo-nodeport-svc created
persistentvolume/mongo-data-pv unchanged
persistentvolumeclaim/mongo-data created
secret/mongo-creds created
ㅇ kubectl create namespace mongodb 명령어로 namespace를 생성한 후에 정상적으로 설치가 되었다.
ㅁ 내부 mongoDB 접속
[ec2-user@ip-172-31-43-214 kubernetes-mongodb]$ kubectl exec -n mongodb mongo-client-6f6b5c779b-4d9gr -it bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@mongo-client-6f6b5c779b-4d9gr:/# ls
bin data docker-entrypoint-initdb.d home lib lib64 media opt root sbin sys usr
boot dev etc js-yaml.js lib32 libx32 mnt proc run srv tmp var
root@mongo-client-6f6b5c779b-4d9gr:/# mongo --host mongo-nodeport-svc --port 27017 -u adminuser -p password123
MongoDB shell version v5.0.11
connecting to: mongodb://mongo-nodeport-svc:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("ec9ab949-6b74-4f29-8b2c-642f0b25ecd1") }
MongoDB server version: 5.0.11
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
https://community.mongodb.com
---
The server generated these startup warnings when booting:
2022-08-23T15:56:11.969+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
---
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).
The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.
To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> use db1
switched to db db1
> show collections
> db.blogs.insert({name:"devopscube"})
WriteResult({ "nInserted" : 1 })
> db.blogs.find()
{ "_id" : ObjectId("6304fba8f096e3d3f11e606e"), "name" : "devopscube" }
> exit
bye
root@mongo-client-6f6b5c779b-4d9gr:/# ls
bin data docker-entrypoint-initdb.d home lib lib64 media opt root sbin sys usr
boot dev etc js-yaml.js lib32 libx32 mnt proc run srv tmp var
root@mongo-client-6f6b5c779b-4d9gr:/# exit
exit
ㅁ 외부접속으로 변경
[ec2-user@ip-172-31-43-214 kubernetes-mongodb]$ kubectl get svc -n mongodb
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mongo-nodeport-svc NodePort 10.100.5.218 <none> 27017:32000/TCP 16s
ㅇ 현재 서비스가 NodePort 상태이기 때문에 NodePort로 각 노드의 IP에 서비스를 노출한다.
ㅇ AWS 환경에 구축을 하였기에 type을 LoadBalancer로 변경하면, AWS의 로드 밸런서를 사용하여 서비스를 외부에 노출시킬 수 있다.
[ec2-user@ip-172-31-43-214 kubernetes-mongodb]$ kubectl edit svc -n mongodb mongo-nodeport-svc
service/mongo-nodeport-svc edited
ㅇ 변경작업이 완료되었다.
$ kubectl get svc -n mongodb
ㅇ 다시 서비스를 조회하면 새롭게 생성된 External-ip를 확인할 수 있다.
ㅁ 몽고디비 툴로 접속
ㅇ 관련 주소와 설정정보를 입력하여 위에서 내부망으로 접속하여 생성된 데이터를 확인 할 수 있다.
ㅁ 테스트 환경 정리
[ec2-user@ip-172-31-43-214 kubernetes-mongodb]$ eksctl scale nodegroup --name=work-nodes --cluster=k8s-demo --nodes=0 --nodes-min=0
2022-08-23 16:45:55 [ℹ] scaling nodegroup "work-nodes" in cluster k8s-demo
2022-08-23 16:45:55 [ℹ] waiting for scaling of nodegroup "work-nodes" to complete
2022-08-23 16:46:26 [ℹ] nodegroup successfully scaled
ㅇ EKS는 중지 할 수 없지만 node는 정지시킬 수 있다.
ㅇ 비용절감을 위해 정지하고 테스트를 일단 마무리 해야겠다.
ㅇ 현재시간 오전 1:49이다.
'Kubernetes > Infra작업' 카테고리의 다른 글
[kubernetes] kubectl 설치 또는 업데이트 (0) | 2022.10.23 |
---|---|
[kubernetes] Kubernetes 스키마를 검증하기 위한 방법 (0) | 2022.09.22 |
[kubernetes] 외부 IP 주소를 노출하여 클러스터의 애플리케이션에 접속하기 (7) | 2022.08.01 |
[kubernetes] Elasticsearch Data 노드 메모리 증설 (0) | 2022.07.14 |