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

更新 發佈閱讀 10 分鐘

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

vocus|新世代的創作平台

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

  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
vocus|新世代的創作平台
#-----------------------------------------------
# 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
vocus|新世代的創作平台

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
vocus|新世代的創作平台
#-----------------------------------------------
# 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
=> 出現以下畫面即完成連線
vocus|新世代的創作平台

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()
vocus|新世代的創作平台

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
本篇文章將教你如何在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
若說易卜生的《玩偶之家》為 19 世紀的女性,開啟了一扇離家的窄門,那麼《海妲.蓋柏樂》展現的便是門後的窒息世界。本篇文章由劇場演員 Amily 執筆,同為熟稔文本的演員,亦是深刻體察制度縫隙的當代女性,此文所看見的不僅僅是崩壞前夕的最後發聲,更是女人被迫置於冷酷的制度之下,步步陷入無以言說的困境。
Thumbnail
若說易卜生的《玩偶之家》為 19 世紀的女性,開啟了一扇離家的窄門,那麼《海妲.蓋柏樂》展現的便是門後的窒息世界。本篇文章由劇場演員 Amily 執筆,同為熟稔文本的演員,亦是深刻體察制度縫隙的當代女性,此文所看見的不僅僅是崩壞前夕的最後發聲,更是女人被迫置於冷酷的制度之下,步步陷入無以言說的困境。
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
Thumbnail
上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
Thumbnail
全新版本的《三便士歌劇》如何不落入「復刻經典」的巢臼,反而利用華麗的秀場視覺,引導觀眾在晚期資本主義的消費愉悅之中,而能驚覺「批判」本身亦可能被收編——而當絞繩升起,這場關於如何生存的黑色遊戲,又將帶領新時代的我們走向何種後現代的自我解構?
Thumbnail
全新版本的《三便士歌劇》如何不落入「復刻經典」的巢臼,反而利用華麗的秀場視覺,引導觀眾在晚期資本主義的消費愉悅之中,而能驚覺「批判」本身亦可能被收編——而當絞繩升起,這場關於如何生存的黑色遊戲,又將帶領新時代的我們走向何種後現代的自我解構?
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
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
長期以來,西方美學以《維特魯威人》式的幾何比例定義「完美身體」,這種視覺標準無形中成為殖民擴張與種族分類的暴力工具。本文透過分析奈及利亞編舞家庫德斯.奧尼奎庫的舞作《轉轉生》,探討當代非洲舞蹈如何跳脫「標本式」的文化觀看。
Thumbnail
長期以來,西方美學以《維特魯威人》式的幾何比例定義「完美身體」,這種視覺標準無形中成為殖民擴張與種族分類的暴力工具。本文透過分析奈及利亞編舞家庫德斯.奧尼奎庫的舞作《轉轉生》,探討當代非洲舞蹈如何跳脫「標本式」的文化觀看。
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 後的基本元件安裝,包括 Calico/Calicoctl、Metric Server 和 Dashboard UI 的安裝方法以及相關問題與解決方式。
Thumbnail
本文將演示在安裝完 Kubernetes Cluster 後的基本元件安裝,包括 Calico/Calicoctl、Metric Server 和 Dashboard UI 的安裝方法以及相關問題與解決方式。
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。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News