---
#创建k8s集群权限开始
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: mongo-read
namespace: zhaohao-test
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: mongodb-read
namespace: zhaohao-test
subjects:
- kind: ServiceAccount
name: default
namespace: zhaohao-test
roleRef:
kind: Role
name: mongodb-read
apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: mongo-view
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: view
subjects:
- kind: ServiceAccount
#命名为default权限
name: default
namespace: zhaohao-test
#创建k8s集群权限结束
---
apiVersion: v1
kind: Service
metadata:
name: mongo
namespace: zhaohao-test
labels:
name: mongo
spec:
#创建的是headless无头服务
clusterIP: None
ports:
- port: 32017
name: mongo
selector:
role: mongo
#采用nodeport暴露的方式则打开以下注释行 32017 --> 27017
# clusterIP: None
# selector:
# role: mongo
# clusterIP:
# externalTrafficPolicy: Cluster
# ports:
# - nodePort: 32017
# protocol: TCP
# port: 32017
# targetPort: 27017
# sessionAffinity: None
# type: NodePort
## clusterIP: None
# selector:
# role: mongo
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongo
namespace: zhaohao-test
spec:
selector:
matchLabels:
role: mongo
serviceName: "mongo"
replicas: 3
template:
metadata:
labels:
role: mongo
environment: test
spec:
terminationGracePeriodSeconds: 10
containers:
- name: mongo
#image: mongo:3.4
image: mongo:4.2
imagePullPolicy: IfNotPresent
command:
- mongod
- "--replSet"
- zhaohao-mongo-test
- "--bind_ip"
- 0.0.0.0
#- "--smallfiles"
#- "--noprealloc"
ports:
- containerPort: 27017
volumeMounts:
- name: data
mountPath: /data/db
#使用k8s官方推荐的mongo集群自动配置工具sidecar
- name: mongo-sidecar
image: cvallance/mongo-k8s-sidecar
imagePullPolicy: IfNotPresent
env:
- name: MONGO_SIDECAR_POD_LABELS
value: "role=mongo,environment=test"
- name: KUBE_NAMESPACE
value: "zhaohao-test"
- name: KUBERNETES_MONGO_SERVICE_NAME
value: "mongo"
volumeClaimTemplates:
- metadata:
name: data
annotations:
#指定sc
volume.beta.kubernetes.io/storage-class: "nfs-zhaohao"
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。