部署mongodb三幅本集群

背景:原先使用的mongodb采用的是SSPL協議,此協議客戶檢測到有bug,故需要替換mongodb的版本,原先采用helm部署的mongodb但是無法找到4.1.4版本的chart包,故手寫yaml部署

1、部署mongodb-arbiter服務

這個服務是用來選舉mongodb副本集群那個節點為primary節點的

apiVersion: apps/v1
kind: StatefulSet
metadata:labels:app: mongodbrelease: mongodbname: mongodb-arbiternamespace: mongo
spec:replicas: 1selector:matchLabels:app: mongodbcomponent: arbiterrelease: mongodbserviceName: mongodb-headlesstemplate:metadata:labels:app: mongodbchart: mongodb-5.10.0component: arbiterrelease: mongodbspec:initContainers:- name: mongodb-initimage: registry.paas:38080/pcas/busybox-arm:latestimagePullPolicy: IfNotPresentcommand: ["sh", "-c", "chown -R 1001:1001 /data/db"]volumeMounts:- name: mongodb-datamountPath: /data/dbcontainers:- env:- name: MONGODB_SYSTEM_LOG_VERBOSITYvalue: "0"- name: MONGODB_DISABLE_SYSTEM_LOGvalue: "no"- name: MONGODB_POD_NAMEvalueFrom:fieldRef:apiVersion: v1fieldPath: metadata.name- name: MONGODB_REPLICA_SET_MODEvalue: arbiter- name: MONGODB_PRIMARY_HOSTvalue: mongodb- name: MONGODB_REPLICA_SET_NAMEvalue: rs0- name: MONGODB_ADVERTISED_HOSTNAMEvalue: $(MONGODB_POD_NAME).mongodb-headless.mongo.svc.cluster.local- name: MONGODB_PRIMARY_ROOT_PASSWORDvalueFrom:secretKeyRef:key: mongodb-root-passwordname: mongodb- name: MONGODB_REPLICA_SET_KEYvalueFrom:secretKeyRef:key: mongodb-replica-set-keyname: mongodb- name: MONGODB_ENABLE_IPV6value: "yes"- name: MONGODB_ENABLE_DIRECTORY_PER_DBvalue: "no"image: mongo:4.1.4imagePullPolicy: IfNotPresentlivenessProbe:failureThreshold: 6initialDelaySeconds: 30periodSeconds: 10successThreshold: 1tcpSocket:port: mongodbtimeoutSeconds: 5name: mongodb-arbiterports:- containerPort: 27017name: mongodbprotocol: TCPreadinessProbe:failureThreshold: 6initialDelaySeconds: 5periodSeconds: 10successThreshold: 1tcpSocket:port: mongodbtimeoutSeconds: 5securityContext:runAsNonRoot: truerunAsUser: 1001volumeMounts:- mountPath: /data/dbname: mongodb-datavolumeClaimTemplates:- apiVersion: v1kind: PersistentVolumeClaimmetadata:name: mongodb-dataspec:accessModes:- ReadWriteOnceresources:requests:storage: 10GistorageClassName: rbd-ssd

2、部署mongodb-primary

apiVersion: apps/v1
kind: StatefulSet
metadata:labels:app: mongodbapp.kubernetes.io/managed-by: Helmchart: mongodb-5.10.0heritage: Helmrelease: mongodbname: mongodb-primarynamespace: mongo
spec:replicas: 1selector:matchLabels:app: mongodbcomponent: primaryrelease: mongodbserviceName: mongodb-headlesstemplate:metadata:labels:app: mongodbchart: mongodb-5.10.0component: primaryrelease: mongodbspec:containers:- env:- name: MONGODB_SYSTEM_LOG_VERBOSITYvalue: "0"- name: MONGODB_DISABLE_SYSTEM_LOGvalue: "no"- name: MONGODB_POD_NAMEvalueFrom:fieldRef:apiVersion: v1fieldPath: metadata.name- name: MONGODB_REPLICA_SET_MODEvalue: primary- name: MONGODB_REPLICA_SET_NAMEvalue: rs0- name: MONGODB_ADVERTISED_HOSTNAMEvalue: $(MONGODB_POD_NAME).mongodb-headless.mongo.svc.cluster.local- name: MONGODB_ROOT_PASSWORDvalueFrom:secretKeyRef:key: mongodb-root-passwordname: mongodb- name: MONGODB_REPLICA_SET_KEYvalueFrom:secretKeyRef:key: mongodb-replica-set-keyname: mongodb- name: MONGODB_ENABLE_IPV6value: "yes"- name: MONGODB_ENABLE_DIRECTORY_PER_DBvalue: "no"image: mongo:4.1.4imagePullPolicy: IfNotPresentlivenessProbe:exec:command:- mongo- --eval- db.adminCommand('ping')failureThreshold: 6initialDelaySeconds: 30periodSeconds: 10successThreshold: 1timeoutSeconds: 5name: mongodb-primaryports:- containerPort: 27017name: mongodbprotocol: TCPreadinessProbe:exec:command:- mongo- --eval- db.adminCommand('ping')failureThreshold: 6initialDelaySeconds: 5periodSeconds: 10successThreshold: 1timeoutSeconds: 5securityContext:runAsNonRoot: truerunAsUser: 1001volumeMounts:- mountPath: /data/dbname: datadirsecurityContext:fsGroup: 1001volumeClaimTemplates:- apiVersion: v1kind: PersistentVolumeClaimmetadata:name: datadirspec:accessModes:- ReadWriteOnceresources:requests:storage: 100GistorageClassName: rbd-ssd

3、部署mongodb-secondary服務

apiVersion: apps/v1
kind: StatefulSet
metadata:labels:app: mongodbapp.kubernetes.io/managed-by: Helmchart: mongodb-5.10.0heritage: Helmrelease: mongodbname: mongodb-secondarynamespace: mongo
spec:replicas: 2selector:matchLabels:app: mongodbcomponent: secondaryrelease: mongodbserviceName: mongodb-headlesstemplate:metadata:creationTimestamp: nulllabels:app: mongodbchart: mongodb-5.10.0component: secondaryrelease: mongodbspec:containers:- env:- name: MONGODB_SYSTEM_LOG_VERBOSITYvalue: "0"- name: MONGODB_DISABLE_SYSTEM_LOGvalue: "no"- name: MONGODB_POD_NAMEvalueFrom:fieldRef:apiVersion: v1fieldPath: metadata.name- name: MONGODB_REPLICA_SET_MODEvalue: secondary- name: MONGODB_PRIMARY_HOSTvalue: mongodb- name: MONGODB_REPLICA_SET_NAMEvalue: rs0- name: MONGODB_ADVERTISED_HOSTNAMEvalue: $(MONGODB_POD_NAME).mongodb-headless.mongo.svc.cluster.local- name: MONGODB_PRIMARY_ROOT_PASSWORDvalueFrom:secretKeyRef:key: mongodb-root-passwordname: mongodb- name: MONGODB_REPLICA_SET_KEYvalueFrom:secretKeyRef:key: mongodb-replica-set-keyname: mongodb- name: MONGODB_ENABLE_IPV6value: "yes"- name: MONGODB_ENABLE_DIRECTORY_PER_DBvalue: "no"image: mongo:4.1.4imagePullPolicy: IfNotPresentlivenessProbe:exec:command:- mongo- --eval- db.adminCommand('ping')failureThreshold: 6initialDelaySeconds: 30periodSeconds: 10successThreshold: 1timeoutSeconds: 5name: mongodb-secondaryports:- containerPort: 27017name: mongodbprotocol: TCPreadinessProbe:exec:command:- mongo- --eval- db.adminCommand('ping')failureThreshold: 6initialDelaySeconds: 5periodSeconds: 10successThreshold: 1timeoutSeconds: 5securityContext:runAsNonRoot: truerunAsUser: 1001volumeMounts:- mountPath: /data/dbname: datadirsecurityContext:fsGroup: 1001volumeClaimTemplates:- apiVersion: v1kind: PersistentVolumeClaimmetadata:creationTimestamp: nullname: datadirspec:accessModes:- ReadWriteOnceresources:requests:storage: 100GistorageClassName: rbd-ssd

4、部署集群service

[root@EIS-01 mongodb]# cat mongodb-svc.yaml
apiVersion: v1
kind: Service
metadata:labels:app: mongodbapp.kubernetes.io/managed-by: Helmchart: mongodb-5.10.0heritage: Helmrelease: mongodbname: mongodbnamespace: mongo
spec:ports:- name: mongodbport: 27017protocol: TCPtargetPort: mongodbselector:app: mongodbcomponent: primaryrelease: mongodbtype: ClusterIP
[root@EIS-01 mongodb]# cat mongodb-headless-svc.yaml
apiVersion: v1
kind: Service
metadata:labels:app: mongodbapp.kubernetes.io/managed-by: Helmchart: mongodb-5.10.0heritage: Helmrelease: mongodbname: mongodb-headlessnamespace: mongo
spec:clusterIP: Noneports:- name: mongodbport: 27017protocol: TCPtargetPort: 27017selector:app: mongodbrelease: mongodb

為了方便研發使用使用工具連接數據庫增刪改查數據庫的數據,故給primary節點單獨寫個svc

[root@EIS-01 mongodb]# cat mongodb-primary-svc.yaml
apiVersion: v1
kind: Service
metadata:labels:app: mongodbcomponent: primaryrelease: mongodbname: mongodb-primary-servicenamespace: mongo
spec:ports:- name: mongodbnodePort: 31767port: 27017protocol: TCPtargetPort: 27017selector:component: primarytype: NodePort

5、設置mongodb登錄密碼

apiVersion: v1
data:mongodb-replica-set-key: U3RsUWZxRUl4ag==mongodb-root-password: VHJhxxxx
kind: Secret
metadata:annotations:meta.helm.sh/release-name: mongodbmeta.helm.sh/release-namespace: mongodblabels:app: mongodbapp.kubernetes.io/managed-by: Helmchart: mongodb-5.10.0heritage: Helmrelease: mongodbname: mongodbnamespace: mongo

6、部署服務

[root@EIS-01 mongodb]# ll
total 28K
-rw-r--r-- 1 root root 2.8K Apr 25 17:15 mongodb-arbiter.yaml
-rw-r--r-- 1 root root  410 Apr 25 15:24 mongodb-headless-svc.yaml
-rw-r--r-- 1 root root  322 Apr 25 16:34 mongodb-primary-svc.yaml
-rw-r--r-- 1 root root 2.8K Apr 25 16:12 mongodb-primary.yaml
-rw-r--r-- 1 root root 3.0K Apr 25 16:13 mongodb-secondary.yaml
-rw-r--r-- 1 root root  415 Apr 25 17:18 mongodb-secret.yaml
-rw-r--r-- 1 root root  410 Apr 25 15:23 mongodb-svc.yaml
[root@EIS-01 mongodb]#kubectl apply -f .
[root@EIS-01 mongodb]# kubectl get pod -n mongo
NAME                  READY   STATUS    RESTARTS   AGE
mongodb-arbiter-0     1/1     Running   0          41h
mongodb-primary-0     1/1     Running   0          41h
mongodb-secondary-0   1/1     Running   0          41h
mongodb-secondary-1   1/1     Running   0          41h

至此mongodb三幅本部署完成

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903307.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903307.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903307.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jdk1.8.0_05 在 SpringBootTest Debug模式下奔潰

之前好好的項目,最近換了之前的電腦,但是在使用SpringBootTest 啟動debug模式時,虛擬機就會奔潰,通過修改如果把 junit5 import org.junit.jupiter.api.Test; 修改為 junit4 ,就不奔潰了 import org.junit.Test; 但是這樣的…

QGIS+mcp的安裝和使用

QGISmcp的安裝和使用 安裝qgis_mcp 下載qgis_mcp: git clone https://github.com/jjsantos01/qgis_mcp.git安裝uv uv是一個由Rust語言編寫的python包管理工具,旨在提供比傳統工具(如 pip)更高效的依賴管理和虛擬環境操作。 p…

厚銅pcb生產廠家哪家好?

在為您的項目選擇厚銅PCB供應商時,技術實力、生產經驗與交付能力是決定產品可靠性的關鍵。隨著新能源汽車、工業電源、5G通信等領域對高電流承載、高效散熱的需求激增,厚銅PCB(銅厚3oz以上)的工藝門檻不斷提升。本文結合行業頭部企…

再見,物理刪除!MyBatis-Plus @TableLogic 優雅實現邏輯刪除

在開發應用程序時,我們經常會遇到需要刪除數據的場景。但直接從數據庫中物理刪除(DELETE?)數據有時并非最佳選擇。為什么呢? 數據恢復: 一旦物理刪除,數據通常難以恢復,誤操作可能導致災難性后果。審計追…

湖北理元理律師事務所:債務管理領域的平臺化創新探索

隨著中國居民負債率攀升至62%(央行2023年數據),債務管理從個體需求演變為社會性課題。湖北理元理律師事務所通過“法律科技金融”的融合模式,構建了國內首個全鏈條債務管理平臺,其服務邏輯與行業價值值得深度剖析。 平…

【更新】LLM Interview (2)

字數溢出,不解釋 前文:llm interview (1) 文章目錄 強化學習專題1 什么是RL?2 RL和監督、非監督、深度學習的區別3 RL中所謂的損失函數與深度學習中的損失函數有何區別?4 RL歷史5 RL分類5.1 分類圖示5.2 根據智能體動作選取方式分…

高性價比手機如何挑選?

這四個關鍵點,助你找到心儀機~ 一、性能強者:游戲娛樂暢快到底 處理器相當于手機的 “大腦”,處理速度快、能力強,運行大型游戲毫無壓力。 搭配上大容量運存,多任務切換也能秒速完成,再也不怕游戲卡頓啦。…

測試—概念篇

1. 什么是需求 在多數軟件公司,會有兩部分需求,?部分是用戶需求,?部分是軟件需求。 1.1 用戶需求 用戶需求:可以簡單理解為甲方提出的需求,如果沒有甲方,那么就是終端用戶使?產品時必須要完成的任務。…

HTML5好看的水果蔬菜在線商城網站源碼系列模板7

文章目錄 1.設計來源1.1 主界面1.2 關于我們界面1.3 商城界面1.4 商品信息界面1.5 我的賬戶界面1.6 聯系我們界面 2.效果和源碼2.1 動態效果2.2 源代碼 源碼下載萬套模板,程序開發,在線開發,在線溝通 作者:xcLeigh 文章地址&#…

Atcoder Help 有關Atcoder 的介紹-1 漲分規則

AtCoder 的 Rating 計算系統基于改進的 Elo 算法,主要包含以下核心機制: 一、基礎計算公式 Rating 是「表現分(Performance)」的加權平均值減去衰減函數 f ( n ) f(n) f(n),其中: 新用戶初始 f ( 1 ) 1200 f(1)1200 f(1)120…

設置右鍵打開VSCode

在日常的開發工作中,VSCode 是一款非常受歡迎的代碼編輯器。為了更加便捷地使用它,我們可以將 VSCode 添加到右鍵菜單中,這樣只需右鍵點擊文件或文件夾,就能快速用 VSCode 打開,極大地提高工作效率。下面我就來介紹一下…

python密碼學之密鑰HSM硬件抽象層(HAL)

目錄 摘要1. 項目背景與總體架構1.1 HSM 與 HAL 的必要性1.2 本項目目標1.3 模塊化設計2. 自研輕量對稱加密算法 SSC(SimpleSecureCipher)2.1 算法原理2.2 輪密鑰擴展3. HAL 接口與安全內存模擬3.1 HAL 接口定義3.2 安全內存 SecureMemory4. PyQt6 GUI 設計與功能模塊4.1 界面…

機器學習分類模型性能評估:應對類別不平衡的策略與指標

在機器學習的世界里,模型們就像一群努力破案的偵探,而數據就是它們的“犯罪現場”。今天,咱們的主角——一個自命不凡的分類模型,接到了一個看似簡單的任務:揪出那些患有罕見疾病的患者。這聽起來是不是很容易&#xf…

vue3代碼規范管理;基于vite和vue3、 eslint、prettier、stylelint、husky規范;git觸發eslint校驗

前言 為提高前端代碼格式化和規范開發。主要使用eslint、prettier、husky完成對git提交commit信息校驗和代碼eslint格式化校驗,不符合要求的代碼,提交不到倉庫。 參考鏈接1 參考鏈接2 文章目錄 前言一、效果圖1.git提交觸發eslint規范校驗2.版本與分支名…

GCC 內建函數匯編展開詳解

1. 引言 GNU 編譯器集合(GCC)是廣泛使用的開源編譯器套件,支持多種編程語言,其中 C 語言編譯器是其核心組件之一。在 C 語言編譯過程中,GCC 不僅處理用戶編寫的標準 C 代碼,還提供了一類特殊的函數——內建…

uniapp利用生命周期函數實現后臺常駐示例

在 Uniapp 中,利用生命周期函數實現“后臺常駐”主要是通過監聽應用的前后臺狀態變化( onHide 和 onShow ),并結合 定時器、后臺任務或狀態保持邏輯 來實現。但需注意: 純前端 JS 代碼無法突破系統對后臺應用的限制&am…

layui時間范圍

//時間范圍String time_range para.getString("time_range", "");if (!StrUtil.isEmpty(time_range)) {String dateArr[] time_range.split("-");if (dateArr.length 2) {para.put("start_date", dateArr[0].trim().replace("…

入門版 鴻蒙 組件導航 (Navigation)

入門版 鴻蒙 組件導航 (Navigation) 注意:使用 DevEco Studio 運行本案例,要使用模擬器,千萬不要用預覽器,預覽器看看 Navigation 布局還是可以的 效果:點擊首頁(Index)跳轉到頁面&#xff08…

VUE3:封裝一個評論回復組件

之前用React封裝的評論回復組件,里面有三個主要部分:CommentComponent作為主組件,CommentItem處理單個評論項,CommentInput負責輸入框。現在需要將這些轉換為Vue3的組件。 Vue3和React在狀態管理上有所不同,Vue3使用r…

制作一款打飛機游戲27:精靈編輯器UI

繼續開發我們的編輯器——Sprit Edit。我們已經創建了這個小編輯器,它可以顯示很多精靈(sprites),并且我們可以遍歷所有精靈。這真的很棒,我們可以創建新的精靈,這也不錯。但是,唉,我…