k8s搭建php开发环境,在k8s上部署第一个php应用
一.搭建nginx+php
1.站点配置文件
1.1创建nginx-configmap.yaml
[root@master k8s]# cat nginx-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
data:
default.conf: |
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
access_log /var/log/nginx/host_access.log;
error_log /var/log/nginx/host_error.log debug;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 10.254.235.214:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
ps:
10.254.235.214: 是下文中配置的php-service服务的集群ip
1.2 应用该配置文件
#kubectl create -f nginx-configmap.yaml
2.nginx
2.1创建nginx-deployment.yaml
[root@master k8s]# cat nginx-deployment.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
volumeMounts:
- name: nginx-config
mountPath: /etc/nginx/conf.d
- name: web-root
mountPath: /usr/share/nginx/html
volumes:
- name: nginx-config
configMap:
name: nginx-config
- name: web-root
nfs:
server: 192.168.2.17
path: /data/nfs
ps:请提前搭建好nfs环境,nfs中的server为局域网ip
2.2 应用该配置文件
#kubectl create -f nginx-configmap.yaml
ps:
因为使用了NodePort类型,现在你可以在外部通过任意节点服务器ip+端口访问到nginx服务
你可以可以通过pod上的ip来访问到nginx服务
3.php
3.1 php-deployment.yaml
[root@master k8s]# cat php-deployment.yaml
apiVersion: v1
kind: Service
metadata:
name: php-service
spec:
clusterIP: 10.254.235.214
selector:
app: php
ports:
- name: php
port: 9000
targetPort: 9000
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: php-deployment
spec:
replicas: 1
selector:
matchLabels:
app: php
template:
metadata:
labels:
app: php
spec:
containers:
- name: php
image: php:7.2-fpm
volumeMounts:
- name: web-root
mountPath: /usr/share/nginx/html
volumes:
- name: web-root
nfs:
server: 192.168.2.17
path: /data/nfs
3.2 应用该配置文件
#kubectl create -f php-configmap.yaml
二.创建mysql服务
1.一般我们将数据库放在单独的物理服务器上或另一个集群上,我们创建一个mysql-service.yaml
[root@master]# cat mysql-service.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql-service
namespace: default
spec:
ports:
- protocol: TCP
port: 3306
targetPort: 3306
[root@master]#kubectl create -f mysql-service.yaml
2.创建同名的endpoint,这样子service可以使用endpoint
[root@master]# cat mysql-endpoint.yaml
apiVersion: v1
kind: Endpoints
metadata:
name: mysql-service
namespace: default
subsets:
- addresses:
- ip: 192.168.2.10
ports:
- port: 3306
protocol: TCP
[root@master]#kubectl create -f mysql-endpoint.yaml
三.应用程序文件
1.一个简单的php程序文件:
[root@master]#cat b.php
$dbms='mysql';
$host= getenv('MYSQL_SERVICE_SERVICE_HOST'); // 获得环境变量,对应php-service;可以进入pod容器内使用env查看
$dbName='test';
$user='test';
$pass='1983512gx';
$dsn="$dbms:host=$host;dbname=$dbName";
try {
$dbh = new PDO($dsn, $user, $pass);
echo "连接成功
";
$dbh = null;
} catch (PDOException $e) {
die ("Error!: " . $e->getMessage() . "
");
}
2.运行该文件,提示
Error!: could not find driver
这是因为用到了pdo,但php-fpm2镜像并没有这个扩展
3.安装php-pdo扩展(更好的办法是你应该制作一个运行php环境的容器)
kubectl exec -it php-deployment-3540934081-75sqv -- /usr/local/bin/docker-php-ext-install pdo_mysql
4.重启节点上对应的php 容器
docker restart 4cf7949cfc30
ps:
实际操作中在容器内无法连同service,重启了节点的docker才可以.
四.访问
在任意节点上或master上访问
#curl http://192.168.2.18:31746/b.php
应该输出连接成功
k8s搭建php开发环境,在k8s上部署第一个php应用相关推荐
- Raspberry Pi 4B(4GB版)上搭建Donkeycar开发环境
在树莓派上搭建Donkeycar开发环境 在树莓派上搭建Donkeycar开发环境 1 系统安装与SSH配置 2 更新系统 3 配置树莓派 4 安装依赖包 5 安装Python的虚拟环境 6 安装 D ...
- 如何在Windows下搭建Android开发环境
搭建Android开发环境 1 下载Android SDK http://code.google.com/android/download.html 这是官方网址,进入后跟着流程走,选择适合于自己平台 ...
- 上手阿里云服务器(一)——搭建LAMP开发环境、防火墙、文件传输
轻量应用服务器的搭建 搭建LAMP开发环境 防火墙规则 上传Web文件 参考文档:阿里云云服务器官方文档 参考视频:b站教程视频 为了更简单地入门云计算,所以选择使用轻量应用服务器(有别于云服务器EC ...
- 如何搭建Java开发环境?
Java 开发环境配置 将为大家介绍如何搭建Java开发环境. Windows 上安装开发环境 Linux 上安装开发环境 安装 Eclipse 运行 Java window系统安装java 下载JD ...
- 搭建 JavaScript 开发环境
搭建 JavaScript 开发环境 安装过程 Node.js 第一个 JavaScript 程序 NPM 简单介绍 搭建环境,无外乎就是书写代码的环境以及运行代码的环境. 对于书写代码的环境,前面我 ...
- 在CentOS 6.2上搭建vim开发环境
在CentOS 6.2上搭建vim开发环境 最后更新日期:2013-07-05 1.首先使用Ubuntu(所在ip为192.168.16.230)翻墙登陆http://www.vim.org/,下载其 ...
- Windows7/10上快速搭建Tesseract-OCR开发环境操作步骤
之前在https://blog.csdn.net/fengbingchun/article/details/51628957 中描述过如何在Windows上搭建Tesseract-OCR开发环境,那时 ...
- nodejs mac java home_Mac上搭建nodejs开发环境
###Mac上搭建nodejs开发环境 ####安装homebrew 1 2 3ruby -e "$(curl -fsSL https://raw.githubusercontent.com ...
- 如何使用IntelliJ IDEA搭建spark开发环境(上)
本文部分转自http://www.beanmoon.com/2014/10/11/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8intellij%E6%90%AD%E5%BB ...
最新文章
- DIY一个粒子检测器 2020-10
- silverlight中递归构造无限级树treeview+checkbox
- php与mysql同步_MySQL 同步(一)
- java百里香_百里香Spring测试的意见
- 什么是eager loading
- python修改文件内容,不需要read,write多个动作。
- Bzoj 3289: Mato的文件管理 莫队,树状数组,逆序对,离散化,分块
- python决策树id3算法_python实现决策树ID3算法
- mysql用navicat无法远程连接,mysql 发现 navicat 可以远程连接,代码无法远程连接
- 传统春节海报设计没有思路?
- Python与数据结构[4] - 散列表[1] - 分离链接法的 Python 实现
- 大端、小端的前世今生
- MYSQL读写性能测试
- Python分析《哈哈哈哈哈》4万弹幕
- 原生Arm版Office安装步骤
- matlab非单位阶跃响应,MATLAB下二阶系统的单位阶跃响应
- OpenGL基本图元的绘制
- docker: error pulling image configuration:timeout
- 轻量化网络—ShuffleNet V1 V2理解
- 继承属性inh和综合属性syn的作用
热门文章
- java move 方法_Java IFile.move方法代码示例
- sql server 2012安装、升级折腾记录
- python小游戏毕设 炸弹人小游戏设计与实现 (源码)
- typecho博客迁移
- android限速 编程,GitHub - renjingc/TrafficSignsRecognition: 基于深度学习的android端交通牌标志检测与识别...
- 二阶椭圆型第一边值问题的数值解法(五点差分格式和有限体积法)附matlab代码
- 有限责任公司董事会可不可以修改章程
- 漏洞复现:Ms12-020 (win7 蓝屏)
- 使用STAR-fusion进行融合基因的分析
- 像用户一样测试:打破知识诅咒