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