kubernetes 启用 PHP + Nginx 网页环境

传统装置形式进行装置步骤较多,应用kubernetes能够实现疾速启用环境,在测试或者线上都能够做到疾速 启用

编写 yaml 文件

[root@k8s-master01 ~]# vim PHP-Nginx-Deployment-ConfMap-Service.yaml[root@k8s-master01 ~]# cat PHP-Nginx-Deployment-ConfMap-Service.yamlkind: 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-nginxNAME                            READY   STATUS    RESTARTS        AGEphp-fpm-nginx-8b4bfb457-24bpd   2/2     Running   1 (6m34s ago)   16mphp-fpm-nginx-8b4bfb457-fvqd6   2/2     Running   2 (5m39s ago)   16mphp-fpm-nginx-8b4bfb457-kmzsc   2/2     Running   1 (6m34s ago)   16mkubectl get configmaps  | grep nginxNAME               DATA   AGEnginx-config       1      17mkubectl get svc | grep nginxphp-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_3392...
https://my.oschina.net/u/3981543
https://www.zhihu.com/people/...
https://segmentfault.com/u/hp...
https://juejin.cn/user/331578...
https://cloud.tencent.com/dev...
https://www.jianshu.com/u/0f8...
https://www.toutiao.com/c/use...

CSDN、GitHub、知乎、开源中国、思否、掘金、简书、腾讯云、今日头条、集体博客、全网可搜《小陈运维》

文章次要公布于微信公众号:《Linux运维交换社区》