각각 100만 개의 임의 문서로 채워진 100개의 MongoDB 컬렉션을 생성하는 유틸리티를 만들고 이를 Kubernetes에 배포하려면 여러 단계를 거쳐야 합니다. 이 가이드는 Kubernetes 환경 설정부터 컬렉션 생성, 전용 네임스페이스에 작업 배포까지의 프로세스를 안내합니다.
1. 쿠버네티스 환경 설정
Kubernetes 클러스터(예: GKE, EKS, AKS 또는 Minikube)가 있는지 확인하고 이에 연결하도록 kubectl을 구성합니다.
2. 전용 네임스페이스 생성
이 배포를 격리된 상태로 유지하려면 my-lab이라는 네임스페이스를 생성하세요.
kubectl create namespace my-lab kubectl get ns my-lab
3. 쿠버네티스에 MongoDB 배포
영구 볼륨(PV) 생성
MongoDB 데이터에 대한 영구 볼륨을 정의하기 위해 mongo-pv.yaml 파일을 생성합니다.
apiVersion: v1 kind: PersistentVolume metadata: name: mongo-pv namespace: my-lab spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: /data/mongo
PV 적용:
kubectl apply -f mongo-pv.yaml
영구 볼륨 할당(PVC) 생성
mongo-pvc.yaml에서 영구 볼륨 요청을 정의합니다.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mongo-pvc namespace: my-lab spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
PVC 적용:
kubectl apply -f mongo-pvc.yaml
MongoDB 배포 생성
mongo-deployment.yaml에서 MongoDB 배포 및 서비스를 정의합니다.
apiVersion: apps/v1 kind: Deployment metadata: name: mongo namespace: my-lab spec: replicas: 1 selector: matchLabels: app: mongo template: metadata: labels: app: mongo spec: containers: - name: mongo image: mongo:latest ports: - containerPort: 27017 env: - name: MONGO_INITDB_ROOT_USERNAME value: "root" - name: MONGO_INITDB_ROOT_PASSWORD value: "password" volumeMounts: - name: mongo-storage mountPath: /data/db volumes: - name: mongo-storage persistentVolumeClaim: claimName: mongo-pvc --- apiVersion: v1 kind: Service metadata: name: mongo namespace: my-lab spec: type: ClusterIP ports: - port: 27017 targetPort: 27017 selector: app: mongo
배포 적용:
kubectl apply -f mongo-deployment.yaml
4. 몽고DB에 연결
MongoDB 배포를 연결하여 확인하세요.
kubectl exec -it <mongo-pod-name> -n my-lab -- mongosh -u root -p password </mongo-pod-name>
5. 지속성 확인
MongoDB 배포를 축소한 후 백업하여 데이터 지속성을 보장하세요.
kubectl scale deployment mongo --replicas=0 -n my-lab kubectl scale deployment mongo --replicas=1 -n my-lab
6. 컬렉션 생성을 위한 Python 유틸리티 만들기
Python을 사용하여 컬렉션을 생성하고 컬렉션을 임의의 문서로 채우는 스크립트를 정의합니다.
import random import string import pymongo from pymongo import MongoClient def random_string(length=10): return ''.join(random.choices(string.ascii_letters + string.digits, k=length)) def create_collections_and_populate(db_name='mydatabase', collections_count=100, documents_per_collection=1_000_000): client = MongoClient('mongodb://root:password@mongo:27017/') db = client[db_name] for i in range(collections_count): collection_name = f'collection_{i+1}' collection = db[collection_name] print(f'Creating collection: {collection_name}') bulk_data = [{'name': random_string(), 'value': random.randint(1, 100)} for _ in range(documents_per_collection)] collection.insert_many(bulk_data) print(f'Inserted {documents_per_collection} documents into {collection_name}') if __name__ == "__main__": create_collections_and_populate()
7. Python 유틸리티 Docker화
Python 스크립트를 컨테이너화하기 위한 Dockerfile 만들기:
FROM python:3.9-slim WORKDIR /app COPY mongo_populator.py . RUN pip install pymongo CMD ["python", "mongo_populator.py"]
이미지를 빌드하고 컨테이너 레지스트리에 푸시합니다.
docker build -t <your-docker-repo>/mongo-populator:latest . docker push <your-docker-repo>/mongo-populator:latest </your-docker-repo></your-docker-repo>
8. Kubernetes 작업 생성
mongo-populator-job.yaml에서 작업을 정의하여 컬렉션 생성 스크립트를 실행합니다.
apiVersion: batch/v1 kind: Job metadata: name: mongo-populator namespace: my-lab spec: template: spec: containers: - name: mongo-populator image: <your-docker-repo>/mongo-populator:latest env: - name: MONGO_URI value: "mongodb://root:password@mongo:27017/" restartPolicy: Never backoffLimit: 4 </your-docker-repo>
작업 적용:
kubectl apply -f mongo-populator-job.yaml
9. 컬렉션 생성 확인
작업이 완료된 후 MongoDB에 연결하여 데이터를 검사합니다.
kubectl exec -it <mongo-pod-name> -n my-lab -- mongosh -u root -p password </mongo-pod-name>
MongoDB에서:
use mydatabase show collections db.collection_9.find().limit(5).pretty() db.getCollectionNames().forEach(function(collection) { var count = db[collection].countDocuments(); print(collection + ": " + count + " documents"); });
각 컬렉션에는 데이터 생성 작업이 성공했음을 확인하는 100만 개의 문서가 포함되어야 합니다.
위 내용은 Kubernetes에 MongoDB 컬렉션 생성기 배포의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

thedifferencebet weenaforloopandawhileloopinpythonisthataforloopisusured wherleationsisknortiStiskNowninAdvance, whileLeOpisUssed whileLoopisUssedStoBeCheckedThoBeCheckedTherfeTefeateThinumberofiTeRations.1) forloopsareIdealFerenceCecenceS

Python에서는 반복의 수가 알려진 경우에 루프가 적합한 반면, 반복 횟수가 알려지지 않고 더 많은 제어가 필요한 경우 루프는 적합합니다. 1) 루프의 경우 간결하고 피해자 코드가있는 목록, 문자열 등과 같은 시퀀스에 적합합니다. 2) 조건에 따라 루프를 제어하거나 사용자 입력을 기다릴 때 루프가 더 적절하지만 무한 루프를 피하기 위해주의를 기울여야합니다. 3) 성능 측면에서 For 루프는 약간 빠르지 만 차이는 일반적으로 크지 않습니다. 올바른 루프 유형을 선택하면 코드의 효율성과 가독성이 향상 될 수 있습니다.

파이썬에서 목록은 5 가지 방법을 통해 병합 될 수 있습니다. 1) 단순하고 직관적 인 연산자를 사용하여 작은 목록에 적합합니다. 2) Extend () 메소드를 사용하여 자주 업데이트 해야하는 목록에 적합한 원본 목록을 직접 수정하십시오. 3) 목록 분석 공식, 요소에 대한 간결하고 운영; 4) 효율적인 메모리에 IterTools.chain () 함수를 사용하여 대형 데이터 세트에 적합합니다. 5) * 연산자 및 Zip () 함수를 사용하여 요소를 짝을 이루어야하는 장면에 적합합니다. 각 방법에는 특정 용도 및 장점 및 단점이 있으며 선택할 때 프로젝트 요구 사항 및 성능을 고려해야합니다.

Forloopsareusedwhendumberofiterationsisknown, whileloopsareusediltilaconditionismet.1) forloopsareIdealfecquenceslikelists, idingsyntax likes'forfruitinfruits : print (fruit) '

Toconcatenatealistoflistsinpython, usextend, listcomprehensions, itertools.chain, orrecursiveFunctions.1) extendMethodistRaightForwardButverbose.2) ListComprehensionsArecisancisancisancisancisanceciancectionforlargerdatasets.3) itertools.chainismory-lefforforlargedas

Tomergelistsinpython, youcanusethe operator, extendmethod, listcomprehension, oritertools.chain, 각각은 각각의 지위를 불러 일으킨다

Python 3에서는 다양한 방법을 통해 두 개의 목록을 연결할 수 있습니다. 1) 작은 목록에 적합하지만 큰 목록에는 비효율적입니다. 2) 메모리 효율이 높지만 원래 목록을 수정하는 큰 목록에 적합한 확장 방법을 사용합니다. 3) 원래 목록을 수정하지 않고 여러 목록을 병합하는 데 적합한 * 운영자 사용; 4) 메모리 효율이 높은 대형 데이터 세트에 적합한 itertools.chain을 사용하십시오.

join () 메소드를 사용하는 것은 Python의 목록에서 문자열을 연결하는 가장 효율적인 방법입니다. 1) join () 메소드를 사용하여 효율적이고 읽기 쉽습니다. 2)주기는 큰 목록에 비효율적으로 운영자를 사용합니다. 3) List Comprehension과 Join ()의 조합은 변환이 필요한 시나리오에 적합합니다. 4) READE () 방법은 다른 유형의 감소에 적합하지만 문자열 연결에 비효율적입니다. 완전한 문장은 끝납니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기