Hello,
We recently deployed mongodb on k8s as a replicaset. Everything was working fine until we had to restart the pods.
The arbiter, primary and secondary are up, but they can’t communicate with each other and it’s impossible to connect to the db.
In the logs for the primary we see on startup that the getaddrinfo failed:
I NETWORK [initandlisten] waiting for connections on port 27017
W NETWORK [replexec-0] getaddrinfo(“mongodb-secondary-0.mongodb-headless.mongodb-replicaset.svc.cluster.local”) failed: Name or service not known
D NETWORK [replexec-0] connected to server mongodb-arbiter-0.mongodb-headless.mongodb-replicaset.svc.cluster.local:27017
W NETWORK [replexec-0] getaddrinfo(“mongodb-arbiter-0”) failed: Temporary failure in name resolution
Afterwards there are constant messages on host unreachable:
[Replication] Failed to connect to mongodb-secondary-0.mongodb-headless.mongodb-replicaset.svc.cluster.local:27017 - HostUnreachable: Error connecting to mongodb-secondary-0.mongodb-headless.mongodb-replicaset.svc.cluster.local:27017 :: caused by :: Could not find address for mongodb-secondary-0.mongodb-headless.mongodb-replicaset.svc.cluster.local:27017: SocketException: Host not found (authoritative)
We’re using MONGODB_ADVERTISED_HOSTNAME as such:
- name: MONGODB_ADVERTISED_HOSTNAME
value: >-
$(MONGODB_POD_NAME).mongodb-headless.mongodb-
replicaset.svc.cluster.local
Network in the k8s wasn’t modified, other clusters/namespaces work fine. We tried using a different version of bitnami/mongodb but then reverted to the previous version and configuration which had
worked.
Network endpoints:
apiVersion: v1
kind: Service
metadata:
name: mongodb-headless
namespace: mongodb-replicaset
selfLink: /api/v1/namespaces/mongodb-replicaset/services/mongodb-headless
uid: ea2c62e8-2916-11e9-a6b7-0050568f5646
resourceVersion: '578197287'
creationTimestamp: '2019-02-05T07:23:20Z'
labels:
app: mongodb
chart: mongodb-7.4.4
heritage: Tiller
io.cattle.field/appId: mongodb
release: mongodb
status:
loadBalancer: {}
spec:
ports:
- name: mongodb
protocol: TCP
port: 27017
targetPort: 27017
selector:
app: mongodb
release: mongodb
clusterIP: None
type: ClusterIP
sessionAffinity: None
mongo
apiVersion: v1
kind: Service
metadata:
name: mongodb
namespace: mongodb-replicaset
selfLink: /api/v1/namespaces/mongodb-replicaset/services/mongodb
uid: ea2ff8be-2916-11e9-a6b7-0050568f5646
resourceVersion: '574164609'
creationTimestamp: '2019-02-05T07:23:20Z'
labels:
app: mongodb
chart: mongodb-7.4.4
heritage: Tiller
io.cattle.field/appId: mongodb
release: mongodb
annotations:
field.cattle.io/publicEndpoints: >-
[{"addresses":["10.8.7.22"],"port":27017,"protocol":"TCP","serviceName":"mongodb-replicaset:mongodb","allNodes":true}]
status:
loadBalancer: {}
spec:
ports:
- name: mongodb
protocol: TCP
port: 27017
targetPort: mongodb
nodePort: 27017
selector:
app: mongodb
component: primary
release: mongodb
clusterIP: 10.43.154.112
type: NodePort
sessionAffinity: None
externalTrafficPolicy: Cluster
Pods:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongodb-arbiter
namespace: mongodb-replicaset
selfLink: /apis/apps/v1/namespaces/mongodb-replicaset/statefulsets/mongodb-arbiter
uid: ea31cd4e-2916-11e9-a6b7-0050568f5646
resourceVersion: '578375651'
generation: 146
creationTimestamp: '2019-02-05T07:23:20Z'
labels:
app: mongodb
chart: mongodb-7.4.4
heritage: Tiller
io.cattle.field/appId: mongodb
release: mongodb
status:
observedGeneration: 146
replicas: 1
readyReplicas: 1
currentReplicas: 1
updatedReplicas: 1
currentRevision: mongodb-arbiter-b5bd84ffc
updateRevision: mongodb-arbiter-b5bd84ffc
collisionCount: 0
spec:
replicas: 1
selector:
matchLabels:
app: mongodb
component: arbiter
release: mongodb
template:
metadata:
creationTimestamp: null
labels:
app: mongodb
chart: mongodb-7.4.4
component: arbiter
release: mongodb
spec:
containers:
- name: mongodb-arbiter
image: golem.ilntsur.loc:18080/bitnami/mongodb:4.0.13
ports:
- name: mongodb
containerPort: 27017
protocol: TCP
env:
- name: BITNAMI_DEBUG
value: 'true'
- name: MONGODB_ADVERTISED_HOSTNAME
value: >-
$(MONGODB_POD_NAME).mongodb-headless.mongodb-replicaset.svc.cluster.local
- name: MONGODB_DISABLE_SYSTEM_LOG
value: 'no'
- name: MONGODB_ENABLE_DIRECTORY_PER_DB
value: 'no'
- name: MONGODB_ENABLE_IPV6
value: 'no'
- name: MONGODB_PRIMARY_HOST
value: mongodb
- name: MONGODB_REPLICA_SET_MODE
value: arbiter
- name: MONGODB_REPLICA_SET_NAME
value: mongodb-replicaset
- name: MONGODB_SYSTEM_LOG_VERBOSITY
value: '1'
- name: MONGODB_POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: MONGODB_PRIMARY_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mongodb
key: mongodb-root-password
- name: MONGODB_REPLICA_SET_KEY
valueFrom:
secretKeyRef:
name: mongodb
key: mongodb-replica-set-key
resources: {}
livenessProbe:
tcpSocket:
port: mongodb
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 6
readinessProbe:
tcpSocket:
port: mongodb
initialDelaySeconds: 5
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 6
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
securityContext:
runAsUser: 1001
runAsNonRoot: true
procMount: Default
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
securityContext:
fsGroup: 1001
affinity: {}
schedulerName: default-scheduler
serviceName: mongodb-headless
podManagementPolicy: OrderedReady
updateStrategy:
type: RollingUpdate
rollingUpdate:
partition: 0
revisionHistoryLimit: 10
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongodb-primary
namespace: mongodb-replicaset
selfLink: /apis/apps/v1/namespaces/mongodb-replicaset/statefulsets/mongodb-primary
uid: ea3392bf-2916-11e9-a6b7-0050568f5646
resourceVersion: '578202691'
generation: 143
creationTimestamp: '2019-02-05T07:23:20Z'
labels:
app: mongodb
chart: mongodb-7.4.4
heritage: Tiller
io.cattle.field/appId: mongodb
release: mongodb
annotations:
field.cattle.io/publicEndpoints: >-
[{"addresses":["10.8.7.22"],"port":27017,"protocol":"TCP","serviceName":"mongodb-replicaset:mongodb","allNodes":true}]
status:
observedGeneration: 143
replicas: 1
readyReplicas: 1
currentReplicas: 1
updatedReplicas: 1
currentRevision: mongodb-primary-bcd5b684b
updateRevision: mongodb-primary-bcd5b684b
collisionCount: 0
spec:
replicas: 1
selector:
matchLabels:
app: mongodb
component: primary
release: mongodb
template:
metadata:
creationTimestamp: null
labels:
app: mongodb
chart: mongodb-7.4.4
component: primary
release: mongodb
annotations:
cattle.io/timestamp: '2021-07-19T14:05:32Z'
field.cattle.io/ports: >-
[[{"containerPort":27017,"dnsName":"mongodb-primary","kind":"ClusterIP","name":"mongodb","protocol":"TCP"}]]
field.cattle.io/publicEndpoints: >-
[{"addresses":["10.8.7.22"],"allNodes":true,"port":27017,"protocol":"TCP","serviceId":"mongodb-replicaset:mongodb"}]
spec:
containers:
- name: mongodb-primary
image: golem.ilntsur.loc:18080/bitnami/mongodb:4.0.13
ports:
- name: mongodb
containerPort: 27017
protocol: TCP
env:
- name: BITNAMI_DEBUG
value: 'true'
- name: MONGODB_ADVERTISED_HOSTNAME
value: >-
$(MONGODB_POD_NAME).mongodb-headless.mongodb-replicaset.svc.cluster.local
- name: MONGODB_DISABLE_SYSTEM_LOG
value: 'no'
- name: MONGODB_ENABLE_DIRECTORY_PER_DB
value: 'no'
- name: MONGODB_ENABLE_IPV6
value: 'no'
- name: MONGODB_REPLICA_SET_MODE
value: primary
- name: MONGODB_REPLICA_SET_NAME
value: mongodb-replicaset
- name: MONGODB_SYSTEM_LOG_VERBOSITY
value: '0'
- name: MONGODB_POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: MONGODB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mongodb
key: mongodb-root-password
- name: MONGODB_REPLICA_SET_KEY
valueFrom:
secretKeyRef:
name: mongodb
key: mongodb-replica-set-key
resources: {}
volumeMounts:
- name: datadir
mountPath: /bitnami/mongodb
livenessProbe:
exec:
command:
- pgrep
- mongod
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 6
readinessProbe:
exec:
command:
- mongo
- '--eval'
- db.adminCommand('ping')
initialDelaySeconds: 5
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 6
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
securityContext:
runAsUser: 1001
runAsNonRoot: true
procMount: Default
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
securityContext:
fsGroup: 1001
affinity: {}
schedulerName: default-scheduler
volumeClaimTemplates:
- kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: datadir
creationTimestamp: null
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
storageClassName: nfs-client
volumeMode: Filesystem
status:
phase: Pending
serviceName: mongodb-headless
podManagementPolicy: OrderedReady
updateStrategy:
type: RollingUpdate
rollingUpdate:
partition: 0
revisionHistoryLimit: 10
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongodb-secondary
namespace: mongodb-replicaset
selfLink: /apis/apps/v1/namespaces/mongodb-replicaset/statefulsets/mongodb-secondary
uid: ea36259c-2916-11e9-a6b7-0050568f5646
resourceVersion: '578203765'
generation: 172
creationTimestamp: '2019-02-05T07:23:20Z'
labels:
app: mongodb
chart: mongodb-7.4.4
heritage: Tiller
io.cattle.field/appId: mongodb
release: mongodb
status:
observedGeneration: 172
replicas: 1
readyReplicas: 1
currentReplicas: 1
updatedReplicas: 1
currentRevision: mongodb-secondary-6f757c5bc
updateRevision: mongodb-secondary-6f757c5bc
collisionCount: 0
spec:
replicas: 1
selector:
matchLabels:
app: mongodb
component: secondary
release: mongodb
template:
metadata:
creationTimestamp: null
labels:
app: mongodb
chart: mongodb-7.4.4
component: secondary
release: mongodb
annotations:
cattle.io/timestamp: '2021-07-19T14:05:28Z'
field.cattle.io/ports: >-
[[{"containerPort":27017,"dnsName":"mongodb-secondary","kind":"ClusterIP","name":"mongodb","protocol":"TCP"}]]
spec:
containers:
- name: mongodb-secondary
image: golem.ilntsur.loc:18080/bitnami/mongodb:4.0.13
ports:
- name: mongodb
containerPort: 27017
protocol: TCP
env:
- name: BITNAMI_DEBUG
value: 'true'
- name: MONGODB_ADVERTISED_HOSTNAME
value: >-
$(MONGODB_POD_NAME).mongodb-headless.mongodb-replicaset.svc.cluster.local
- name: MONGODB_DISABLE_SYSTEM_LOG
value: 'no'
- name: MONGODB_ENABLE_DIRECTORY_PER_DB
value: 'no'
- name: MONGODB_ENABLE_IPV6
value: 'no'
- name: MONGODB_PRIMARY_HOST
value: mongodb
- name: MONGODB_REPLICA_SET_MODE
value: secondary
- name: MONGODB_REPLICA_SET_NAME
value: mongodb-replicaset
- name: MONGODB_SYSTEM_LOG_VERBOSITY
value: '0'
- name: MONGODB_POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: MONGODB_PRIMARY_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mongodb
key: mongodb-root-password
- name: MONGODB_REPLICA_SET_KEY
valueFrom:
secretKeyRef:
name: mongodb
key: mongodb-replica-set-key
resources: {}
volumeMounts:
- name: datadir
mountPath: /bitnami/mongodb
livenessProbe:
exec:
command:
- pgrep
- mongod
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 6
readinessProbe:
exec:
command:
- mongo
- '--eval'
- db.adminCommand('ping')
initialDelaySeconds: 5
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 6
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
securityContext:
runAsUser: 1001
runAsNonRoot: true
procMount: Default
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
securityContext:
fsGroup: 1001
affinity: {}
schedulerName: default-scheduler
volumeClaimTemplates:
- kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: datadir
creationTimestamp: null
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
storageClassName: nfs-client
volumeMode: Filesystem
status:
phase: Pending
serviceName: mongodb-headless
podManagementPolicy: Parallel
updateStrategy:
type: RollingUpdate
rollingUpdate:
partition: 0
revisionHistoryLimit: 10