kubernetes 启用 PHP + Nginx 网页环境
kubernetes 启用 PHP + Nginx 网页环境
传统安装方式进行安装步骤较多,使用kubernetes可以实现快速启用环境,在测试或者线上都可以做到快速 启用
编写 yaml 文件
[root@k8s-master01 ~]# vim PHP-Nginx-Deployment-ConfMap-Service.yaml
[root@k8s-master01 ~]# cat PHP-Nginx-Deployment-ConfMap-Service.yaml
kind: Service # 对象类型
apiVersion: v1 # api 版本
metadata: # 元数据
name: php-fpm-nginx #Service 服务名
spec:
type: NodePort # 类型为nodeport
selector: #标签选择器
app: php-fpm-nginx
ports: #端口信息
- port: 80 # 容器端口80
protocol: TCP #tcp类型
targetPort: 80 # Service 将 nginx 容器的 80 端口暴露出来
---
kind: ConfigMap # 对象类型
apiVersion: v1 # api 版本
metadata: # 元数据
name: nginx-config # 对象名称
data: # key-value 数据集合
nginx.conf: | # 将 nginx config 配置写入 ConfigMap 中,经典的 php-fpm 代理设置,这里就不再多说了
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php;
server_name _;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php) {
rewrite (.*) $1/index.php;
}
if (!-f $request_filename) {
rewrite (.*) /index.php;
}
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
}
include /etc/nginx/conf.d/*.conf;
}
---
kind: Deployment # 对象类型
apiVersion: apps/v1 # api 版本
metadata: # 元数据
name: php-fpm-nginx # Deployment 对象名称
spec: # Deployment 对象规约
selector: # 选择器
matchLabels: # 标签匹配
app: php-fpm-nginx
replicas: 3 # 副本数量
template: # 模版
metadata: # Pod 对象的元数据
labels: # Pod 对象的标签
app: php-fpm-nginx
spec: # Pod 对象规约
containers: # 这里设置了两个容器
- name: php-fpm # 第一个容器名称
image: php:7.4.29-fpm # 容器镜像
imagePullPolicy: IfNotPresent #镜像拉取策略
livenessProbe: # 存活探测
initialDelaySeconds: 5 # 容器启动后要等待多少秒后才启动存活和就绪探测器
periodSeconds: 10 # 每多少秒执行一次存活探测
tcpSocket: # 监测tcp端口
port: 9000 #监测端口
readinessProbe: # 就绪探测
initialDelaySeconds: 5 # 容器启动后要等待多少秒后才启动存活和就绪探测器
periodSeconds: 10 # 每多少秒执行一次存活探测
tcpSocket: # 监测tcp端口
port: 9000 #监测端口
resources: # 资源约束
requests: # 最小限制
memory: "64Mi" # 内存最新64M
cpu: "250m" # CPU最大使用0.25核
limits: # 最大限制
memory: "128Mi" # 内存最新128M
cpu: "500m" # CPU最大使用0.5核
ports:
- containerPort: 9000 # php-fpm 端口
volumeMounts: # 挂载数据卷
- mountPath: /var/www/html # 挂载两个容器共享的 volume
name: nginx-www
lifecycle: # 生命周期
postStart: # 当容器处于 postStart 阶段时,执行一下命令
exec:
command: ["/bin/sh", "-c", "echo startup..."] # 将 /app/index.php 复制到挂载的 volume
preStop:
exec:
command:
- sh
- '-c'
- sleep 5 && kill -SIGQUIT 1 # 优雅退出
- name: nginx # 第二个容器名称
image: nginx # 容器镜像
imagePullPolicy: IfNotPresent
livenessProbe: # 存活探测
initialDelaySeconds: 5 # 容器启动后要等待多少秒后才启动存活和就绪探测器
periodSeconds: 10 # 每多少秒执行一次存活探测
httpGet: # 以httpGet方式进行探测
path: / # 探测路径
port: 80 # 探测端口
readinessProbe: # 就绪探测
initialDelaySeconds: 5 # 容器启动后要等待多少秒后才启动存活和就绪探测器
periodSeconds: 10 # 每多少秒执行一次存活探测
httpGet: # 以httpGet方式进行探测
path: / # 探测路径
port: 80 # 探测端口
resources: # 资源约束
requests: # 最小限制
memory: "64Mi" # 内存最新64M
cpu: "250m" # CPU最大使用0.25核
limits: # 最大限制
memory: "128Mi" # 内存最新128M
cpu: "500m" # CPU最大使用0.5核
ports:
- containerPort: 80 # nginx 端口
volumeMounts: # nginx 容器挂载了两个 volume,一个是与 php-fpm 容器共享的 volume,另外一个是配置了 nginx.conf 的 volume
- mountPath: /var/www/html # 挂载两个容器共享的 volume
name: nginx-www
- mountPath: /etc/nginx/nginx.conf # 挂载配置了 nginx.conf 的 volume
subPath: nginx.conf
name: nginx-config
lifecycle:
preStop:
exec:
command:
- sh
- '-c'
- sleep 5 && /usr/sbin/nginx -s quit # 优雅退出
volumes:
- name: nginx-www # 网站文件通过nfs挂载
nfs:
path: /html/
server: 192.168.1.123
- name: nginx-config
configMap: # configMap
name: nginx-config
部署网站
# 下载网站代码
wget https://typecho.org/downloads/1.1-17.10.30-release.tar.gz
# 解压源码包
tar xvf 1.1-17.10.30-release.tar.gz
#移动到当前目录下
mv build/* .
#设置权限
chmod 777 -R *
创建资源
kubectl apply -f PHP-Nginx-Deployment-ConfMap-Service.yaml
测试环境
kubectl get pod -l app=php-fpm-nginx
NAME READY STATUS RESTARTS AGE
php-fpm-nginx-8b4bfb457-24bpd 2/2 Running 1 (6m34s ago) 16m
php-fpm-nginx-8b4bfb457-fvqd6 2/2 Running 2 (5m39s ago) 16m
php-fpm-nginx-8b4bfb457-kmzsc 2/2 Running 1 (6m34s ago) 16m
kubectl get configmaps | grep nginx
NAME DATA AGE
nginx-config 1 17m
kubectl get svc | grep nginx
php-fpm-nginx NodePort 10.98.66.104 <none> 80:31937/TCP 16m

https://www.oiox.cn/
https://www.chenby.cn/
https://cby-chen.github.io/
https://blog.csdn.net/qq_33921750
https://my.oschina.net/u/3981543
https://www.zhihu.com/people/chen-bu-yun-2
https://segmentfault.com/u/hppyvyv6/articles
https://juejin.cn/user/3315782802482007
https://cloud.tencent.com/developer/column/93230
https://www.jianshu.com/u/0f894314ae2c
https://www.toutiao.com/c/user/token/MS4wLjABAAAAeqOrhjsoRZSj7iBJbjLJyMwYT5D0mLOgCoo4pEmpr4A/CSDN、GitHub、知乎、开源中国、思否、掘金、简书、腾讯云、今日头条、个人博客、全网可搜《小陈运维》
文章主要发布于微信公众号:《Linux运维交流社区》
kubernetes 启用 PHP + Nginx 网页环境的更多相关文章
- 寻找[nginx] 由Lua 粘合的Nginx生态环境-- agentzh
来自:linuxtone org Chnangelog: 120312 fixed as s/hhttp/http/g ,thanx muxueqz 12030 ...
- Kubernetes容器集群管理环境 - 完整部署(中篇)
接着Kubernetes容器集群管理环境 - 完整部署(上篇)继续往下部署: 八.部署master节点master节点的kube-apiserver.kube-scheduler 和 kube-con ...
- Kubernetes容器集群管理环境 - 完整部署(上篇)
Kubernetes(通常称为"K8S")是Google开源的容器集群管理系统.其设计目标是在主机集群之间提供一个能够自动化部署.可拓展.应用容器可运营的平台.Kubernetes ...
- kubernetes下的Nginx加Tomcat三部曲之一:极速体验
在生产环境中,常用到Nginx加Tomcat的部署方式,如下图: 从本章开始,我们来实战kubernetes下部署上述Nginx和Tomcat服务,并开发spring boot的web应用来验证环境, ...
- kubernetes下的Nginx加Tomcat三部曲之三:实战扩容和升级
本章是<kubernetes下的Nginx加Tomcat三部曲系列>的终篇,今天咱们一起在kubernetes环境对下图中tomcat的数量进行调整,再修改tomcat中web工程的源码, ...
- kubernetes下的Nginx加Tomcat三部曲之二:细说开发
本文是<kubernetes下的Nginx加Tomcat三部曲>的第二章,在<kubernetes下的Nginx加Tomcat三部曲之一:极速体验>一文我们快速部署了Nginx ...
- Kubernetes容器集群管理环境 - Prometheus监控篇
一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...
- Kubernetes容器集群管理环境 - 完整部署(下篇)
在前一篇文章中详细介绍了Kubernetes容器集群管理环境 - 完整部署(中篇),这里继续记录下Kubernetes集群插件等部署过程: 十一.Kubernetes集群插件 插件是Kubernete ...
- centos系统编译安装nginx+php环境另加独立mysql教程
以前看过的安装nginx+php环境都带了mysql数据库了,这个是因为很多站长都是nginx+php+mysql都在同一台服务器了,那么今天我们是单独处理了,一个是nginx+php环境,然后mys ...
- windows下配置nginx+php环境
刚看到nginx这个词,我很好奇它的读法(engine x),我的直译是"引擎x",一般引"擎代"表了性能,而"x"大多出现是表示" ...
随机推荐
- webstrom破解
1.下载webstrom补丁 链接:https://pan.baidu.com/s/1I93J_JOlbZzkoqV4EsJlpQ 提取码:kopn (永久有效) 2.将补丁复 ...
- 30day_网络编程
由于不同机器上的程序要通信,于是产生通信 C/S架构: Client与Server,客户端(只有用的时候再使用)与服务端(一直运行,等待服务) B/S架构: 浏览器端与服务器端 Browser浏览器, ...
- P3512 [POI2010]PIL-Pilots 单调队列的应用
题目描述 给定n,k和一个长度为n的序列,求最长的最大值最小值相差不超过k的序列 输入格式 第一行两个有空格隔开的整数k(0<=k<=2000,000,000),n(1<=n< ...
- python2 selenium
参考blog: https://www.cnblogs.com/xiaozhiblog/p/5378723.html http://www.cnblogs.com/fnng/ 一.项目结构介绍 下面逐 ...
- aar 真机测试
工具 bundletool.jar 官方下载位置 https://github.com/google/bundletool/releases 下载后改下名字方便输入命令 将aar 放在G盘根目录 ja ...
- 关于ADB命令工具
android提供了不少命令行工具,方便我们调试和查看信息.下面是frameworks/base/cmds(android 6.0.1)中的命令. $ tree cmds -L 1 cmds am├─ ...
- 位置式PID和增量式PID
PID介绍 PID 是 Proportional(比例).Integral(积分).Differential(微分)的首字母缩写:是一种结合比例.积分和微分三种环节于一体的闭环控制算法.PID 控制的 ...
- Javaheima21
Java 学习内容 XML XML解析技术 XPath 设计模式 在有些业务场景下,存储数据或者传输数据给别人的时候,数据需要满足优点的规范进行组织 XML文件存储的数据需要提取出来 如何方便的在XM ...
- Crypto入门 (五)混合编码
前言: 这次得题目从本质上说没有什么难点,是多次利用base64和16进制编码,层层解开就好,通过这题得代码编写能很好得锻炼python代码能力,一起加油,尝试着自己写写看看把. 混合编码: 题目:J ...
- IT工具知识-09:OpenWrt设置旁路由
0.使用背景 设备:N1 固件:filppy打包的60+ 1.使用方法 1.1知道主路由的IP地址(例如192.168.1.1) 1.2在OpenWrt管理界面下进行设置 进入OpenWrt管理界面 ...