您现在的位置是:首页 > cms教程 > WordPress教程WordPress教程

Kubernetes搭建wordpress的方法实例

梦松2025-02-18WordPress教程已有人查阅

导读创建数据库[root@k8s-master wordpress]# cat wordpress-database.yaml说明:使用Deployment控制器创建pod资源,使用mysql:5. 镜像。并且传入了MYSQL_DATABASE、MYSQL_USER及MYSQL_PASSWORD三个变量。

创建数据库[root@k8s-master wordpress]# cat wordpress-database.yaml
apiVersion: v1
kind: Service
metadata:
name: wpdb
labels:
app: wpdb
spec:
type: ClusterIP
selector:
app: wpdb
ports:
- protocol: TCP
port: 3306
targetPort: 3306
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wpdb
labels:
app: wpdb
spec:
replicas: 1
selector:
matchLabels:
app: wpdb
template:
metadata:
labels:
app: wpdb
spec:
containers:
- image: mysql:5.
imagePullPolicy: IfNotPresent
name: wpdb
env:
- name: MYSQL_DATABASE
value: wpdb
- name: MYSQL_USER
value: wpuser
- name: MYSQL_PASSWORD
value: poipoi@098
说明:使用Deployment控制器创建pod资源,使用mysql:5. 镜像。并且传入了MYSQL_DATABASE、MYSQL_USER及MYSQL_PASSWORD三个变量。创建Service对象,将容器内的3306映射到ClusterIP的3306端口以供wordpress主程序访问。创建wordpress[root@k8s-master wordpress]# cat wordpress.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: wordpress
name: wordpress
spec:
selector:
app: wordpress
type: ClusterIP
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
labels:
app: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- image: wordpress:5-php7.2
name: wordpress
env:
- name: WORDPRESS_DB_NAME
value: wpdb
- name: WORDPRESS_DB_USER
value: wpuser
- name: WORDPRESS_DB_PASSWORD
value: poipoi@098
- name: WORDPRESS_DB_HOST
value: wpdb.default.svc.cluster.local
说明:依然采用Deployment控制器创建pod资源类型,使用wordpress:5-php7.2作为基础镜像。将连接数据库的变量传入pod内。需要注意的是wpdb.default.svc.cluster.local为长格式域名,由于创建wordpress及数据库时未指明namespace,所以两个pod均在默认的namespace下创建,这里的域名可以直接用wpdb短格式域名格式访问。
查看上述资源是否创建成功
[root@k8s-master wordpress]# kubectl get pods
NAME READY STATUS RESTARTS AGE
wordpress-cd68468cb-x8sx6 1/1 Running 0 116m
wpdb-9c65c8bdc-chm6s 1/1 Running 0 127m
[root@k8s-master wordpress]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress ClusterIP 10.110.1.27 <none> 80/TCP 126m
wpdb ClusterIP 10.102.111.102 <none> 3306/TCP 127m
这部分结束,那么wordpress就已经创建完成了,可以在服务器上直接curl+ClusterIP:[port]进行访问了。[root@k8s-master wordpress]# curl 10.110.1.27:80
<!DOCTYPE html>
<html class="no-js" lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" >
<link rel="profile" href="">
<title>雷探长博客 - Just another WordPress site</title>
<link rel='dns-prefetch' href='// .test.com' />
<link rel='dns-prefetch' href='//s.w.org' />
创建Ingress Controller及默认的backend服务上面创建的wordpress还只能在服务器内部访问,要想让外部用户访问必须创建ingress实现HTTP7层路由。使用Ingress创建负载分发时,ingress controller会基于ingress规则将客户端的请求直接转发到Service,跳过了kube-proxy组件的转发功能。
在定义ingress策略前,需要首先需要创建ingress controller及默认的backend服务。Ingress Controller为后端Service都提供了一个统一的入口。同时为了顺利启动Ingress Controller还需要配置默认的backend,用于客户端请求不存在的地址时,返回404应答。创建backend服务[root@k8s-master wordpress]# cat default-http-backend.yaml
apiVersion: v1
kind: Service
metadata:
name: default-http-backend
namespace: kube-system
labels:
k8s-app: default-http-backend
spec:
ports:
- port: 80
targetPort: 8080
selector:
k8s-app: default-http-backend
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: default-http-backend
labels:
k8s-app: default-http-backend
namespace: kube-system
spec:
selector:
matchLabels:
k8s-app: default-http-backend
replicas: 1
template:
metadata:
labels:
k8s-app: default-http-backend
spec:
containers:
- name: default-http-backend
image: registry.aliyuncs.com/google_containers/defaultbackend:1.0
livenessProbe:
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 30
timeoutSeconds: 5
ports:
- containerPort: 8080
resources:
limits:
cpu: 10m
memory: 20Mi
requests:
cpu: 10m
memory: 20Mi
创建Ingress Controller[root@k8s-master wordpress]# cat ingress-daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-ingress-lb
labels:
name: nginx-ingress-lb
namespace: kube-system
spec:
selector:
matchLabels:
name: nginx-ingress-lb
template:
metadata:
labels:
name: nginx-ingress-lb
spec:
containers:
- image: registry.aliyuncs.com/google_containers/nginx-ingress-controller:0.9.0-beta.2
name: nginx-ingress-lb
readinessProbe:
httpGet:
path: /healthz
port: 10254
scheme: HTTP
livenessProbe:
httpGet:
path: /healthz
port: 10254
scheme: HTTP
initialDelaySeconds: 10
timeoutSeconds: 1
ports:
- containerPort: 80
hostPort: 80
- containerPort: 443
hostPort: 443
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
args:
- /nginx-ingress-controller
- --default-backend-service=$(POD_NAMESPACE)/default-http-backend
说明:这里为Nginx容器设置了hostPort,将容器的80和443分别映射到宿主机的80和443端口,这样客户端就可以通过访问http://物理机:80或https://物理机:443来访问该Ingress Controller。
使用kubectl apply命令创建上述资源并查看是否正确运行[root@k8s-master wordpress]# kubectl apply -f default-http-backend.yaml
deployment.apps/default-http-backend created
service/default-http-backend created
[root@k8s-master wordpress]# kubectl apply -f ingress-daemonset.yaml
daemonset.apps/nginx-ingress-lb created
注意:创建上述资源时指定了名称空间,查看容器时需要带上-n kube-system参数[root@k8s-master wordpress]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
...
default-http-backend-797b95869d-4bl4k 1/1 Running 0 164m
nginx-ingress-lb-kcfws 1/1 Running 0 163m
...
这里的backend服务采用了Deployment构建,并且声明了数量为1。Ingress Controller采用了DaemonSet构建,每个工作节点运行一个pod,我这里的环境是1+1,所以是1个pod。
部署完Ingress Controller及backend服务后,就可以访问任一工作节点的80端口访问,得到404说明部署成功。[root@k8s-master wordpress]# curl k8s-node
default backend - 404
定义Ingress策略
这里使用 .test.com来设置Ingress策略,定义对/的访问请求转发到后端的wordpress的规则。[root@k8s-master wordpress]# cat ingress-wordpress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: wordpress-ingress
spec:
rules:
- host:.test.com
http:
paths:
- path: /
backend:
serviceName: wordpress
servicePort: 80
这里的ServiceName和ServicePort是之前创建的wordpress service对象的参数。
需要注意的是这里的80端口和Service对象的80一样是虚拟的,本机并不会监听80端口。[root@k8s-master wordpress]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
...
wordpress ClusterIP 10.110.1.27 <none> 80/TCP 171m
...
创建ingress策略[root@k8s-master wordpress]# kubectl apply -f ingress-wordpress.yaml
ingress.extensions/wordpress-ingress configured
到这里创建wordpress就结束了,要访问wordpress需要在你的电脑的host文件上做域名ip关联。将 .test.com关联到任一工作节点的ip,使用浏览器访问 .test.com即可。C:\Windows\System32\drivers\etc>more hosts
192.168.0.107.test.com
安装完成

本文标签:

很赞哦! ()

相关源码

  • (响应式)wordpress模板VieuV4.5主题资讯自媒体博客源码Vieu主题专注于个人博客与企业展示场景,采用响应式设计确保在手机、电脑、平板等多设备上的展示。主题集成会员中心、投稿系统、内容保护等实用功能,满足现代博客网站的建设需求。查看源码
  • 帝国cms7.5女性护肤搭配美妆潮流网站源码带数据4.5G本模板专为女性美容护肤行业设计,提供美容护肤、发型设计、女性健康、时尚化妆、娱乐新闻、服饰搭配等女性潮流资讯内容展示。采用帝国CMS7.5开发,同步生成电脑端和手机端,满足用户对美容时尚信息的获取需求。查看源码
  • (自适应响应式)英文外贸电子产品手机配件网站pbootcms模板专业级外贸网站模板基于PbootCMS内核开发,为电子产品跨境贸易企业设计。采用响应式布局技术,确保电脑、平板、手机等设备访问时自动适配显示效果。数据实时同步管理,一次编辑全平台生效。查看源码
  • (自适应)蓝色五金制品配件管件pbootcms网站源码下载基于PbootCMS内核开发的五金行业专用模板,采用响应式设计架构,确保产品展示在各类移动设备上的呈现。通过模块化布局与工业风视觉设计,帮助五金企业高效展示产品规格、应用场景及技术支持,建立专业可靠的行业形象。查看源码
  • (自适应响应式)HTML5中小学早教教育机构类网站pbootcms模板下载基于PbootCMS内核开发的响应式模板,为早教中心、培训学校等教育机构打造,提供从技术架构到视觉呈现的全套网站建设方案。查看源码
  • (PC+WAP)化工材料企业环保能源绿色营销型pbootcms模板源码下载本模板为化工材料及环保能源企业设计,采用PbootCMS开发,可展示各类化工产品、环保技术及能源解决方案。查看源码
分享笔记 (共有 篇笔记)
验证码: