實作給你看:如何在Kubernetes內部署MongoDB

更新 發佈閱讀 10 分鐘

本篇來說明如何在Kubernetes cluster內部署一個MongoDB,相信這種DB解決方案的部署應該都快變成管理員的日常工作之一了,今天透過這個操作演示,讓大家了解在實務上如何把MongoDB成功建立起來,並且還要可以進行基本操作。

raw-image

本篇將分成以下重點進行說明:

  1. 取得Manifests
  2. 建立volume
  3. 部署實務
  4. 基本操作
  5. 結論

1.取得Manifests

#-----------------------------------------------
# S1-1. 取得所有manifests
#-----------------------------------------------
[master]# git clone https://github.com/scriptcamp/kubernetes-mongodb.git
[master]# tree .
[master]# kubectl create ns mongodb
raw-image
#-----------------------------------------------
# S1-2. 建立Secrets
# 使用password來保護DB
#-----------------------------------------------
[master]# vim mongodb-secrets.yaml
apiVersion: v1
data:
password: cGFzc3dvcmQxMjM= #password123
username: YWRtaW51c2Vy #adminuser
kind: Secret
metadata:
creationTimestamp: null
name: mongo-creds

[master]# kubectl create -f mongodb-secrets.yaml
#-----------------------------------------------
# S1-3. 解開加密物件
# k8s會將所有的secret以base64進行加密,使用以下方式進行解密
#-----------------------------------------------
[master]# echo "cGFzc3dvcmQxMjM=" | base64 --decode
password123

2.建立Volume

建立PVC,從storageclass自動綁定PV

#-----------------------------------------------
# S2-1. 建立PVC
#-----------------------------------------------
[master]# vim mongodb-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc
spec:
storageClassName: "managed-nfs-storage"
accessModes:
- ReadWriteOnce
volumeName: pv
resources:
requests:
storage: 1Gi

[master]# kubectl create -f mongodb-pvc.yaml
[master]# kubectl get pvc
raw-image

3. 部署實務

本LAB建立的MongoDB為Standalone類型,只有一個Pod。

#-----------------------------------------------
# S3-1. 建立Deployment
#-----------------------------------------------
[master]# vim mongodb-deployment.yaml
[master]# kubectl create -f mongodb-deployment.yaml
[master]# kubectl get pod -o wide
raw-image
#-----------------------------------------------
# S3-2. 建立svc (此處使用nodeport)
#-----------------------------------------------
[master]# vim mongodb-nodeport-svc.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: mongo
name: mongo-nodeport-svc
spec:
ports:
- port: 27017
protocol: TCP
targetPort: 27017
nodePort: 32001
selector:
app: mongo
type: NodePort

[master]# kubectl create -f mongodb-nodeport-svc.yaml
[master]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/mongo-nodeport-svc NodePort 10.103.143.51 <none> 27017:32001/TCP 100m
#-----------------------------------------------
# S3-3. 確認
#-----------------------------------------------
[master]# kubectl exec -it mongo-5d8b9d77f6-vd4tz /bin/bash
root@mongo-5d8b9d77f6-vd4tz:/# mongosh --host 10.107.88.15 --port 32001 -u adminuser -p password123
=> 出現以下畫面即完成連線
raw-image

4.基本操作

#---------------------------------------------
# S4-1. Create mongodb client pod
#---------------------------------------------
[master]# vim mongodb-new-client.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: mongo-client
name: mongo-client
spec:
replicas: 1
selector:
matchLabels:
app: mongo-client
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: mongo-client
spec:
containers:
- image: localhost/mongodb:latest
name: mongo-client
env:
- name: mongo-client_INITDB_ROOT_USERNAME
value: 'dummy'
- name: mongo-client_INITDB_ROOT_PASSWORD
value: 'dummy'

[master]# kubectl create -f mongodb-new-client.yaml
#---------------------------------------------
# S4-2. 進入client pod,執行基本操作
#---------------------------------------------
[master]# kubectl exec -it mongo-client-6cb867d578-8pdw6 /bin/bash
root@mongo-client-6cb867d578-8pdw6:/# mongosh --host 10.107.88.15 --port 32001 -u adminuser -p password123

(Display list of DBs)
# show dbs
(Get into DB)
# use db1
(Display a list of collections inside the ‘db1’ database)
# show collections
(Insert data into the db1 database)
# db.blogs.insert({name: "devopscube" })
(Display data from db1 database)
# db.blogs.find()
raw-image

5. 結論

本篇簡單說明如何部署MongoDB並且執行基本測試,要注意的是mongo這個指令已經被mongosh取代,執行時要注意不要用錯。

部署單一的MongoDB pod算是不會太困難,希望大家有空也可以自已部署來試試看。

本篇到此為止,下期再見~~


Reference:

留言
avatar-img
超健忘閒人的沙龍
15會員
40內容數
記錄IT社畜的自我學習筆記,如同專題名稱,主要是怕自已忘記自已做過什麼、學到什麼。索性就分享我自已在學習Kubernetes這條路上的各種測試、學習心得。
2024/05/08
本文將介紹如何在Gitlab上部署和註冊runner,以進行CI/CD測試。透過Docker-compose方式進行部署,同時注意安裝時的一些注意事項。建議學習者至少掌握一種以上的Pipeline工具,以滿足實務上的需求。
Thumbnail
2024/05/08
本文將介紹如何在Gitlab上部署和註冊runner,以進行CI/CD測試。透過Docker-compose方式進行部署,同時注意安裝時的一些注意事項。建議學習者至少掌握一種以上的Pipeline工具,以滿足實務上的需求。
Thumbnail
2024/04/19
上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
Thumbnail
2024/04/19
上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
Thumbnail
2024/04/09
本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
Thumbnail
2024/04/09
本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
當你想升級設備、投放廣告,或是為了雙 11 提前備貨,卻發現現金流卡住時,除了等銀行、跟親友開口,其實還有一個常被忽略、卻很有力的選項。讓房子,成為你事業的贊助商——國峯厝好貸。
Thumbnail
當你想升級設備、投放廣告,或是為了雙 11 提前備貨,卻發現現金流卡住時,除了等銀行、跟親友開口,其實還有一個常被忽略、卻很有力的選項。讓房子,成為你事業的贊助商——國峯厝好貸。
Thumbnail
安裝環境需求 64位元Linux,核心版本為3.1以上,且能滿足Ducker安裝環境。 機器之間要能夠互通。 外部存取權限。 硬體資源:兩核心CPU、8G記憶體、硬碟30GB以上。 安裝Kubeadm與Ducker Kubeadm是Kubernetes的一鍵部署工具。 增加Kube
Thumbnail
安裝環境需求 64位元Linux,核心版本為3.1以上,且能滿足Ducker安裝環境。 機器之間要能夠互通。 外部存取權限。 硬體資源:兩核心CPU、8G記憶體、硬碟30GB以上。 安裝Kubeadm與Ducker Kubeadm是Kubernetes的一鍵部署工具。 增加Kube
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
學習如何使用Python連接MongoDB進行憑證監控,包括建立MongoDB docker-compose、連接MongoDB、讀取yaml並寫入MongoDB、傳入env以及domain寫入MongoDB、讀取MongoDB、修改MongoDB、刪除MongoDB。
Thumbnail
學習如何使用Python連接MongoDB進行憑證監控,包括建立MongoDB docker-compose、連接MongoDB、讀取yaml並寫入MongoDB、傳入env以及domain寫入MongoDB、讀取MongoDB、修改MongoDB、刪除MongoDB。
Thumbnail
上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
Thumbnail
上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
Thumbnail
本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
Thumbnail
本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
Thumbnail
本篇文章將教你如何在Kubernetes cluster內部署一個MongoDB,包括取得Manifests、建立Volume、部署實務、基本操作和結論。透過操作演示,讓你瞭解在實務上如何成功建立MongoDB,並進行基本操作。
Thumbnail
本篇文章將教你如何在Kubernetes cluster內部署一個MongoDB,包括取得Manifests、建立Volume、部署實務、基本操作和結論。透過操作演示,讓你瞭解在實務上如何成功建立MongoDB,並進行基本操作。
Thumbnail
詳細解說如何在 Mac 上透過 Docker 安裝 MongoDB 社群版。包括 MongoDB Compass 的安裝與配置,以及 MongoDB Shell 的使用方法,為開發者提供 MongoDB 學習資源。
Thumbnail
詳細解說如何在 Mac 上透過 Docker 安裝 MongoDB 社群版。包括 MongoDB Compass 的安裝與配置,以及 MongoDB Shell 的使用方法,為開發者提供 MongoDB 學習資源。
Thumbnail
本文將演示在安裝完 Kubernetes Cluster 後的基本元件安裝,包括 Calico/Calicoctl、Metric Server 和 Dashboard UI 的安裝方法以及相關問題與解決方式。
Thumbnail
本文將演示在安裝完 Kubernetes Cluster 後的基本元件安裝,包括 Calico/Calicoctl、Metric Server 和 Dashboard UI 的安裝方法以及相關問題與解決方式。
Thumbnail
這篇文章教你如何搭建Kubernetes Cluster,包括節點安裝前設定、軟體套件安裝、Control-Plane部署和加入運算節點等步驟。在建置之後,作者會分享一些基礎服務的安裝。希望這篇文章對你有所幫助。
Thumbnail
這篇文章教你如何搭建Kubernetes Cluster,包括節點安裝前設定、軟體套件安裝、Control-Plane部署和加入運算節點等步驟。在建置之後,作者會分享一些基礎服務的安裝。希望這篇文章對你有所幫助。
Thumbnail
本文章將說明如果您想要從頭建置一組具有Loadbalancer HA架構的Kubernetes Cluster時,你可能會需要做的事前準備工作。
Thumbnail
本文章將說明如果您想要從頭建置一組具有Loadbalancer HA架構的Kubernetes Cluster時,你可能會需要做的事前準備工作。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News