毕设_k8s集群拉起lnmp然后使用prometheus监控

本文档详细介绍了如何在Kubernetes(k8s)集群中搭建LNMP环境,包括设置namespace为lnmp,配置挂载、服务(SVC)、PHP镜像等。同时,利用Prometheus进行监控,配置了相关的svc表格、configmap和监控规则,并引入了Grafana进行可视化展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kubernets_LNMP

namespace为lnmp

表格

website1 和 website11内容应该同步

挂载情况
pod node2 内部
nginx1 website1 /data
confmap1 /etc/nginx/conf.d/default.conf
nginx2 website2 /data
confmap2 /etc/nginx/conf.d/default.conf
php1 website11 /data
php2 website22 /data
master /mysql/dbmaster/conf /etc/mysql/conf.d
/mysql/dbmaster/data /var/lib/mysql
/mysql/dbmaster/log /var/log/mysql
slave /mysql/dbslave/conf /etc/mysql/conf.d
/mysql/dbslave/data /var/lib/mysql
/mysql/dbslave/log /var/log/mysql
svc
svc type ClusterIp ports
dbmaster-service NodePort 10.8.229.197 3306:30005/TCP
dbslave-service ClusterIP 10.0.206.238 3306
php1 ClusterIP 10.10.119.99 9000
php2 ClusterIP 10.5.87.185 9000
LVS-service NodePort 10.1.4.60 80:31499/TCP

php镜像

vim 1
FROM php:7.0-fpm

 # 安装 MySQLi 扩展
 RUN docker-php-ext-install mysqli



 # 设置工作目录
 WORKDIR /var/www/html

 # 如果有其他依赖,可以在这里安装

 # 暴露 PHP-FPM 端口
 EXPOSE 9000

 # 启动 PHP-FPM
 CMD ["php-fpm"]
操作

docker build -t php7x -f 1 .

docker login --username=aliyun9875230798 registry.cn-hangzhou.aliyuncs.com

docker tag php7x registry.cn-hangzhou.aliyuncs.com/xiaolu77/work:php7x

docker push registry.cn-hangzhou.aliyuncs.com/xiaolu77/work:php7x

如果php的pod拉不起来 可能需要执行docker login这个命令.


yaml

nginx1
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx1
  namespace: lnmp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx1
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
        - name: website1
          mountPath: "/data"
        - name: nginx-config1
          mountPath: "/etc/nginx/conf.d/"
          readOnly: true
      volumes:
      - name: website1
        hostPath:
          path: /data/website1
      - name: nginx-config1
        configMap:
          name: nginx-config1
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                - node2
nginx1configmap
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config1
  namespace: lnmp
data:
  default.conf: |
    server {
      listen 80;
      server_name localhost;
      location / {
          root /data;  # 对应主机挂载到nginx容器中的/data代码目录
          index index.php index.html index.htm;
      }
      location ~ \.php(.*)$ {
          root /data;     # 对应主机挂在到php容器中的/data代码目录
          fastcgi_pass 10.244.2.37:9000;   # 此地址为php容器的内网ip
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME /data$fastcgi_script_name;  
          fastcgi_param PATH_INFO $1;   # 此行配置pathinfo,tp框架必须使用pathinfo
          include fastcgi_params;
      }
    }
php1
apiVersion: apps/v1
kind: Deployment
metadata:
  name: php1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: php1
  template:
    metadata:
      labels:
        app: php1
    spec:
      containers:
      - name: php1
        image: registry.cn-hangzhou.aliyuncs.com/xiaolu77/work:php7x
        ports:
        - containerPort: 9000
        securityContext:
          privileged: true  # 开启容器的特权模式
        volumeMounts:
        - mountPath: "/data"
          name: website1-volume
        command: ["php-fpm"]
      volumes:
      - name: website1-volume
        hostPath:
          path: /data/website11
      nodeSelector:
        kubernetes.io/hostname: node2
nginx2
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx2
  namespace: lnmp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx2
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
        - name: website
          mountPath: "/data"
        - name: nginx-config2
          mountPath: "/etc/nginx/conf.d/"
          readOnly: true
      volumes:
      - name: website
        hostPath:
          path: /data/website2
      - name: nginx-config2
        configMap:
          name: nginx-config2
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                - node2
nginx2configmap
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config2
  namespace: lnmp
data:
  default.conf: |
    server {
      listen 80;
      server_name localhost;
      location / {
          root /data;  # 对应主机挂载到nginx容器中的/data代码目录
          index index.php index.html index.htm;
      }
      location ~ \.php(.*)$ {
          root /data;     # 对应主机挂在到php容器中的/data代码目录
          fastcgi_pass 10.244.2.34:9000;   # 此地址为php容器的内网ip
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME /data$fastcgi_script_name;  
          fastcgi_param PATH_INFO $1;   # 此行配置pathinfo,tp框架必须使用pathinfo
          include fastcgi_params;
      }
    }
php2
apiVersion: apps/v1
kind: Deployment
metadata:
  name: php2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: php2
  template:
    metadata:
      labels:
        app: php2
    spec:
      containers:
      - name: php2
        image: registry.cn-hangzhou.aliyuncs.com/xiaolu77/work:php7x
        ports:
        - containerPort: 9000
        securityContext:
          privileged: true  # 开启容器的特权模式
        volumeMounts:
        - mountPath: "/data"
          name: website2-volume
        command: ["php-fpm"]
      volumes:
      - name: website2-volume
        hostPath:
          path: /data/website22
      nodeSelector:
        kubernetes.io/hostname: node2
php1svc
apiVersion: v1
kind: Service
metadata:
  name: php2
spec:
  selector:
    app: php2
  ports:
    - protocol: TCP
      port: 9000
      targetPort: 9000
  type: ClusterIP
php2svc
apiVersion: v1
kind: Service
metadata:
  name: php2
spec:
  selector:
    app: php2
  ports:
    - protocol: TCP
      port: 9000
      targetPort: 9000
  type: ClusterIP

mysql-master
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dbmaster
spec:
  replicas: 1
  selector:
    matchLabels:
      app: dbmaster
  template:
    metadata:
      labels:
        app: dbmaster
    spec:
      nodeSelector:
        kubernetes.io/hostname: node2  # 指定要调度到的节点
      containers:
      - name: dbmaster
        image: mysql:5.7
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "1"
        ports:
        - containerPort: 3306
        securityContext:
          privileged: true  # 开启容器的特权模式
        volumeMounts:
        - name: log-volume
          mountPath: /var/log/mysql
        - name: data-volume
          mountPath: /var/lib/mysql
        - name: conf-volume
          mountPath: /etc/mysql/conf.d
      volumes:
      - name: log-volume
        hostPath:
          path: /mysql/dbmaster/log
      - name: data-volume
        hostPath:
          path: /mysql/dbmaster/data
      - name: conf-volume
        hostPath:
          path: /mysql/dbmaster/conf
mysql-slave
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dbslave
spec:
  replicas: 1
  selector:
    matchLabels:
      app: dbslave
  template:
    metadata:
      labels:
        app: dbslave
    spec:
      nodeSelector:
        kubernetes.io/hostname: node2  # 指定要调度到的节点
      containers:
      - name: dbslave
        image: mysql:5.7
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "1"
        ports:
        - containerPort: 3306
        securityContext:
          privileged: true  # 开启容器的特权模式
        volumeMounts:
        - name: log-volume
          mountPath: /var/log/mysql
        - name: data-volume
          mountPath
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值