903 字
5 分钟
k8s部署wordpress
wordpress介绍
1.wordpress简介
WordPress 是一种使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的网志。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证下授权发布2.wordpress特点
- 免费、开源,建站成本低;
- WordPress 功能强大、扩展性强。插件众多,易于扩充功能,基本上一个完整网站该有的功能,通过第三方插件都能实现;
- WordPress搭建的网站对SEO搜索引擎友好,搜索引擎收录快,网站排名靠前;
- 备份和网站迁移方便,使用站内工具导出后,使用WordPress Importer插件就能方便地将内容导入新网站;
- 部署、使用、维护都很简单,方便管理;
- 有强大的社区支持,有上万的开发者贡献和审查wordpress,所以wordpress更新非常快,也比较安全
本次实践介绍
1.本次实践环境为个人测试学习环境,生产环境请谨慎使用;2.本次实践是在k8s环境中,部署wordpress服务;3.可以成功在在局域网内访问wordpres的web页面。环境规划
| hostname | IP地址 | 操作系统版本 | k8s版本 | 角色 |
|---|---|---|---|---|
| k8s-pixiu01 | 11.0.1.40 | centos7.9 | v1.24.12 | 管理节点 |
| k8s-pixiu02 | 11.0.1.41 | centos7.9 | v1.24.12 | 工作节点 |
| k8s-pixiu03 | 11.0.1.42 | centos7.9 | v1.24.12 | 工作节点 |
环境准备工作
1.检查k8s环境
# 检查k8s的各工作节点状态
NAME STATUS ROLES AGE VERSIONpixiu01 Ready control-plane 39d v1.24.12pixiu02 Ready <none> 39d v1.24.12pixiu03 Ready <none> 39d v1.24.122.检查系统pod状态
[root@pixiu01 docker]# kubectl get pods -n kube-systemNAME READY STATUS RESTARTS AGEcalico-kube-controllers-544df655bd-7cvnz 1/1 Running 1 (5d5h ago) 39dcalico-node-2md8v 1/1 Running 1 (5d5h ago) 39dcalico-node-ckq5r 1/1 Running 1 (5d5h ago) 39dcalico-node-vrwfl 1/1 Running 2 (5d5h ago) 39dcoredns-7f74c56694-lk84d 1/1 Running 1 (5d5h ago) 39dcoredns-7f74c56694-ptqx8 1/1 Running 1 (5d5h ago) 39dcsi-nfs-controller-64bc9c5656-858qh 3/3 Running 8 (4h16m ago) 39dcsi-nfs-node-9rt2l 3/3 Running 3 (5d5h ago) 39dcsi-nfs-node-jcnd5 3/3 Running 3 (5d5h ago) 39dcsi-nfs-node-xb2v8 3/3 Running 3 (5d5h ago) 39detcd-pixiu01 1/1 Running 1 (5d5h ago) 39dingress-nginx-admission-create-wvn2c 0/1 Completed 0 39dingress-nginx-admission-patch-j8wm5 0/1 Completed 2 39dingress-nginx-controller-6fcbc89bd5-h5cs9 1/1 Running 1 (5d5h ago) 39dkube-apiserver-pixiu01 1/1 Running 1 (5d5h ago) 39dkube-controller-manager-pixiu01 1/1 Running 1 (5d5h ago) 39dkube-proxy-4x82q 1/1 Running 1 (5d5h ago) 39dkube-proxy-8pw74 1/1 Running 1 (5d5h ago) 39dkube-proxy-r2sh5 1/1 Running 1 (5d5h ago) 39dkube-scheduler-pixiu01 1/1 Running 1 (5d5h ago) 39dmetrics-server-v0.5.2-654c5c646-68sqp 2/2 Running 2 (5d5h ago) 39d创建mysql的secret资源
创建ns
kubectl create ns wordpress创建Secret
apiVersion: v1kind: Secretmetadata: name: env-secret namespece: wordpresstype: Opaquedata: # 需要转为base64 字符串 # echo "root"|base64 mysql-root-password: "cm9vdA==" # root mysql-user: "d29yZHByZXNz" # wordpress mysql-password: "d29yZHByZXNz" #wordpress查看Secret
[root@pixiu01 docker]# kubectl get secrets -n wordpressNAME TYPE DATA AGEenv-secret Opaque 3 21s创建mysql 服务
apiVersion: apps/v1kind: Deploymentmetadata: namespace: wordpress name: wordpress-mysql labels: app: wordpress-mysqlspec: replicas: 1 selector: matchLabels: app: wordpress-mysql template: metadata: name: wordpress-mysql labels: app: wordpress-mysql spec: containers: - name: wordpress-mysql image: registry.cn-shenzhen.aliyuncs.com/jxqwe/base:mysql-5.7 imagePullPolicy: IfNotPresent ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: env-secret key: mysql-root-password - name: MYSQL_DATABASE value: "wordpress" - name: MYSQL_USER valueFrom: secretKeyRef: name: env-secret key: mysql-user - name: MYSQL_PASSWORD valueFrom: secretKeyRef: name: env-secret key: mysql-password restartPolicy: Always
---apiVersion: v1kind: Servicemetadata: name: wordpress-mysql-svc namespace: wordpressspec: selector: app: wordpress-mysql ports: - protocol: TCP port: 3306 targetPort: 3306 type: NodePort创建wordpress 服务
apiVersion: apps/v1kind: Deploymentmetadata: name: wordpress labels: app: wordpressspec: replicas: 1 selector: matchLabels: app: wordpress template: metadata: name: wordpress labels: app: wordpress spec: containers: - name: wordpress image: "registry.cn-shenzhen.aliyuncs.com/jxqwe/base:wordpress" imagePullPolicy: IfNotPresent ports: - containerPort: 80 env: - name: WORDPRESS_DB_HOST value: wordpress-mysql-svc - name: WORDPRESS_DB_NAME value: "wordpress" - name: WORDPRESS_DB_USER valueFrom: secretKeyRef: name: env-secret key: mysql-user - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: env-secret key: mysql-password restartPolicy: Always---apiVersion: v1kind: Servicemetadata: namespace: wordpress name: wordpress-svcspec: selector: app: wordpress ports: - protocol: TCP port: 80 targetPort: 80 type: NodePort效果展示
将这些yaml 先 apply
# 查看 pod状态[root@pixiu01 docker]# kubectl get pod -n wordpressNAME READY STATUS RESTARTS AGEwordpress-96c47fdbd-bppw8 1/1 Running 0 49swordpress-mysql-78bc7df7fd-5qzzz 1/1 Running 0 45s# 查看svc[root@pixiu01 docker]# kubectl get svc -n wordpressNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEwordpress-mysql-svc NodePort 10.254.172.26 <none> 3306:30761/TCP 68swordpress-svc NodePort 10.254.107.148 <none> 80:30433/TCP 70s# 用浏览器服务 11.0.1.40:30433