一、环境介绍

k8s版本: 1.15.2

存储: 阿里云NAS

测试代码: wordpress

二、下载wordpress和创建好数据库等

1、下载wordpress

wget https://cn.wordpress.org/latest-zh_CN.zip

2、创建数据库(数据库我使用yum下载的,数据库尽量不要部署在k8s集群中)

create database wordpress DEFAULT CHARACTER SET utf8;
grant all on wordpress.* to 'wordpress'@'%' identified by '123456';

3、把wordpress代码放入到NAS存储中

mkdir /data -p
mount -t nfs -o vers=4,minorversion=0,noresvport 12XXXXXXXxx.cn-hongkong.nas.aliyuncs.com:/    /data
mv wordpress   /data/

三、写dockerfile和构建镜像(我这自己写的nginx镜像,挂载配置或者使用secret的方法也能更改配置)

mkdir -p Dockerfile
[root@k8s-m Dockerfile]# cat default.conf
server {listen 80;server_name localhost;location / {root   /usr/share/nginx/html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}location ~ \.php$ {root /var/www/html;fastcgi_pass   php-svc.default.svc.cluster.local:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;include        fastcgi_params;}}[root@k8s-m Dockerfile]# cat Dockerfile
FROM nginx:1.15.4-alpine
LABEL maintainer="zhang 1232@qq.com"COPY default.conf /etc/nginx/conf.d/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

#构建镜像(没有镜像仓库的话,要把镜像导入到其它服务器上)

[root@k8s-m Dockerfile]# docker build -t mynginx:2.0 ./

#查看镜像

[root@k8s-m Dockerfile]# docker images|grep mynginx
mynginx                              2.0                 2fd9a272

四、配置nginx和php

1、创建与导入php的svc和deploy

[root@k8s-m ~]# cat  php.yaml
apiVersion: v1
kind: Service
metadata:name: php-svc
spec:selector:name: phpports:- port: 9000name: http-phptargetPort: 9000protocol: TCP---
apiVersion: apps/v1
kind: Deployment
metadata:name: my-php-deploy
spec:replicas: 3selector:matchLabels:name: phptemplate:metadata:labels:name: phpspec:containers:- name: phpimage: php:7.2-fpmports:- name: http-phpcontainerPort: 9000volumeMounts:- name: php-codemountPath: /var/www/html/volumes:- name: php-codenfs:path: /wordpress/server: 12xxxxxxxxx.cn-hongkong.nas.aliyuncs.com

2、创建与导入nginx的svc和deploy

[root@k8s-m ~]# cat nginx-deploy.yaml
apiVersion: v1
kind: Service
metadata:name: nginx-svc
spec:selector:name: nginxports:- port: 80 name: httptargetPort: 80 protocol: TCP---
apiVersion: apps/v1
kind: Deployment
metadata:name: my-nginx-deploy
spec:replicas: 3selector:matchLabels:name: nginxtemplate:metadata:labels:name: nginxspec:containers:- name: nginximage: mynginx:2.0 imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80 volumeMounts:- name: htmlmountPath: /usr/share/nginx/html/volumes:- name: htmlnfs:path: /wordpress/server: 124xxxxxxxxxxxxx-hongkong.nas.aliyuncs.com

3、查看

[root@k8s-m ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP    4h15m
nginx-svc    ClusterIP   10.101.81.167   <none>        80/TCP     99m
php-svc      ClusterIP   10.111.89.228   <none>        9000/TCP   99m
[root@k8s-m ~]# kubectl get deploy
NAME              READY   UP-TO-DATE   AVAILABLE   AGE
my-nginx-deploy   3/3     3            3           99m
my-php-deploy     3/3     3            3           100m

4、创建Ingress访问

[root@k8s-m ~]# cat wordpress-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:name: ingress-nginx
spec:rules:- host: haha.zhang.comhttp:paths:- backend:serviceName: nginx-svcservicePort: 80[root@k8s-m ~]# kubectl  apply -f wordpress-ingress.yaml
ingress.extensions/ingress-nginx created

5、访问测试

五、PHP扩展安装

php容器中的ini扩展文件路径:/usr/local/etc/php/conf.d/

1、进入php容器中

[root@node1 ~]# docker run -it  --name php-gd  php:7.2-fpm bash

2、下载依赖

apt-get update && apt-get install  libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng-dev -y

3、安装扩展(例如GD)

docker-php-ext-configure gd
#安装
docker-php-ext-install gd
#启用
docker-php-ext-enable gd

4、将容器保存为新的镜像

[root@node1 ~]# docker commit -p php-gd php-gd:1.0
sha256:c562ad539630b3c5eb6888f0b7bac937d9d3af1d39de118106c5e6ca30a02ebd
[root@node1 ~]# docker images
REPOSITORY                                  TAG                 IMAGE ID            CREATED             SIZE
php-gd                                      1.0                 c562ad539630        4 seconds ago       426MB

5、运行新php容器测试

[root@node1 ~]# docker run -it --rm  php-gd:1.0 bash
root@9e7fa8e57db7:/var/www/html# ls /usr/local/etc/php/conf.d/docker-php-ext-gd.ini
/usr/local/etc/php/conf.d/docker-php-ext-gd.ini
root@9e7fa8e57db7:/var/www/html# cat  /usr/local/etc/php/conf.d/docker-php-ext-gd.ini
extension=gd.soroot@9e7fa8e57db7:/var/www/html# php -m|grep gd
gd

6、redis之类的扩展安装

curl -L -o redis-4.1.1.tar.gz   https://github.com/phpredis/phpredis/archive/4.1.1.tar.gz
tar xf redis-4.1.1.tar.gz
rm redis-4.1.1.tar.gz
mv phpredis-4.1.1    /usr/src/php/ext/redis
docker-php-ext-configure  redis
docker-php-ext-install redis
docker-php-ext-enable redis##查看root@9d5d4e093dbd:/var/www/html# php -m|grep redis
redis

参考链接 :

k8s集群PHP环境使用 :https://mp.weixin.qq.com/s/5Bn5XxKQiqmqKl4bZt6p5g

k8s集群PHP环境使用相关推荐

  1. 二、《云原生 | Kubernetes篇》Kubernetes学习-K8S安装篇-Kubeadm安装高可用K8S集群--生产环境

    目录 1. Kubernetes 高可用安装 1.1.1实验环境规划 高可用Kubernetes集群规划

  2. K8S集群部署-环境准备

    设置主机名与时区 timedatectl set-timezone Asia/Shanghai hostnamectl set-hostname master hostnamectl set-host ...

  3. 一键安装k8s集群测试环境

    系统:centos7.9 - 2009 //只支持centos7 mini 安装即可 配置要求:内存2G以上 export release=3.0.0yum install wget -ywget h ...

  4. 【运维开发】Mac OS(10.13.6)使用 vagrant+VirtualBox +centos7搭建k8s集群

    Mac OS(10.13.6)使用 vagrant+VirtualBox +centos7搭建k8s集群步骤 环境准备工作 下载VirtualBox 地址:https://www.virtualbox ...

  5. 实战生产环境:kubeadmin安装1.13.3最新版k8s集群教程

    2019年3月6日:出版安装kubeadmin部署k8s集群教程 本次安装采用kubeadmin ! 安装的k8s版本为1.13.3版,是当前最新版本! 本篇文章,所使用的任何镜像和yaml我都会发一 ...

  6. 基于k8s多集群隔离环境下的devops实现

    简介:本方案使用两个独立的k8s集群:用户已有的k8s模拟测试,ack集群模拟生产环境,保证环境的高度隔离,互不影响.通过gitlab+Jenkins的黄金组合,实现容器应用的自动化构建和持续部署,提 ...

  7. dubbo k8s 服务发现_将Dubbo微服务迁移到k8s集群环境中前的思考与落地

    将Dubbo微服务迁移到k8s中的思考与落地 说到容器化,不得不提kubernetes这个集群编排系统,它是一个开源系统,用于容器化应用的自动部署.扩缩和管理. Kubernetes 将构成应用的容器 ...

  8. shell 脚本实现 k8s 集群环境下指定 ns 资源的 yaml 文件备份

    shell 脚本实现 k8s 集群环境下指定 ns 资源的 yaml 文件备份 需求说明 功能实现 shell 脚本实现 shell 使用方式 前置工具环境安装 dump-k8s-yaml.sh 使用 ...

  9. k8s集群环境namespace共享和隔离

    k8s集群环境namespace共享和隔离 不同的工作组可以在同一个kubernets集群中工作,使用命名空间和context来对不同的工作组进行划分,使其在同一个集群工作又互不干扰 namespac ...

最新文章

  1. Bitmap,byte[],Drawable相互转化
  2. Linux下的sleep()和sched_yield()
  3. 读《深入jvm原理》之class文件
  4. 基于Nexys4 DDR的温度数码管实时显示
  5. Linux C 时间函数
  6. 终于过审了!腾讯给了我20万红包封面,我得发出去。。。
  7. python2.7出现的错误
  8. 下半年登场!小米MIX 4概念图曝光:有望首发屏下摄像头
  9. 工程图学与计算机绘图考查,工程图学与计算机绘图
  10. 计算机显示网络无权限访问权限,小编教你电脑显示无internet访问权限怎么办
  11. Verilog学习——T触发器
  12. SPSS 实现KMO和Bartlett的球形度检验
  13. 如何检查并清除挖矿程序
  14. 视频监控网络传输计算方法
  15. Linux内存管理(三十五):内存规整简介和 kcompactd详解
  16. 利用STM32F103最小系统做C2接口离线烧录器
  17. 基于仿360小说网站(校园网)的源码设计实现(升级版)
  18. 各大搜索引擎网站收录提交入口
  19. Python制图常用设置
  20. Java的在哪里找labor_Java流程控制

热门文章

  1. python机器学习:决策树ID3、C4.5
  2. 数据库decimal对应java什么类型_mysql decimal(10,2)对应java类型
  3. matlab建立二阶开环系统仿真图,实验二 Simulink仿真实验
  4. java创建内部面板类_java-RGB调色面板的实现(事件监听器之匿名内部类)
  5. numpy 转置_Python中Numpy.transpose()
  6. hdu 4302 Holedox Eating
  7. 出现红字是电脑问题吗_婚姻出现问题,生个孩子就能解决,这是真的吗?
  8. 类似抖音的短视频app开发难度大吗?短视频源码让你事半功倍
  9. php编译安装swoole模块
  10. velocity map list 数组操作