WordPress 数据迁移到Kubernetes (k8s)并配置持久化及网站域名修改
演示环境:http://i4t.cn 会始终保证可访问状态
架构说明
海外Nginx主要是解决域名需要备案的问题,frp为了解决家里Kubernetes集群没有公网IP,应用无法访问的问题。
WordPress镜像已经将Nginx和PHP封装在一起了,所以pod最好是运行2个,防止一个php资源请求处理不过来的问题。相关的插件安装配置最好使用一个Centos镜像用于导入导出
本次相关服务版本
- Kubernetes 1.24
- WordPress 6.2
- Mysql 8
文中使用nfs作为默认sc存储引擎,之间的搭建说过太多次了,这里就是直接使用,不讲sc的创建和nfs的相关 配置
Mysql服务创建
我们先为WordPress创建一个ns命名空间
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> </span> <span>~]#</span> <span> kubectl create ns wordpress</span>
为mysql创建一个pvc存储
这里我已经有sc了,所以我直接创建pvc即可
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> cat mysql</span> <span>-</span> <span>pvc</span> <span>.</span> <span>yaml</span>
<span>apiVersion</span> <span>:</span> <span> v1</span>
<span>kind</span> <span>:</span> <span> </span> <span>PersistentVolumeClaim</span>
<span>metadata</span> <span>:</span>
<span> name</span> <span>:</span> <span> mysql</span> <span>-</span> <span>pvc</span>
<span> </span> <span>namespace</span> <span>:</span> <span> wordpress</span>
<span>spec</span> <span>:</span>
<span> accessModes</span> <span>:</span>
<span> </span> <span>-</span> <span> </span> <span>ReadWriteOnce</span>
<span> resources</span> <span>:</span>
<span> requests</span> <span>:</span>
<span> storage</span> <span>:</span> <span> </span> <span>50Gi</span>
<span> storageClassName</span> <span>:</span> <span> nfs</span> <span>-</span> <span>storage</span>
创建mysql-pvc
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> kubectl apply </span> <span>-</span> <span>f mysql</span> <span>-</span> <span>pvc</span> <span>.</span> <span>yaml</span>
<span>persistentvolumeclaim</span> <span>/</span> <span>mysql</span> <span>-</span> <span>pvc created</span>
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> kubectl </span> <span>get</span> <span> pvc </span> <span>-</span> <span>n wordpress</span> <span>|</span> <span>grep mysql</span> <span>-</span> <span>pvc</span>
<span>mysql</span> <span>-</span> <span>pvc </span> <span>Bound</span> <span> pvc</span> <span>-</span> <span>7812e224</span> <span>-</span> <span>b4fb</span> <span>-</span> <span>4a36</span> <span>-</span> <span>be2c</span> <span>-</span> <span>0fc36e161ddc</span> <span> </span> <span>50Gi</span> <span> RWO nfs</span> <span>-</span> <span>storage </span> <span>18s</span>
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span>
首先先创建mysql deployment服务
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> cat mysql</span> <span>-</span> <span>deployment</span> <span>.</span> <span>yaml</span>
<span>apiVersion</span> <span>:</span> <span> apps</span> <span>/</span> <span>v1</span>
<span>kind</span> <span>:</span> <span> </span> <span>Deployment</span>
<span>metadata</span> <span>:</span>
<span> name</span> <span>:</span> <span> mysql</span>
<span> </span> <span>namespace</span> <span>:</span> <span> wordpress</span>
<span> labels</span> <span>:</span>
<span> app</span> <span>:</span> <span> mysql</span>
<span>spec</span> <span>:</span>
<span> replicas</span> <span>:</span> <span> </span> <span>1</span>
<span> selector</span> <span>:</span>
<span> matchLabels</span> <span>:</span>
<span> app</span> <span>:</span> <span> mysql</span>
<span> </span> <span>template</span> <span>:</span>
<span> metadata</span> <span>:</span>
<span> labels</span> <span>:</span>
<span> app</span> <span>:</span> <span> mysql</span>
<span> spec</span> <span>:</span>
<span> containers</span> <span>:</span>
<span> </span> <span>-</span> <span> name</span> <span>:</span> <span> mysql</span>
<span> image</span> <span>:</span> <span> mysql</span> <span>:</span> <span>8.0</span>
<span> args</span> <span>:</span>
<span> </span> <span>-</span> <span> </span> <span>--</span> <span>default_authentication_plugin</span> <span>=</span> <span>mysql_native_password</span>
<span> </span> <span>-</span> <span> </span> <span>--</span> <span>character</span> <span>-</span> <span>set</span> <span>-</span> <span>server</span> <span>=</span> <span>utf8mb4</span>
<span> </span> <span>-</span> <span> </span> <span>--</span> <span>collation</span> <span>-</span> <span>server</span> <span>=</span> <span>utf8mb4_unicode_ci</span>
<span> env</span> <span>:</span>
<span> </span> <span>-</span> <span> name</span> <span>:</span> <span> MYSQL_ROOT_PASSWORD</span>
<span> value</span> <span>:</span> <span> MYSQL_ROOT_PASSWORD </span> <span>#mysql密码,自行修改</span>
<span> ports</span> <span>:</span>
<span> </span> <span>-</span> <span> containerPort</span> <span>:</span> <span> </span> <span>3306</span>
<span> volumeMounts</span> <span>:</span>
<span> </span> <span>-</span> <span> mountPath</span> <span>:</span> <span> </span> <span>"/var/lib/mysql"</span>
<span> name</span> <span>:</span> <span> mysql</span> <span>-</span> <span>data</span>
<span> livenessProbe</span> <span>:</span>
<span> </span> <span>exec</span> <span>:</span>
<span> command</span> <span>:</span>
<span> </span> <span>-</span> <span> sh</span>
<span> </span> <span>-</span> <span> </span> <span>'-c'</span>
<span> </span> <span>-</span> <span> </span> <span>'mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}'</span>
<span> volumes</span> <span>:</span>
<span> </span> <span>-</span> <span> name</span> <span>:</span> <span> mysql</span> <span>-</span> <span>data</span>
<span> persistentVolumeClaim</span> <span>:</span>
<span> claimName</span> <span>:</span> <span> mysql</span> <span>-</span> <span>pvc </span> <span>#创建mysql-pvc</span>
进入mysql容器,开启connection_control.so
插件
如果不开启,后面mysql日志会有大量警告日志
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> kubectl </span> <span>exec</span> <span> </span> <span>-</span> <span>it </span> <span>-</span> <span>n wordpress mysql</span> <span>-</span> <span>7fddbb85bb</span> <span>-</span> <span>xzcmf bash</span>
<span>kubectl </span> <span>exec</span> <span> </span> <span>[</span> <span>POD</span> <span>]</span> <span> </span> <span>[</span> <span>COMMAND</span> <span>]</span> <span> </span> <span>is</span> <span> DEPRECATED </span> <span>and</span> <span> will be removed </span> <span>in</span> <span> a future version</span> <span>.</span> <span> </span> <span>Use</span> <span> kubectl </span> <span>exec</span> <span> </span> <span>[</span> <span>POD</span> <span>]</span> <span> </span> <span>--</span> <span> </span> <span>[</span> <span>COMMAND</span> <span>]</span> <span> instead</span> <span>.</span>
<span>bash</span> <span>-</span> <span>4.4</span> <span># mysql -uroot -p</span>
<span>#下面执行sql语句</span>
<span>mysql</span> <span>></span> <span> INSTALL PLUGIN CONNECTION_CONTROL SONAME </span> <span>'connection_control.so'</span> <span>;</span>
<span>Query</span> <span> OK</span> <span>,</span> <span> </span> <span>0</span> <span> rows affected </span> <span>(</span> <span>0.00</span> <span> sec</span> <span>)</span>
<span>mysql</span> <span>></span> <span> INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME </span> <span>'connection_control.so'</span> <span>;</span>
<span>Query</span> <span> OK</span> <span>,</span> <span> </span> <span>0</span> <span> rows affected </span> <span>(</span> <span>0.00</span> <span> sec</span> <span>)</span>
mysql-svc yaml文件如下
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> cat mysql</span> <span>-</span> <span>svc</span> <span>.</span> <span>yaml</span>
<span>apiVersion</span> <span>:</span> <span> v1</span>
<span>kind</span> <span>:</span> <span> </span> <span>Service</span>
<span>metadata</span> <span>:</span>
<span> name</span> <span>:</span> <span> mysql</span>
<span> </span> <span>namespace</span> <span>:</span> <span> wordpress</span>
<span>spec</span> <span>:</span>
<span> selector</span> <span>:</span>
<span> app</span> <span>:</span> <span> mysql</span>
<span> ports</span> <span>:</span>
<span> </span> <span>-</span> <span> protocol</span> <span>:</span> <span> TCP</span>
<span> port</span> <span>:</span> <span> </span> <span>3306</span>
<span> targetPort</span> <span>:</span> <span> </span> <span>3306</span>
<span> nodePort</span> <span>:</span> <span> </span> <span>31306</span>
<span> type</span> <span>:</span> <span> </span> <span>NodePort</span>
创建mysql-svc
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> vim mysql</span> <span>-</span> <span>svc</span> <span>.</span> <span>yaml</span>
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> kubectl apply </span> <span>-</span> <span>f mysql</span> <span>-</span> <span>svc</span> <span>.</span> <span>yaml</span>
<span>service</span> <span>/</span> <span>mysql created</span>
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span>
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> kubectl </span> <span>get</span> <span> svc </span> <span>-</span> <span>n wordpress </span> <span>|</span> <span>grep mysql</span>
<span>mysql </span> <span>NodePort</span> <span> </span> <span>10.102</span> <span>.</span> <span>12.169</span> <span> </span> <span><none></span> <span> </span> <span>3306</span> <span>:</span> <span>31306</span> <span>/</span> <span>TCP </span> <span>6s</span>
创建WordPress服务
接下来运行WordPress容器
为WordPress创建一个pvc
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> cat wp</span> <span>-</span> <span>pvc</span> <span>.</span> <span>yaml</span>
<span>apiVersion</span> <span>:</span> <span> v1</span>
<span>kind</span> <span>:</span> <span> </span> <span>PersistentVolumeClaim</span>
<span>metadata</span> <span>:</span>
<span> name</span> <span>:</span> <span> wp</span> <span>-</span> <span>pvc</span>
<span> </span> <span>namespace</span> <span>:</span> <span> wordpress</span>
<span>spec</span> <span>:</span>
<span> accessModes</span> <span>:</span>
<span> </span> <span>-</span> <span> </span> <span>ReadWriteOnce</span>
<span> resources</span> <span>:</span>
<span> requests</span> <span>:</span>
<span> storage</span> <span>:</span> <span> </span> <span>50Gi</span>
<span> storageClassName</span> <span>:</span> <span> nfs</span> <span>-</span> <span>storage</span>
接下来我们要到数据库中,创建mysql 对应库和用户数据
<span>CREATE DATABASE abcdocker DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci</span> <span>;</span>
<span>create user </span> <span>'i4t'</span> <span>@</span> <span>'%'</span> <span> identified </span> <span>by</span> <span> </span> <span>'abcdocker'</span> <span>;</span>
<span>grant all privileges on </span> <span>*.*</span> <span> to </span> <span>'i4t'</span> <span>@</span> <span>'%'</span> <span>;</span>
<span>#这里可以根据需求自行创建</span>
<span>#我这里的数据库名称为abcdocker,用户为i4t</span>
因为wordpress是php文件,后面可能会调整php的配置,我们需要为wordpress-deplpoyment创建一个configmap,用于php参数的调整
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> cat wordpress</span> <span>-</span> <span>configmap</span> <span>.</span> <span>yaml</span>
<span>apiVersion</span> <span>:</span> <span> v1</span>
<span>kind</span> <span>:</span> <span> </span> <span>ConfigMap</span>
<span>metadata</span> <span>:</span>
<span> name</span> <span>:</span> <span> wordpress</span> <span>-</span> <span>configmap</span>
<span> </span> <span>namespace</span> <span>:</span> <span> wordpress</span>
<span>data</span> <span>:</span>
<span> uploads</span> <span>.</span> <span>ini</span> <span>:</span> <span> </span> <span>|</span>
<span> file_uploads </span> <span>=</span> <span> </span> <span>On</span>
<span> memory_limit </span> <span>128M</span>
<span> upload_max_filesize </span> <span>64M</span>
<span> post_max_size </span> <span>64M</span>
<span> max_execution_time </span> <span>300</span>
<span> max_input_time </span> <span>300</span>
<span> WORDPRESS_CONFIG_EXTRA</span> <span>:</span> <span> </span> <span>|</span>
<span> define</span> <span>(</span> <span>'WP_MEMORY_LIMIT'</span> <span>,</span> <span> </span> <span>'64M'</span> <span>);</span>
<span> </span> <span>@ini_set</span> <span>(</span> <span> </span> <span>'upload_max_size'</span> <span>,</span> <span> </span> <span>'64M'</span> <span> </span> <span>);</span>
<span> </span> <span>@ini_set</span> <span>(</span> <span> </span> <span>'post_max_size'</span> <span>,</span> <span> </span> <span>'64M'</span> <span>);</span>
<span> </span> <span>@ini_set</span> <span>(</span> <span> </span> <span>'max_execution_time'</span> <span>,</span> <span> </span> <span>'300'</span> <span> </span> <span>);</span>
WordPress-deployment文件如下
<span>apiVersion</span> <span>:</span> <span> apps</span> <span>/</span> <span>v1</span>
<span>kind</span> <span>:</span> <span> </span> <span>Deployment</span>
<span>metadata</span> <span>:</span>
<span> labels</span> <span>:</span>
<span> app</span> <span>:</span> <span> wordpress</span>
<span> name</span> <span>:</span> <span> wordpress</span> <span>-</span> <span>deployment</span>
<span> </span> <span>namespace</span> <span>:</span> <span> wordpress</span>
<span>spec</span> <span>:</span>
<span> replicas</span> <span>:</span> <span> </span> <span>1</span>
<span> selector</span> <span>:</span>
<span> matchLabels</span> <span>:</span>
<span> app</span> <span>:</span> <span> wordpress</span>
<span> </span> <span>template</span> <span>:</span>
<span> metadata</span> <span>:</span>
<span> annotations</span> <span>:</span>
<span> labels</span> <span>:</span>
<span> app</span> <span>:</span> <span> wordpress</span>
<span> spec</span> <span>:</span>
<span> containers</span> <span>:</span>
<span> </span> <span>-</span> <span> env</span> <span>:</span>
<span> </span> <span>-</span> <span> name</span> <span>:</span> <span> WORDPRESS_DB_HOST</span>
<span> value</span> <span>:</span> <span> mysql</span>
<span> </span> <span>-</span> <span> name</span> <span>:</span> <span> WORDPRESS_DB_NAME</span>
<span> value</span> <span>:</span> <span> i4t</span>
<span> </span> <span>-</span> <span> name</span> <span>:</span> <span> WORDPRESS_DB_USER</span>
<span> value</span> <span>:</span> <span> i4t</span>
<span> </span> <span>-</span> <span> name</span> <span>:</span> <span> WORDPRESS_DB_PASSWORD</span>
<span> value</span> <span>:</span> <span> </span> <span>MTZmYTU0Nz</span>
<span> image</span> <span>:</span> <span> wordpress</span> <span>:</span> <span>6.2</span> <span>-</span> <span>apache</span>
<span> imagePullPolicy</span> <span>:</span> <span> </span> <span>IfNotPresent</span>
<span> name</span> <span>:</span> <span> wordpress</span>
<span> ports</span> <span>:</span>
<span> </span> <span>-</span> <span> containerPort</span> <span>:</span> <span> </span> <span>80</span>
<span> name</span> <span>:</span> <span> wordpress</span>
<span> protocol</span> <span>:</span> <span> TCP</span>
<span> volumeMounts</span> <span>:</span>
<span> </span> <span>-</span> <span> mountPath</span> <span>:</span> <span> </span> <span>/var/</span> <span>www</span> <span>/</span> <span>html</span>
<span> name</span> <span>:</span> <span> wordpress</span> <span>-</span> <span>persistent</span> <span>-</span> <span>storage</span>
<span> </span> <span>-</span> <span> mountPath</span> <span>:</span> <span> </span> <span>/usr/</span> <span>local</span> <span>/</span> <span>etc</span> <span>/</span> <span>php</span> <span>/</span> <span>conf</span> <span>.</span> <span>d</span> <span>/</span> <span>uploads</span> <span>.</span> <span>ini</span>
<span> name</span> <span>:</span> <span> wordpress</span> <span>-</span> <span>configmap</span>
<span> subPath</span> <span>:</span> <span> uploads</span> <span>.</span> <span>ini</span>
<span> volumes</span> <span>:</span>
<span> </span> <span>-</span> <span> name</span> <span>:</span> <span> wordpress</span> <span>-</span> <span>persistent</span> <span>-</span> <span>storage</span>
<span> persistentVolumeClaim</span> <span>:</span>
<span> claimName</span> <span>:</span> <span> wp</span> <span>-</span> <span>pvc</span>
<span> </span> <span>-</span> <span> configMap</span> <span>:</span>
<span> defaultMode</span> <span>:</span> <span> </span> <span>420</span>
<span> name</span> <span>:</span> <span> wordpress</span> <span>-</span> <span>configmap</span>
<span> name</span> <span>:</span> <span> wordpress</span> <span>-</span> <span>configmap</span>
请自行修改数据库的DB配置文件,根据需求修改
<span>#相关变量,自行修改</span>
<span> </span> <span>-</span> <span> name</span> <span>:</span> <span> WORDPRESS_DB_HOST</span>
<span> value</span> <span>:</span> <span> mysql</span>
<span> </span> <span>-</span> <span> name</span> <span>:</span> <span> WORDPRESS_DB_NAME</span>
<span> value</span> <span>:</span> <span> i4t</span>
<span> </span> <span>-</span> <span> name</span> <span>:</span> <span> WORDPRESS_DB_USER</span>
<span> value</span> <span>:</span> <span> i4t</span>
<span> </span> <span>-</span> <span> name</span> <span>:</span> <span> WORDPRESS_DB_PASSWORD</span>
<span> value</span> <span>:</span> <span> </span> <span>MTZmYTU0Nz</span>
svc 文件如下
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> cat wordpress</span> <span>-</span> <span>svc</span> <span>.</span> <span>yaml</span>
<span>apiVersion</span> <span>:</span> <span> v1</span>
<span>kind</span> <span>:</span> <span> </span> <span>Service</span>
<span>metadata</span> <span>:</span>
<span> name</span> <span>:</span> <span> wordpress</span> <span>-</span> <span>svc</span>
<span> </span> <span>namespace</span> <span>:</span> <span> wordpress</span>
<span>spec</span> <span>:</span>
<span> selector</span> <span>:</span>
<span> app</span> <span>:</span> <span> wordpress</span>
<span> ports</span> <span>:</span>
<span> </span> <span>-</span> <span> protocol</span> <span>:</span> <span> TCP</span>
<span> port</span> <span>:</span> <span> </span> <span>80</span>
<span> targetPort</span> <span>:</span> <span> </span> <span>80</span>
<span> nodePort</span> <span>:</span> <span> </span> <span>31307</span>
<span> type</span> <span>:</span> <span> </span> <span>NodePort</span>
接下来我们检查所有的服务启动状态
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> kubectl </span> <span>get</span> <span> pod</span> <span>,</span> <span>svc </span> <span>-</span> <span>n wordpress</span>
<span>NAME READY STATUS RESTARTS AGE</span>
<span>pod</span> <span>/</span> <span>mysql</span> <span>-</span> <span>7fddbb85bb</span> <span>-</span> <span>xzcmf </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>46m</span>
<span>pod</span> <span>/</span> <span>wordpress</span> <span>-</span> <span>deployment</span> <span>-</span> <span>5665566b9b</span> <span>-</span> <span>cm82w </span> <span>1</span> <span>/</span> <span>1</span> <span> </span> <span>Running</span> <span> </span> <span>0</span> <span> </span> <span>4m42s</span>
<span>NAME TYPE CLUSTER</span> <span>-</span> <span>IP EXTERNAL</span> <span>-</span> <span>IP PORT</span> <span>(</span> <span>S</span> <span>)</span> <span> AGE</span>
<span>service</span> <span>/</span> <span>mysql </span> <span>NodePort</span> <span> </span> <span>10.102</span> <span>.</span> <span>12.169</span> <span> </span> <span><none></span> <span> </span> <span>3306</span> <span>:</span> <span>31306</span> <span>/</span> <span>TCP </span> <span>19m</span>
<span>service</span> <span>/</span> <span>wordpress</span> <span>-</span> <span>svc </span> <span>NodePort</span> <span> </span> <span>10.98</span> <span>.</span> <span>207.64</span> <span> </span> <span><none></span> <span> </span> <span>80</span> <span>:</span> <span>31307</span> <span>/</span> <span>TCP </span> <span>68s</span>
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span>
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span>
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> curl </span> <span>10.98</span> <span>.</span> <span>207.64</span> <span> </span> <span>-</span> <span>I</span>
<span>HTTP</span> <span>/</span> <span>1.1</span> <span> </span> <span>302</span> <span> </span> <span>Found</span>
<span>Date</span> <span>:</span> <span> </span> <span>Wed</span> <span>,</span> <span> </span> <span>09</span> <span> </span> <span>Aug</span> <span> </span> <span>2023</span> <span> </span> <span>08</span> <span>:</span> <span>00</span> <span>:</span> <span>13</span> <span> GMT</span>
<span>Server</span> <span>:</span> <span> </span> <span>Apache</span> <span>/</span> <span>2.4</span> <span>.</span> <span>56</span> <span> </span> <span>(</span> <span>Debian</span> <span>)</span>
<span>X</span> <span>-</span> <span>Powered</span> <span>-</span> <span>By</span> <span>:</span> <span> PHP</span> <span>/</span> <span>8.0</span> <span>.</span> <span>29</span>
<span>Expires</span> <span>:</span> <span> </span> <span>Wed</span> <span>,</span> <span> </span> <span>11</span> <span> </span> <span>Jan</span> <span> </span> <span>1984</span> <span> </span> <span>05</span> <span>:</span> <span>00</span> <span>:</span> <span>00</span> <span> GMT</span>
<span>Cache</span> <span>-</span> <span>Control</span> <span>:</span> <span> </span> <span>no</span> <span>-</span> <span>cache</span> <span>,</span> <span> must</span> <span>-</span> <span>revalidate</span> <span>,</span> <span> max</span> <span>-</span> <span>age</span> <span>=</span> <span>0</span>
<span>X</span> <span>-</span> <span>Redirect</span> <span>-</span> <span>By</span> <span>:</span> <span> </span> <span>WordPress</span>
<span>Location</span> <span>:</span> <span> http</span> <span>:</span> <span>//10.98.207.64/wp-admin/install.php</span>
<span>Content</span> <span>-</span> <span>Type</span> <span>:</span> <span> text</span> <span>/</span> <span>html</span> <span>;</span> <span> charset</span> <span>=</span> <span>UTF</span> <span>-</span> <span>8</span>
使用nodeport访问测试
我这里直接访问nodeport ip:端口测试
启动Centos容器
因为默认的WordPress容器没有vim,我们的站点目录都是挂载进去的。如果后期修改php文件比较麻烦,所以我们安装一个Centos client挂载wp-pvc,后续可以直接在Centos容器修改
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> wordpress</span> <span>]#</span> <span> cat centos</span> <span>.</span> <span>yaml</span>
<span>apiVersion</span> <span>:</span> <span> apps</span> <span>/</span> <span>v1</span>
<span>kind</span> <span>:</span> <span> </span> <span>Deployment</span>
<span>metadata</span> <span>:</span>
<span> labels</span> <span>:</span>
<span> app</span> <span>:</span> <span> centos</span>
<span> name</span> <span>:</span> <span> centos</span> <span>-</span> <span>client</span>
<span> </span> <span>namespace</span> <span>:</span> <span> wordpress</span>
<span>spec</span> <span>:</span>
<span> replicas</span> <span>:</span> <span> </span> <span>1</span>
<span> selector</span> <span>:</span>
<span> matchLabels</span> <span>:</span>
<span> app</span> <span>:</span> <span> centos</span>
<span> </span> <span>template</span> <span>:</span>
<span> metadata</span> <span>:</span>
<span> labels</span> <span>:</span>
<span> app</span> <span>:</span> <span> centos</span>
<span> spec</span> <span>:</span>
<span> containers</span> <span>:</span>
<span> </span> <span>-</span> <span> args</span> <span>:</span>
<span> </span> <span>-</span> <span> </span> <span>while</span> <span> </span> <span>true</span> <span>;</span> <span> </span> <span>do</span> <span> sleep </span> <span>30</span> <span>;</span> <span> </span> <span>done</span> <span>;</span>
<span> command</span> <span>:</span>
<span> </span> <span>-</span> <span> </span> <span>/bin/</span> <span>bash</span>
<span> </span> <span>-</span> <span> </span> <span>'-c'</span>
<span> </span> <span>-</span> <span> </span> <span>'--'</span>
<span> image</span> <span>:</span> <span> centos</span> <span>:</span> <span>centos7</span> <span>.</span> <span>9.2009</span>
<span> imagePullPolicy</span> <span>:</span> <span> </span> <span>IfNotPresent</span>
<span> name</span> <span>:</span> <span> centos</span>
<span> securityContext</span> <span>:</span>
<span> privileged</span> <span>:</span> <span> </span> <span>true</span>
<span> volumeMounts</span> <span>:</span>
<span> </span> <span>-</span> <span> mountPath</span> <span>:</span> <span> </span> <span>/</span> <span>data</span>
<span> name</span> <span>:</span> <span> wordpress</span> <span>-</span> <span>persistent</span> <span>-</span> <span>storage</span>
<span> volumes</span> <span>:</span>
<span> </span> <span>-</span> <span> name</span> <span>:</span> <span> wordpress</span> <span>-</span> <span>persistent</span> <span>-</span> <span>storage</span>
<span> persistentVolumeClaim</span> <span>:</span>
<span> claimName</span> <span>:</span> <span> wp</span> <span>-</span> <span>pvc</span>
迁移Mysql
我们从原来的服务器备份好Mysql数据,然后到新的服务器中导入进去
导入前可以drop database [业务库],把之前WordPress数据删除掉
<span>#k8s节点安装mysql命令</span>
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> tmp</span> <span>]#</span> <span> yum install </span> <span>-</span> <span>y mysql</span>
<span>#找到sql文件</span>
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> tmp</span> <span>]#</span> <span> ls</span>
<span>i4t_20230809_163531</span> <span>.</span> <span>sql systemd</span> <span>-</span> <span>private</span> <span>-</span> <span>ecb644fe53cf473385f7a9ba14bea147</span> <span>-</span> <span>chronyd</span> <span>.</span> <span>service</span> <span>-</span> <span>ylF0Of test</span> <span>.</span> <span>sh vmware</span> <span>-</span> <span>root_733</span> <span>-</span> <span>4248680474</span>
<span>#查看mysql svc ip</span>
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> tmp</span> <span>]#</span> <span> kubectl </span> <span>get</span> <span> svc </span> <span>-</span> <span>n wordpress</span>
<span>NAME TYPE CLUSTER</span> <span>-</span> <span>IP EXTERNAL</span> <span>-</span> <span>IP PORT</span> <span>(</span> <span>S</span> <span>)</span> <span> AGE</span>
<span>mysql </span> <span>NodePort</span> <span> </span> <span>10.102</span> <span>.</span> <span>12.169</span> <span> </span> <span><none></span> <span> </span> <span>3306</span> <span>:</span> <span>31306</span> <span>/</span> <span>TCP </span> <span>129m</span>
<span>wordpress</span> <span>-</span> <span>svc </span> <span>NodePort</span> <span> </span> <span>10.98</span> <span>.</span> <span>207.64</span> <span> </span> <span><none></span> <span> </span> <span>80</span> <span>:</span> <span>31307</span> <span>/</span> <span>TCP </span> <span>111m</span>
<span>#登陆到mysql中</span>
<span>[</span> <span>root@k8s</span> <span>-</span> <span>01</span> <span> tmp</span> <span>]#</span> <span> mysql </span> <span>-</span> <span>uroot </span> <span>-</span> <span>p </span> <span>-</span> <span>h </span> <span>10.102</span> <span>.</span> <span>12.169</span> <span> </span> <span>-</span> <span>P3306</span>
<span>Enter</span> <span> password</span> <span>:</span>
<span>Welcome</span> <span> to the </span> <span>MariaDB</span> <span> monitor</span> <span>.</span> <span> </span> <span>Commands</span> <span> </span> <span>end</span> <span> </span> <span>with</span> <span> </span> <span>;</span> <span> </span> <span>or</span> <span> g</span> <span>.</span>
<span>Your</span> <span> </span> <span>MySQL</span> <span> connection id </span> <span>is</span> <span> </span> <span>1044</span>
<span>Server</span> <span> version</span> <span>:</span> <span> </span> <span>8.0</span> <span>.</span> <span>34</span> <span> </span> <span>MySQL</span> <span> </span> <span>Community</span> <span> </span> <span>Server</span> <span> </span> <span>-</span> <span> GPL</span>
<span>Copyright</span> <span> </span> <span>(</span> <span>c</span> <span>)</span> <span> </span> <span>2000</span> <span>,</span> <span> </span> <span>2018</span> <span>,</span> <span> </span> <span>Oracle</span> <span>,</span> <span> </span> <span>MariaDB</span> <span> </span> <span>Corporation</span> <span> </span> <span>Ab</span> <span> </span> <span>and</span> <span> others</span> <span>.</span>
<span>Type</span> <span> </span> <span>'help;'</span> <span> </span> <span>or</span> <span> </span> <span>'h'</span> <span> </span> <span>for</span> <span> help</span> <span>.</span> <span> </span> <span>Type</span> <span> </span> <span>'c'</span> <span> to clear the current input statement</span> <span>.</span>
<span>MySQL</span> <span> </span> <span>[(</span> <span>none</span> <span>)]></span> <span> </span> <span>use</span> <span> i4t</span> <span>;</span>
<span>Database</span> <span> changed</span>
<span>MySQL</span> <span> </span> <span>[</span> <span>i4t</span> <span>]></span> <span> show tables</span> <span>;</span>
<span>Empty</span> <span> </span> <span>set</span> <span> </span> <span>(</span> <span>0.00</span> <span> sec</span> <span>)</span>
<span>#写入数据</span>
<span>MySQL</span> <span> </span> <span>[</span> <span>i4t</span> <span>]></span> <span> source </span> <span>/</span> <span>tmp</span> <span>/</span> <span>i4t_20230809_163531</span> <span>.</span> <span>sql</span> <span>;</span>
写入完毕后
<span>MySQL</span> <span> </span> <span>[</span> <span>i4t</span> <span>]></span> <span> show tables</span> <span>;</span>
<span> </span> <span>...</span>
<span>|</span> <span> abc1_watu_master </span> <span>|</span>
<span>|</span> <span> abc1_watu_question </span> <span>|</span>
<span>|</span> <span> abc1_watu_takings </span> <span>|</span>
<span>|</span> <span> abc1_wpmailsmtp_debug_events </span> <span>|</span>
<span>|</span> <span> abc1_wpmailsmtp_tasks_meta </span> <span>|</span>
<span>|</span> <span> abc1_yarpp_related_cache </span> <span>|</span>
<span>|</span> <span> abc1_zrz_card </span> <span>|</span>
<span>|</span> <span> abc1_zrz_directmessage </span> <span>|</span>
<span>|</span> <span> abc1_zrz_invitation </span> <span>|</span>
<span>|</span> <span> abc1_zrz_message </span> <span>|</span>
<span>|</span> <span> abc1_zrz_order </span> <span>|</span>
<span>+-----------------------------+</span>
<span>49</span> <span> rows </span> <span>in</span> <span> </span> <span>set</span> <span> </span> <span>(</span> <span>0.00</span> <span> sec</span> <span>)</span>
修改域名,需要及时修改域名,否则系统会跳转为正式环境
- 旧域名https://i4t.com
- 新域名http://i4t.cn
<span>UPDATE wp_options SET option_value </span> <span>=</span> <span> replace</span> <span>(</span> <span>option_value</span> <span>,</span> <span> </span> <span>'https://i4t.com'</span> <span>,</span> <span> </span> <span>'http://i4t.cn'</span> <span>)</span> <span> WHERE option_name </span> <span>=</span> <span> </span> <span>'home'</span> <span> OR option_name </span> <span>=</span> <span> </span> <span>'siteurl'</span> <span>;</span>
<span>UPDATE wp_posts SET guid </span> <span>=</span> <span> replace</span> <span>(</span> <span>guid</span> <span>,</span> <span> </span> <span>'https://i4t.com'</span> <span>,</span> <span>'http:// .newurl'</span> <span>);</span>
<span>UPDATE wp_posts SET post_content </span> <span>=</span> <span> replace</span> <span>(</span> <span>post_content</span> <span>,</span> <span> </span> <span>'https://i4t.com'</span> <span>,</span> <span> </span> <span>'http://i4t.cn'</span> <span>);</span>
<span>UPDATE wp_postmeta SET meta_value </span> <span>=</span> <span> replace</span> <span>(</span> <span>meta_value</span> <span>,</span> <span>'https://i4t.com'</span> <span>,</span> <span>'http://i4t.cn'</span> <span>);</span>
<span>UPDATE wp_usermeta SET meta_value </span> <span>=</span> <span> replace</span> <span>(</span> <span>meta_value</span> <span>,</span> <span> </span> <span>'https://i4t.com'</span> <span>,</span> <span> </span> <span>'http://i4t.cn'</span> <span>);</span>
<span>UPDATE wp_comments SET comment_content </span> <span>=</span> <span> REPLACE </span> <span>(</span> <span>comment_content</span> <span>,</span> <span> </span> <span>'https://i4t.com'</span> <span>,</span> <span> </span> <span>'http://i4t.cn'</span> <span>);</span>
<span>UPDATE wp_comments SET comment_author_url </span> <span>=</span> <span> REPLACE </span> <span>(</span> <span>comment_author_url</span> <span>,</span> <span> </span> <span>'https://i4t.com'</span> <span>,</span> <span>'http://i4t.cn'</span> <span>);</span>
迁移主题及静态文件
主题静态文件、插件、附件实际上都在我们wp-content
目录下,直接将这个目录打包,然后替换到容器上就可以了。
<span>#拷贝名称为web_i4t.com_20230809_013207.tar.gz 附件</span>
<span>kubectl cp web_i4t</span> <span>.</span> <span>com_20230809_013207</span> <span>.</span> <span>tar</span> <span>.</span> <span>gz </span> <span>-</span> <span>n wordpress centos</span> <span>-</span> <span>client</span> <span>-</span> <span>75f686d587</span> <span>-</span> <span>lv2b2</span> <span>:</span> <span>/data/</span>
<span>kubectl </span> <span>exec</span> <span> </span> <span>-</span> <span>it </span> <span>-</span> <span>n wordpress centos</span> <span>-</span> <span>client</span> <span>-</span> <span>75f686d587</span> <span>-</span> <span>lv2b2 bash</span>
最终迁移访问效果图