在Kubernetes上运行WordPress的好处是显而易见的。首先是安装非常简单(在已有集群的情况下),其次是可靠性更高,第三是规模可以伸缩。当然,可以在多个云之间更为容易地迁移也是非常重要的一点。
Kubernetes上运行WordPress是一个可伸缩性服务运行于云原生集群的典型案例,拿来学习也是极好的。
第一步,部署Kubernetes集群。
Kubernetes是一个容器编排系统,可以实现基于容器技术的大规模集群调度、管理。步骤包括安装关闭swap、清空ipTable、安装Docker、添加Kubernetes安装源、安装Kubeadm//kubectl/kubelet基础工具和服务、配置Kubernetes集群、安装Flannel网络驱动、安装Dashboard、安装Helm软件包管理工具等等。
参考:
- Ubuntu 18.04 LTS安装Kubernetes 1.11
- kubeadm安装Kubernetes实践记录
- Kubernetes加入新节点,经验总结
- 在阿里云创建Kubernetetes-1.11.0镜像服务(高速)
第二步,建立NFS存储服务。
在扩大系统的规模时,WordPress应用服务的Pod可以增加运行的拷贝数量,遇到故障时Pod可以转移到其它节点。为了浮动节点都能够访问统一的存储,我们使用NFS来建立网络存储服务,当然在云数据中心也可以使用云计算服务商提供的存储卷。对于规模较大的站点,也可以自己利用或部署Rook(Ceph)分布式存储系统。
参考:
- NFS部署
- Rook(Ceph)部署
第三步,部署Wordpress服务。
使用Helm进行安装。
$ helm install --name blog stable/wordpres
其中,blog为给WordPress建立的单独的域名,Helm将会自动创建。执行完毕后,可以使用 helm ls 查看安装的部署实例。然后再到Kubernetes Dashboard中可以看到新的命名空间和Pod的运行状态。
第四步,建立Ingress入口。
首先,需要安装Ingress Controller,Kubernetes虽然提供了Ingress的规则配置项,并未提供缺省的执行器,需要单独安装。
参考:
- Kubernetes负载均衡器-Nginx ingress安装
- 使用Let's Encrypt实现Kubernetes Ingress自动化HTTPS
- Kubernetes dashboard 通过 Ingress 提供HTTPS访问
然后,我们将主机IP地址(或访问路径)映射到WordPress站点,以便外来客户端的访问。
piVersion: extensions/v1beta1
kind: Ingress
metadata:
name: k8s-wordpress
namespace: blog
annotations:
# nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
# nginx.ingress.kubernetes.io/secure-backends: "true"
spec:
# tls:
# - secretName: k8s-wordpress-secret
rules:
- http:
paths:
- path: /
backend:
serviceName: wordpress-wordpress
servicePort: 80
- path: /web
backend:
serviceName: wordpress-wordpress
servicePort: 443
将上面的内容保存到文件,名为 wordpress-ingress.yaml,运行下面的命令安装:
kubectl apply -f wordpress-ingress.yaml
第五步,进行域名映射。
申请域名,比如通过阿里云可以在控制台查询和申请域名。然后将域名解析记录添加进去。
主要包括:
- 添加A记录,主机头www,填写刚才的主机IP地址。
- 添加A记录,主机头@,填写刚才的主机IP地址。
按照系统提示,要24小时左右才能访问该域名。
但是,我用的阿里云服务器,一会儿以后,就能访问到了。如果域名和主机在不同的地方,可能时间就需要长一些的了。
更高级的用法,留待后面实践和分享。
来源:oschina
链接:https://my.oschina.net/u/2306127/blog/2051901