一.搭建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应用相关推荐

  1. Raspberry Pi 4B(4GB版)上搭建Donkeycar开发环境

    在树莓派上搭建Donkeycar开发环境 在树莓派上搭建Donkeycar开发环境 1 系统安装与SSH配置 2 更新系统 3 配置树莓派 4 安装依赖包 5 安装Python的虚拟环境 6 安装 D ...

  2. 如何在Windows下搭建Android开发环境

    搭建Android开发环境 1 下载Android SDK http://code.google.com/android/download.html 这是官方网址,进入后跟着流程走,选择适合于自己平台 ...

  3. 上手阿里云服务器(一)——搭建LAMP开发环境、防火墙、文件传输

    轻量应用服务器的搭建 搭建LAMP开发环境 防火墙规则 上传Web文件 参考文档:阿里云云服务器官方文档 参考视频:b站教程视频 为了更简单地入门云计算,所以选择使用轻量应用服务器(有别于云服务器EC ...

  4. 如何搭建Java开发环境?

    Java 开发环境配置 将为大家介绍如何搭建Java开发环境. Windows 上安装开发环境 Linux 上安装开发环境 安装 Eclipse 运行 Java window系统安装java 下载JD ...

  5. 搭建 JavaScript 开发环境

    搭建 JavaScript 开发环境 安装过程 Node.js 第一个 JavaScript 程序 NPM 简单介绍 搭建环境,无外乎就是书写代码的环境以及运行代码的环境. 对于书写代码的环境,前面我 ...

  6. 在CentOS 6.2上搭建vim开发环境

    在CentOS 6.2上搭建vim开发环境 最后更新日期:2013-07-05 1.首先使用Ubuntu(所在ip为192.168.16.230)翻墙登陆http://www.vim.org/,下载其 ...

  7. Windows7/10上快速搭建Tesseract-OCR开发环境操作步骤

    之前在https://blog.csdn.net/fengbingchun/article/details/51628957 中描述过如何在Windows上搭建Tesseract-OCR开发环境,那时 ...

  8. nodejs mac java home_Mac上搭建nodejs开发环境

    ###Mac上搭建nodejs开发环境 ####安装homebrew 1 2 3ruby -e "$(curl -fsSL https://raw.githubusercontent.com ...

  9. 如何使用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 ...

最新文章

  1. DIY一个粒子检测器 2020-10
  2. silverlight中递归构造无限级树treeview+checkbox
  3. php与mysql同步_MySQL 同步(一)
  4. java百里香_百里香Spring测试的意见
  5. 什么是eager loading
  6. python修改文件内容,不需要read,write多个动作。
  7. Bzoj 3289: Mato的文件管理 莫队,树状数组,逆序对,离散化,分块
  8. python决策树id3算法_python实现决策树ID3算法
  9. mysql用navicat无法远程连接,mysql 发现 navicat 可以远程连接,代码无法远程连接
  10. 传统春节海报设计没有思路?
  11. Python与数据结构[4] - 散列表[1] - 分离链接法的 Python 实现
  12. 大端、小端的前世今生
  13. MYSQL读写性能测试
  14. Python分析《哈哈哈哈哈》4万弹幕
  15. 原生Arm版Office安装步骤
  16. matlab非单位阶跃响应,MATLAB下二阶系统的单位阶跃响应
  17. OpenGL基本图元的绘制
  18. docker: error pulling image configuration:timeout
  19. 轻量化网络—ShuffleNet V1 V2理解
  20. 继承属性inh和综合属性syn的作用

热门文章

  1. java move 方法_Java IFile.move方法代码示例
  2. sql server 2012安装、升级折腾记录
  3. python小游戏毕设 炸弹人小游戏设计与实现 (源码)
  4. typecho博客迁移
  5. android限速 编程,GitHub - renjingc/TrafficSignsRecognition: 基于深度学习的android端交通牌标志检测与识别...
  6. 二阶椭圆型第一边值问题的数值解法(五点差分格式和有限体积法)附matlab代码
  7. 有限责任公司董事会可不可以修改章程
  8. 漏洞复现:Ms12-020 (win7 蓝屏)
  9. 使用STAR-fusion进行融合基因的分析
  10. 像用户一样测试:打破知识诅咒