在kubernetes集群中部署php应用
2018-02-19 11:12
841 查看
本文将介绍在kubernetes环境中部署一套php应用系统。前端web采用nginx、中间件php以fastcgi的方式运行,后台数据库由mysql主从提供支撑。
各服务组件之间的调用采用dns解析服务名的方式进行,数据和配置文件持久化采用pv和pvc(基于nfs)。
一、通过dockerfile创建php镜像文件
![](http://i2.51cto.com/images/blog/201802/19/4fa7db1f61aa29b3e6fd1497f40ada36.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
二、通过yaml文件创建ReplicationController和service
![](http://i2.51cto.com/images/blog/201802/19/da091cc58bf9fc738683a59dd2135b1a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
三、修改nginx配置支持php
![](http://i2.51cto.com/images/blog/201802/19/7eae7fc77d008c9fae2b1a751f7a7cbd.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
网页访问phpinfo页面测试
![](http://i2.51cto.com/images/blog/201802/19/20b84889b7a509b58d40fdfa8a8b3609.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/ce4fc464edcae1c32aa6f1de4dbe821f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/83f2824d4025ca75926676d27bbeffc1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
四、下载Discuz应用部署,测试php和mysql主从的连通性
下载地址:http://www.discuz.net/thread-3796882-1-1.html
通过访问网页进行部署
![](http://i2.51cto.com/images/blog/201802/19/ac21d272522e644543fcd71810a48589.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/14f22f3f2109787d060bd7ca4182a56d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/d7d0e4991bd5e96cff0c4866793b9fb2.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/e0bd426cd23eec8aae17ba2538e97957.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/8160799088e6d1be4b529277a1f03799.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/730b796da9d2adfd25533b5fc037cea2.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/40c2fadc567b0b169427c849a6195009.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/3eb09f3def6dfeb042e24fd7d3577a84.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
各服务组件之间的调用采用dns解析服务名的方式进行,数据和配置文件持久化采用pv和pvc(基于nfs)。
一、通过dockerfile创建php镜像文件
# cat dockerfile FROM docker.io/openshift/base-centos7:latest MAINTAINER ylw "ylw@fjhb.cn" RUN yum makecache RUN yum -y install php-fpm php php-gd php-mysql php-mbstring php-xml php-mcrypt php-imap php-odbc php-pear php-xmlrpc RUN sed -i 's/listen = 127.0.0.1:9000/listen = 0.0.0.0:9000/' /etc/php-fpm.d/www.conf RUN sed -i 's/listen.allowed_clients = 127.0.0.1/;listen.allowed_clients = 127.0.0.1/' /etc/php-fpm.d/www.conf EXPOSE 9000 CMD ["/sbin/php-fpm"] # docker build -t registry.fjhb.cn/php:0.1 . # docker push registry.fjhb.cn/php:0.1
![](http://i2.51cto.com/images/blog/201802/19/4fa7db1f61aa29b3e6fd1497f40ada36.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
二、通过yaml文件创建ReplicationController和service
# cat php-rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: php-server labels: name: php-server spec: replicas: 2 selector: name: php-server template: metadata: labels: name: php-server spec: containers: - name: php-server image: registry.fjhb.cn/php:0.1 volumeMounts: - mountPath: /usr/share/nginx/html name: nginx-data ports: - containerPort: 9000 volumes: - name: nginx-data persistentVolumeClaim: claimName: nfs-data # cat php-svc.yaml apiVersion: v1 kind: Service metadata: name: php-server labels: name: php-server spec: ports: - port: 9000 protocol: TCP targetPort: 9000 selector: name: php-server # kubectl create -f php-rc.yaml # kubectl create -f php-svc.yaml
![](http://i2.51cto.com/images/blog/201802/19/da091cc58bf9fc738683a59dd2135b1a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
三、修改nginx配置支持php
# cat /home/nginx/conf.d/test.conf server { listen 80; server_name test.fjhb.cn; access_log /etc/nginx/test.fjhb.cn.accesslog main; location / { root /usr/share/nginx/html; index index.html index.htm; } location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass php-server:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }
![](http://i2.51cto.com/images/blog/201802/19/7eae7fc77d008c9fae2b1a751f7a7cbd.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
网页访问phpinfo页面测试
![](http://i2.51cto.com/images/blog/201802/19/20b84889b7a509b58d40fdfa8a8b3609.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/ce4fc464edcae1c32aa6f1de4dbe821f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/83f2824d4025ca75926676d27bbeffc1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
四、下载Discuz应用部署,测试php和mysql主从的连通性
下载地址:http://www.discuz.net/thread-3796882-1-1.html
# mkdir /home/bbs # cd /home/bbs # unzip Discuz_X3.3_SC_UTF8.zip # mv upload/* ./
通过访问网页进行部署
![](http://i2.51cto.com/images/blog/201802/19/ac21d272522e644543fcd71810a48589.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/14f22f3f2109787d060bd7ca4182a56d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/d7d0e4991bd5e96cff0c4866793b9fb2.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/e0bd426cd23eec8aae17ba2538e97957.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/8160799088e6d1be4b529277a1f03799.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/730b796da9d2adfd25533b5fc037cea2.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/40c2fadc567b0b169427c849a6195009.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/3eb09f3def6dfeb042e24fd7d3577a84.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201802/19/189870977203e9cda790c31f46001400.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
相关文章推荐
- CentOS7.0上部署kubernetes集群 + 简单应用示例
- Kubernetes1.3新特性:集群联盟-在全球快速部署和管理应用
- Kubernetes 集群的两种部署过程(daemon部署和容器化部署)以及glusterfs的应用!
- Kubernetes1.3新特性:集群联盟-在全球快速部署和管理应用
- 在Kubernetes集群中使用Redis部署PHP留言簿应用程序
- k8s集群之kubernetes-dashboard和kube-dns组件部署安装
- kubernetes 1.3 的安装和集群环境部署
- k8s单节点集群部署应用
- 基于kubernetes1.5.2集群部署DashBoard
- kubernetes 1.3 的安装和集群环境部署
- 部署 Kubernetes 集群日志插件 Fluentd、Elasticsearch、Kibana
- kubernetes 集群的安装部署
- Kubernetes1.91(K8s)安装部署过程(三)--创建高可用etcd集群
- docker实战2 (docker swarm的应用,docker集群的构建,在docker集群中部署服务的创建与更新)
- Kubernetes部署etcd集群-centos7
- LAMP网站平台的构建和PHP应用部署
- 走心的狗 使用acs-engine在Azure中国区部署kubernetes集群详解
- 使用概要管理工具创建定制概要文件,并在此节点上 创建集群以及在集群服务器中部署应用
- Kubernetes应用部署策略实践
- 【Web应用-大文件部署】上传超过 2M 的文件到 Azure PHP 网站失败