改为自己的storageclass
[root@master-iot mongodb]# helm install -f mongodb-replicaset/values.yaml --name mongodb-ha stable/mongodb-replicaset --namespace mongod
[root@master-iot ~]# kubectl get all -n mongod
NAME READY STATUS RESTARTS AGE
pod/mongodb-ha-mongodb-replicaset-0 1/1 Running 0 63m
pod/mongodb-ha-mongodb-replicaset-1 1/1 Running 0 62m
pod/mongodb-ha-mongodb-replicaset-2 1/1 Running 0 60m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/mongodb-ha-mongodb-replicaset ClusterIP None <none> 27017/TCP 63m
service/mongodb-ha-mongodb-replicaset-client ClusterIP None <none> 27017/TCP 63m
NAME READY AGE
statefulset.apps/mongodb-ha-mongodb-replicaset 3/3 63m
三:测试
[root@master-iot ~]# kubectl exec -it mongodb-ha-mongodb-replicaset-0 -n mongod bash
mongodb@mongodb-ha-mongodb-replicaset-0:/$ mongo --host localhost --port 27017
MongoDB shell version v3.6.16
connecting to: mongodb://localhost:27017/?gssapiServiceName=mongodb
Implicit session: session{"id":UUID("a2c98d61-085e-4a97-a487-9463b6d551d3")}MongoDB server version: 3.6.16
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
2020-01-05T06:56:01.891+0000 I STORAGE [main] In File::open(), ::open for '/home/mongodb/.mongorc.js' failed with No such file or directory
Server has startup warnings:
2020-01-05T05:48:52.214+0000 I CONTROL [initandlisten]
2020-01-05T05:48:52.214+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-01-05T05:48:52.214+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2020-01-05T05:48:52.214+0000 I CONTROL [initandlisten]
2020-01-05T05:48:52.214+0000 I CONTROL [initandlisten]
2020-01-05T05:48:52.214+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-01-05T05:48:52.214+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2020-01-05T05:48:52.214+0000 I CONTROL [initandlisten]
2020-01-05T05:48:52.214+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2020-01-05T05:48:52.214+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2020-01-05T05:48:52.214+0000 I CONTROL [initandlisten]
rs0:PRIMARY>
rs0:PRIMARY> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
rs0:PRIMARY> use test
switched to db test
rs0:PRIMARY> db.test.find().pretty().count()
100
rs0:PRIMARY> rs.status(){"set" : "rs0",
"date" : ISODate("2020-01-05T06:56:51.025Z"),
"myState" : 1,
"term" : NumberLong(2),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" :{"lastCommittedOpTime" :{"ts":Timestamp(1578207404, 1),
"t":NumberLong(2)},
"readConcernMajorityOpTime" :{"ts":Timestamp(1578207404, 1),
"t":NumberLong(2)},
"appliedOpTime" :{"ts":Timestamp(1578207404, 1),
"t":NumberLong(2)},
"durableOpTime" :{"ts":Timestamp(1578207404, 1),
"t":NumberLong(2)}},
"members" : [{"_id" : 0,
"name" : "mongodb-ha-mongodb-replicaset-0.mongodb-ha-mongodb-replicaset.mongod.svc.cluster.local:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 4081,
"optime" :{"ts":Timestamp(1578207404, 1),
"t":NumberLong(2)},
"optimeDate":ISODate("2020-01-05T06:56:44Z"),
"syncingTo":"",
"syncSourceHost":"",
"syncSourceId": -1,
"infoMessage":"",
"electionTime":Timestamp(1578203332, 1),
"electionDate":ISODate("2020-01-05T05:48:52Z"),
"configVersion": 3,
"self": true,
"lastHeartbeatMessage":""},{"_id" : 1,
"name" : "mongodb-ha-mongodb-replicaset-1.mongodb-ha-mongodb-replicaset.mongod.svc.cluster.local:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 3962,
"optime" :{"ts":Timestamp(1578207404, 1),
"t":NumberLong(2)},
"optimeDurable" :{"ts":Timestamp(1578207404, 1),
"t":NumberLong(2)},
"optimeDate":ISODate("2020-01-05T06:56:44Z"),
"optimeDurableDate":ISODate("2020-01-05T06:56:44Z"),
"lastHeartbeat":ISODate("2020-01-05T06:56:50.893Z"),
"lastHeartbeatRecv":ISODate("2020-01-05T06:56:49.795Z"),
"pingMs":NumberLong(0),
"lastHeartbeatMessage":"",
"syncingTo":"mongodb-ha-mongodb-replicaset-0.mongodb-ha-mongodb-replicaset.mongod.svc.cluster.local:27017",
"syncSourceHost":"mongodb-ha-mongodb-replicaset-0.mongodb-ha-mongodb-replicaset.mongod.svc.cluster.local:27017",
"syncSourceId": 0,
"infoMessage":"",
"configVersion": 3
},{"_id" : 2,
"name" : "mongodb-ha-mongodb-replicaset-2.mongodb-ha-mongodb-replicaset.mongod.svc.cluster.local:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 3851,
"optime" :{"ts":Timestamp(1578207404, 1),
"t":NumberLong(2)},
"optimeDurable" :{"ts":Timestamp(1578207404, 1),
"t":NumberLong(2)},
"optimeDate":ISODate("2020-01-05T06:56:44Z"),
"optimeDurableDate":ISODate("2020-01-05T06:56:44Z"),
"lastHeartbeat":ISODate("2020-01-05T06:56:50.879Z"),
"lastHeartbeatRecv":ISODate("2020-01-05T06:56:49.887Z"),
"pingMs":NumberLong(1),
"lastHeartbeatMessage":"",
"syncingTo":"mongodb-ha-mongodb-replicaset-0.mongodb-ha-mongodb-replicaset.mongod.svc.cluster.local:27017",
"syncSourceHost":"mongodb-ha-mongodb-replicaset-0.mongodb-ha-mongodb-replicaset.mongod.svc.cluster.local:27017",
"syncSourceId": 0,
"infoMessage":"",
"configVersion": 3
}],
"ok" : 1,
"operationTime" : Timestamp(1578207404, 1),
"$clusterTime" :{"clusterTime" : Timestamp(1578207404, 1),
"signature" :{"hash":BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId":NumberLong(0)}}}rs0:PRIMARY> rs.isMaster(){"hosts" : [
"mongodb-ha-mongodb-replicaset-0.mongodb-ha-mongodb-replicaset.mongod.svc.cluster.local:27017",
"mongodb-ha-mongodb-replicaset-1.mongodb-ha-mongodb-replicaset.mongod.svc.cluster.local:27017",
"mongodb-ha-mongodb-replicaset-2.mongodb-ha-mongodb-replicaset.mongod.svc.cluster.local:27017"
],
"setName" : "rs0",
"setVersion" : 3,
"ismaster" : true,
"secondary" : false,
"primary" : "mongodb-ha-mongodb-replicaset-0.mongodb-ha-mongodb-replicaset.mongod.svc.cluster.local:27017",
"me" : "mongodb-ha-mongodb-replicaset-0.mongodb-ha-mongodb-replicaset.mongod.svc.cluster.local:27017",
"electionId" : ObjectId("7fffffff0000000000000002"),
"lastWrite" :{"opTime" :{"ts":Timestamp(1578207424, 1),
"t":NumberLong(2)},
"lastWriteDate" : ISODate("2020-01-05T06:57:04Z"),
"majorityOpTime" :{"ts":Timestamp(1578207424, 1),
"t":NumberLong(2)},
"majorityWriteDate":ISODate("2020-01-05T06:57:04Z")},
"maxBsonObjectSize" : 16777216,
"maxMessageSizeBytes" : 48000000,
"maxWriteBatchSize" : 100000,
"localTime" : ISODate("2020-01-05T06:57:11.999Z"),
"logicalSessionTimeoutMinutes" : 30,
"minWireVersion" : 0,
"maxWireVersion" : 6,
"readOnly" : false,
"ok" : 1,
"operationTime" : Timestamp(1578207424, 1),
"$clusterTime" :{"clusterTime" : Timestamp(1578207424, 1),
"signature" :{"hash":BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId":NumberLong(0)}}}[root@master-iot ~]# kubectl exec -it mongodb-ha-mongodb-replicaset-1 -n mongod bash
rs0:SECONDARY> rs.slaveOk()
rs0:SECONDARY> use test
switched to db test
rs0:SECONDARY> db.test.find().pretty().count()
100
删除主节点测试高可用
[root@master-iot ~]# kubectl get pods -n mongod
NAME READY STATUS RESTARTS AGE
mongodb-ha-mongodb-replicaset-0 1/1 Running 0 71m
mongodb-ha-mongodb-replicaset-1 1/1 Running 0 70m
mongodb-ha-mongodb-replicaset-2 1/1 Running 0 68m
[root@master-iot ~]# kubectl delete pods mongodb-ha-mongodb-replicaset-0 -n mongod
pod "mongodb-ha-mongodb-replicaset-0" deleted
[root@master-iot ~]# kubectl get pods -n mongod
NAME READY STATUS RESTARTS AGE
mongodb-ha-mongodb-replicaset-0 1/1 Running 0 21s
mongodb-ha-mongodb-replicaset-1 1/1 Running 0 70m
mongodb-ha-mongodb-replicaset-2 1/1 Running 0 68m
查看数据是否同步
[root@master-iot ~]# kubectl exec -it mongodb-ha-mongodb-replicaset-0 -n mongod bash
mongodb@mongodb-ha-mongodb-replicaset-0:/$ mongo --host localhost --port 27017
MongoDB shell version v3.6.16
connecting to: mongodb://localhost:27017/?gssapiServiceName=mongodb
Implicit session: session{"id":UUID("82f2fa84-7e66-4789-a613-64b0929a6c5b")}
MongoDB server version: 3.6.16
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
2020-01-05T07:00:25.417+0000 I STORAGE [main] In File::open(), ::open for '/home/mongodb/.mongorc.js' failed with No such file or directory
Server has startup warnings:
2020-01-05T06:59:37.903+0000 I CONTROL [initandlisten]
2020-01-05T06:59:37.903+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-01-05T06:59:37.903+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2020-01-05T06:59:37.903+0000 I CONTROL [initandlisten]
2020-01-05T06:59:37.903+0000 I CONTROL [initandlisten]
2020-01-05T06:59:37.903+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-01-05T06:59:37.903+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2020-01-05T06:59:37.903+0000 I CONTROL [initandlisten]
2020-01-05T06:59:37.903+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2020-01-05T06:59:37.903+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2020-01-05T06:59:37.903+0000 I CONTROL [initandlisten]
rs0:SECONDARY> rs.slaveOk()rs0:SECONDARY> use test
switched to db test
rs0:SECONDARY> db.test.find().count()
100
数据一致