k8s部署mariadb,secret+nfs+pv+pvc

2022-08-18 修改第六步
mariadb-service-deployment.yaml中的Service.spec.selector.app的值,此值应该是Deployment.spec.template.metadata.labels.app的值,表示Service会自动发现与选择器(selector)匹配的pod

此部署包括使用Secrets作为密码加密,使用nfs作为数据持久化,

如果不想使用Secrets作为密码加密,也可以使用其他方式或者直接明文

如果不想使用nfs作为持久化,可以使用其他持久化方式或者不进行数据持久化

部署步骤

1.对明文密码使用base64加密(不使用Secret可以跳过)

# 明文密码为 my-mariadb-pw$ echo -n my-mariadb-pw | base64# 返回结果,密文密码bXktbWFyaWFkYi1wdw==

2.编写mariadb-secret.yaml(不使用Secret可以跳过)

apiVersion: v1data:  # 密文密码,key可以随意写,建议和环境变量写一致   MARIADB_ROOT_PASSWORD: bXktbWFyaWFkYi1wdw==kind: Secretmetadata:   name: mariadb-secret # 命名空间,没有可以不写   namespace: hello-world

3.配置nfs共享目录,为了持久化数据(不持久化数据可以跳过)

# 安装nfs$ yum install -y nfs-utils# 开启服务$ systemctl start rpcbind $ systemctl start nfs# 配置共享目录,这里共享/opt/volumn/mariadb/vim /etc/exports# 添加一下内容/opt/volumn/mariadb/ *(rw,no_root_squash,insecure)# 使配置生效$ exportfs -av# 查看共享目录$ showmount -e

4.编写mariadb-pv.yaml(不持久化数据可以跳过)

apiVersion: v1kind: PersistentVolumemetadata:   name: mariadb-pv   namespace: hello-worldspec:   capacity:     storage: 2G   accessModes:     - ReadWriteMany   nfs:   # server是nfs服务器,path是共享的目录     server: 120.xxx.xxx.xxx     path: "/opt/volumn/mariadb/"

5.编写mariadb-pvc.yaml(不持久化数据可以跳过)

apiVersion: v1kind: PersistentVolumeClaimmetadata:   name: mariadb-pvc   namespace: hello-worldspec:  # 和pv保持一致   accessModes:     - ReadWriteMany   storageClassName: ""   resources:     requests:   # 和pv保持一致       storage: 2G # pv的名字   volumeName: mariadb-pv

6.编写
mariadb-service-deployment.yaml

apiVersion: v1kind: Servicemetadata:   labels:     app: mariadb-service   name: mariabd-service # 命名空间,没有可以不写   namespace: hello-worldspec:   ports: # nodePort是对外暴露的端口   - nodePort: 30011     port: 3306     protocol: TCP     targetPort: 3306   selector:     app: mariadb-pod # NodePort类型可以对外暴露端口   type: NodePort---apiVersion: apps/v1kind: Deploymentmetadata:   labels:     app: mariadb-deploy   name: mariadb-deploy   namespace: hello-worldspec:   replicas: 1   selector:     matchLabels:       app: mariadb-pod   template:     metadata:       labels:         app: mariadb-pod       namespace: hello-world     spec:       containers: # 镜像名       - image: mariadb:10.8.3         name: mariadb         env: # 密码,配置为Secret的         - name: MARIADB_ROOT_PASSWORD           valueFrom:             secretKeyRef:               name: mariadb-secret               key: MARIADB_ROOT_PASSWORD # 密码,明文的 -- 不建议 # - name: MARIADB_ROOT_PASSWORD #   value: my-mariadb-pw         ports:         - containerPort: 3306         resources: {}         volumeMounts: # 挂载,容器中的目录         - name: mariadb-data           mountPath: "/var/lib/mysql/"           readOnly: false       volumes: # 挂载,pvc       - name: mariadb-data         persistentVolumeClaim:   # pvc名称           claimName: mariadb-pvc           readOnly: false

7.执行yaml

# 不使用Secret不用执行$ kubectl apply -f mariadb-secret.yaml# 不持久化数据不用执行$ kubectl apply -f mariadb-pv.yaml# 不持久化数据不用执行$ kubectl apply -f mariadb-pvc.yaml# 此项必须执行$ kubectl apply -f mariadb-service-deployment.yaml

8.连接数据库nodeIp+nodePort进行访问,用户为root,密码为my-mariadb-pw

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片