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

此部署包括使用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-deploy# 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

如有问题请联系

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章