一、环境介绍

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 '';

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

mkdir /data -p
mount -t nfs -o vers=,minorversion=,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 ;
server_name localhost; location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
} location ~ \.php$ {
root /var/www/html;
fastcgi_pass php-svc.default.svc.cluster.local:;
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.-alpine
LABEL maintainer="zhang 1232@qq.com" COPY default.conf /etc/nginx/conf.d/
EXPOSE
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 2fd9a2724422 hours ago .7MB

四、配置nginx和php

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

[root@k8s-m ~]# cat  php.yaml
apiVersion: v1
kind: Service
metadata:
name: php-svc
spec:
selector:
name: php
ports:
- port:
name: http-php
targetPort:
protocol: TCP ---
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-php-deploy
spec:
replicas:
selector:
matchLabels:
name: php
template:
metadata:
labels:
name: php
spec:
containers:
- name: php
image: php:7.2-fpm
ports:
- name: http-php
containerPort:
volumeMounts:
- name: php-code
mountPath: /var/www/html/
volumes:
- name: php-code
nfs:
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: nginx
ports:
- port:
name: http
targetPort:
protocol: TCP ---
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx-deploy
spec:
replicas:
selector:
matchLabels:
name: nginx
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: mynginx:2.0
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort:
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html/
volumes:
- name: html
nfs:
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> /TCP 4h15m
nginx-svc ClusterIP 10.101.81.167 <none> /TCP 99m
php-svc ClusterIP 10.111.89.228 <none> /TCP 99m
[root@k8s-m ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
my-nginx-deploy / 99m
my-php-deploy / 100m

4、创建Ingress访问

[root@k8s-m ~]# cat wordpress-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-nginx
spec:
rules:
- host: haha.zhang.com
http:
paths:
- backend:
serviceName: nginx-svc
servicePort: [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 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.so root@9e7fa8e57db7:/var/www/html# php -m|grep gd
gd

6、redis之类的扩展安装

curl -L -o redis-4.1..tar.gz   https://github.com/phpredis/phpredis/archive/4.1.1.tar.gz
tar xf redis-4.1..tar.gz
rm redis-4.1..tar.gz
mv phpredis-4.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环境使用的更多相关文章

  1. 基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群一 环境准备

    本k8s集群参考了 Michael 的 https://gitee.com/pa/kubernetes-ha-kubeadm-private 这个项目,再此表示感谢! Michael的项目k8s版本为 ...

  2. 性能测试:k8s集群监控环境搭建(kube-prometheus)

    选择kube-prometheus版本 k8s集群版本是1.22.x 5个节点 说明:如果你电脑配置低,也可以1个master节点,2个node节点 3个节点 Kube-Prometheus地址:ht ...

  3. 部署k8s集群之环境搭建和etcd单节点安装

    环境搭建以及etcd 单节点安装过程 安装之前的环境搭建 在进行k8s安装之前先把虚拟机准备好,这里准备的是三台虚拟机 主机名 ip地址 角色 master 172.16.163.131 master ...

  4. 快速搭建一套k8s集群环境

    参考官网 kubeadm是官方提供的快速搭建k8s集群的开源工具,对于非运维人员学习k8s,kubeadm方式安装相对更简单. kubeadm创建一个集群:https://kubernetes.io/ ...

  5. 企业运维实践-还不会部署高可用的kubernetes集群?使用kubeadm方式安装高可用k8s集群v1.23.7

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 文章目录: 0x00 前言简述 ...

  6. Centos 安装k8s 集群(单master开发环境)

    本教程是在VM中搭建K8s 所以第一步骤先配置虚拟机的ip 和上网情况详细参考https://www.cnblogs.com/chongyao/p/9209527.html 开始搭建K8s集群 两台机 ...

  7. 入门-k8s集群环境搭建(二)

    对于 Kubernetes 初学者,在搭建K8S集群时,推荐在阿里云或腾讯云采购如下配置:(您也可以使用自己的虚拟机.私有云等您最容易获得的 Linux 环境) 至少2台 2核4G 的服务器 Cent ...

  8. 案例分享 生产环境逐步迁移至k8s集群 - pod注册到consul

    #案例分享 生产环境逐步迁移至k8s集群 - pod注册到consul #项目背景 多套业务系统, 所有节点注册到consul集群,方便统一管理 使用consul的dns功能, 所有节点hostnam ...

  9. China Azure中部署Kubernetes(K8S)集群

    目前China Azure还不支持容器服务(ACS),使用名称"az acs create --orchestrator-type Kubernetes -g zymtest -n kube ...

随机推荐

  1. Vue中echarts的基本用法

    前言:同大多数的前端框架一样,先读官网的使用方法.学会基本使用后,在实例中找到自己想要demo.拿过来改一改,一个echarts图表就形成,毕竟人家做就是为了方便使用. 我是在vue中下面直接使用的e ...

  2. Milking Cows 挤牛奶 USACO 排序 模拟

    1005: 1.2.1 Milking Cows 挤牛奶 时间限制: 1 Sec  内存限制: 128 MB提交: 15  解决: 9[提交] [状态] [讨论版] [命题人:外部导入] 题目描述 1 ...

  3. 【 Tomcat 】tomcat8.0 基本参数调优配置-----(1)

    Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你.对于操作系统优化来说,是尽可能的增大可使用的内存容量.提高CPU 的频率,保证文件 ...

  4. 函数组合的 N 种模式

    随着以函数即服务(Function as a Service)为代表的无服务器计算(Serverless)的广泛使用,很多用户遇到了涉及多个函数的场景,需要组合多个函数来共同完成一个业务目标,这正是微 ...

  5. java 常用锁

    公平锁和非公平锁 1.公平锁,是指多个线程按照申请的顺序来获取锁,类似排队打饭,先来后到. 2.非公平锁,是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程 比先申请的线程优先获取锁, ...

  6. 吸取教训:一段网上找的代码突然爆了,项目出现大BUG

    本人是做游戏服务器开发的,碰到一个需求,给符某些要求的玩家的发送道具奖励,奖励的数量根据离线的天数计算. 这个需求实现起来很简单,只需要在玩家上线的时候计算上次离线时间和当前时间间隔的天数,然后根据策 ...

  7. git工作中总结

    # .克隆到本地 git clone url git clone -b 分支 url # 注意:克隆完成后,要删除.git隐藏文件夹 # .修改代码 # .生成master git init git ...

  8. MySQL数据库之xtrabackup物理备份(一)

    前言:说到数据库备份,我们知道可以用来对数据库进行备份的工具有mysqldump.mydumer.mysqlpump等等,实际工作中,机器上的数据库不大的话,都是用mysqldump工具来备份,这些备 ...

  9. 「 从0到1学习微服务SpringCloud 」04服务消费者Ribbon+RestTemplate

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...

  10. Catch That Cow (简单BFS+剪枝)

    Problem Description Farmer John has been informed of the location of a fugitive cow and wants to cat ...