在 K8S 中測試環境中搭建 mongodb


在 K8S 測試環境搭建一個 mongodb,通過 nodeName 選定固定一個節點啟動,通過 hostPath 來持久化

vi rs-mongodb.yaml 

apiVersion: apps/v1 
kind: Deployment
metadata:
  namespace: klvchen
  name: mongodb
  labels:
    app: mongodb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongodb
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      nodeName: k8s-node1    # 固定在 k8s-node1 節點
      containers:
      - name: mongodb
        image: mongo:4.2.9
        resources:
          limits:            # 限定資源
            cpu: 2000m
            memory: 8Gi
          requests:
            cpu: 100m
            memory: 8Gi
        env:
          - name: MONGO_INITDB_ROOT_USERNAME  # 設置用戶名
            value: root
          - name: MONGO_INITDB_ROOT_PASSWORD  # 設置密碼
            value: 'klvchen123'
        volumeMounts:
          - mountPath: /data/db                    
            name: mongodb-volume
      volumes:
        - name: mongodb-volume
          hostPath:
            path: /data/rs-mongodb-volume          # 映射的宿主機目錄
            type: DirectoryOrCreate
 
---

apiVersion: v1
kind: Service
metadata:
  namespace: klvchen
  name: mongodb
spec:
  type: ClusterIP
  selector:
    app: mongodb
  ports:
  - port: 27017
    targetPort: 27017

啟動及訪問

# 啟動
kubectl apply -f rs-mongodb.yaml

# 查看 
kubectl get pod -n klvchen -o wide

# 在 K8S 集群中的其他容器可以通過 FQDN 來訪問
mongodb.klvchen.svc.cluster.local:27017

mongodb 簡單操作

# 可以通過 kubectl -n klvhcen exec -it POD_NAME /bin/bash 進入容器

# 進入 mongodb 客戶端
mongo admin

# 認證
db.auth('root','klvchen123')

# mongodb 創建 test 數據庫,創建用戶和密碼
use test
db.createUser(
   {
     user: "test",
     pwd: "test123",
     roles: [ { role: "readWrite", db: "test" } ]
   }
 )
 

# 備份,會在當前目錄下默認創建名為 dump 的備份文件夾
mongodump --host 127.0.0.1 --port 27017 -u test --authenticationDatabase test

# 恢復到 recommend 數據中
mongorestore --host 127.0.0.1 --port 27017 -u test  --authenticationDatabase -d recommend dump

使用 python 來測試

import pymongo

myclient = pymongo.MongoClient("mongodb://172.16.16.109:27017/")

# 創建的數據庫 runoobdb
# 在 MongoDB 中,數據庫只有在內容插入后才會創建! 就是說,數據庫創建后要創建集合(數據表)並插入一個文檔(記錄),數據庫才會真正創建。
mydb = myclient["runoobdb"]

# 使用數據庫對象來創建集合
# 在 MongoDB 中,集合只有在內容插入后才會創建! 就是說,創建集合(數據表)后要再插入一個文檔(記錄),集合才會真正創建。
mycol = mydb["sites"]

# 集合中插入文檔使用 insert_one() 方法,該方法的第一參數是字典 name => value 對,以下實例向 sites 集合中插入文檔
# mydict = {"name": "RUNOOB", "alexa": "10000", "url": "https://www.runoob.com"}
#
# x = mycol.insert_one(mydict)
# print(x)

# 使用 find_one() 方法來查詢集合中的一條數據。
# x = mycol.find_one()
# print(x)

# find() 方法可以查詢集合中的所有數據
for x in mycol.find():
    print(x)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM