Kubernetes学习笔记九:MySQL和WordPress安装

MySQL安装yaml文件:定义了Service、Secret、StatefulSet,使用的存储是之前创建的NFS服务器。

apiVersion: v1
kind: Service
metadata:
  name: mysql-sts
  labels:
    app: mysql-sts
spec:
  ports:
    - port: 3306
  selector:
    app: mysql-sts
  clusterIP: None
---
apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  password: MTIzNDU2
  username: cm9vdA==
#user/pass=root/123456
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql-sts
spec:
  serviceName: "mysql-sts"
  replicas: 1
  volumeClaimTemplates:
  - metadata:
      name: mysql-local-storage
      annotations:
        volume.beta.kubernetes.io/storage-class: "nfs"
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 25Gi
  selector:
    matchLabels:
       app: mysql-sts
  template:
    metadata:
     labels:
       app: mysql-sts
    spec:
      nodeSelector:
        wordpress: mysql
      containers:
      - image: mysql:5.7.34
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysecret
              key: password
        #- name: SECRET_USERNAME
        #  valueFrom:
        #  secretKeyRef:
        #    name: mysecret
        #    key: username
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-local-storage
          readOnly: false
          mountPath: /var/lib/mysql
      initContainers:
      - name: init-wordpress-mysql
        image: busybox
        imagePullPolicy: IfNotPresent
        command: ['sh', '-c', 'rm -rf /data/*', 'until nslookup mysql-sts; do echo waiting for mysql-sts; sleep 2; done;']
        volumeMounts:
        - name: mysql-local-storage
          readOnly: false
          mountPath: /data

WordPress安装yaml文件:定义了PVC、Service、ConfigMap和Deployment,存储使用的是之前创建的NFS服务器。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-wp
spec:
  storageClassName: nfs
  accessModes:
  - ReadWriteMany
  resources:
     requests:
       storage: 12G
---
apiVersion: v1
kind: Service
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30180
  selector:
    app: wordpress
  type: NodePort
---
apiVersion: v1
data:
  db-host: mysql-sts
kind: ConfigMap
metadata:
  name: mycm
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      nodeSelector:
        wordpress: mysql
      containers:
        - image: wordpress:4.8-apache
          name: wordpress
          imagePullPolicy: IfNotPresent
          env:
            - name: WORDPRESS_DB_HOST
              valueFrom:
                configMapKeyRef:
                  name: mycm
                  key: db-host
            - name: WORDPRESS_DB_USER
              valueFrom:
                secretKeyRef:
                  name: mysecret
                  key: username
            - name: WORDPRESS_DB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysecret
                  key: password
          ports:
            - containerPort: 80
              name: wordpress
          resources:
            requests:
              cpu: 0.5
          volumeMounts:
            - name: wordpress-local-storage
              readOnly: false
              mountPath: /var/www/html
      volumes:
        - name: wordpress-local-storage
          persistentVolumeClaim:
            claimName: pvc-wp

注意这两个yaml文件都定义了nodeSelector,只会作用在带有wordpress=mysql标签的节点上。
在这里插入图片描述
wordpress显示无法连接Mysql。
在这里插入图片描述
参考:1130, “Host ‘xxxx’ is not allowed to connect to this MySQL server”

执行以下命令:
use mysql;
使用mysql数据库。

update user set host=‘%’ where user=‘root’;
修改用户root的访问主机。
在这里插入图片描述
select host,user from user;
查看用户的主机访问权限。

flush privileges;
使修改权限生效,非常关键,开始我没加这个导致不生效。
在这里插入图片描述
访问MySQL的主机IP加端口查看是否生效:
在这里插入图片描述
在yaml文件配置了root账户的密码,登录MySQL的时候发现使用该密码无法登录,可以直接使用mysql -uroot登录。然后修改root账户的权限:

参考:mysql如何修改root用户的密码

wordpress连接上mysql后,会自动创建一个wordpress数据库。
在这里插入图片描述
wordpress服务可以成功访问。
在这里插入图片描述
查看Volume挂载的路径
在这里插入图片描述
使用NodePort访问
在这里插入图片描述
在这里插入图片描述
wordpress安装好后会在wordpress数据库生成表。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值