陈佳浩
陈佳浩
发布于 2024-07-24 / 84 阅读
0
0

k8s运行wordpress

---
apiVersion: v1      #指定api组
kind: Namespace     #指定api类型
metadata:           #元数据
  name: lnmp        #定义名称空间名字
---
apiVersion: storage.k8s.io/v1       #指定api组
kind: StorageClass                  #指定api类型
metadata:                           #元数据
  name: nfs                         #定义存储类名字
  namespace: lnmp                   #指定名称空间
provisioner: nfs                    #指定使用的存储类
parameters:                         #指定存储参数
  server: 10.0.0.4                  #指定NFS服务器地址
  path: /data/lnmp                  #指定NFS服务器存储路径
  vers: "4"                         #指定协议NFSv4
---
apiVersion: v1                      #指定api组
kind: PersistentVolume              #指定api类型
metadata:                           #元数据
  name: nfs-mysql                   #定义持久卷PV名字
  namespace: lnmp                   #指定名称空间
spec:                               #指定对象规约
  capacity:                         #容量
    storage: 100Gi                  #指定PV存储容量
  volumeMode: Filesystem            #指定卷模式为文件系统
  accessModes:                      #指定访问模式
    - ReadWriteMany                 #指定卷可以被多个节点以读写方式挂载
  storageClassName: nfs             #指定存储类的名字
  nfs:                              #指定对nfs进行配置
    server: 10.0.0.4                #定义nfs服务器地址
    path: /data/lnmp/mysql          #定义nfs服务器内存储路径
---
apiVersion: v1                      #指定api组
kind: PersistentVolumeClaim         #指定api类型
metadata:                           #元数据
  name: nfs-mysql-pvc               #定义用户存储请求PVC名字
  namespace: lnmp                   #指定名称空间
spec:                               #指定对象规约
  storageClassName: nfs             #指定存储类的名字
  accessModes:                      #指定访问模式
    - ReadWriteMany                 #指定访问模式
  resources:                        #定义资源请求限制
    requests:                       #定义最小资源量
      storage: 100Gi                #指定请求的存储量
---
apiVersion: v1                      #指定api组
kind: PersistentVolume              #指定api类型
metadata:                           #元数据
  name: nfs-wordpress               #定义持久卷PV名字
  namespace: lnmp                   #指定名称空间
spec:                               #指定对象规约
  capacity:                         #容量
    storage: 50Gi                   #指定PV存储容量
  volumeMode: Filesystem            #指定卷模式为文件系统
  accessModes:                      #指定访问模式
    - ReadWriteMany                 #指定卷可以被多个节点以读写方式挂载
  storageClassName: nfs             #指定存储类的名字
  nfs:                              #指定对nfs进行配置
    server: 10.0.0.4                #定义nfs服务器地址
    path: /data/lnmp/wordpress          #定义nfs服务器内存储路径
---
apiVersion: v1                      #指定api组
kind: PersistentVolumeClaim         #指定api类型
metadata:                           #元数据
  name: nfs-wordpress-pvc           #定义用户存储请求PVC名字
  namespace: lnmp                   #指定名称空间
spec:                               #指定对象规约
  storageClassName: nfs             #指定存储类的名字
  accessModes:                      #指定访问模式
    - ReadWriteMany                 #指定访问模式
  resources:                        #定义资源请求限制
    requests:                       #定义最小资源量
      storage: 50Gi                 #指定请求的存储量
---
apiVersion: v1                      #指定api组
kind: ConfigMap                     #指定api类型
metadata:                           #元数据
  name: my-config                   #定义配置映射的名字
  namespace: lnmp                   #指定名称空间
data:                               #定义配置项及其对应的值
  default.conf: |                   #nginx反向代理配置文件
    server {
        listen 80;
        server_name localhost;
        #root   /var/www/html;

        location / {
            root   /var/www/html;
            index  index.php;
        }
        location ~ \.php$ {
            root   /var/www/html;
            fastcgi_pass wordpress-service:9000;
            #proxy_pass http://wordpress-service:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
            #proxy_set_header Host $host;
            #proxy_set_header X-Real-IP $remote_addr;
            #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            #proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
  nginx.conf: |                     #nginx主配置文件

    user  www-data;
    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;
        #tcp_nopush     on;

        keepalive_timeout  65;

        #gzip  on;

        include /etc/nginx/conf.d/*.conf;
        }
  www.conf: |                       #PHP配置文件
    [www]
    user = www-data
    group = www-data
    listen = 0.0.0.0:9000
    pm = dynamic
    pm.max_children = 5
    pm.start_servers = 2
    pm.min_spare_servers = 1
    pm.max_spare_servers = 3
  my.cnf: |                         #MySQL配置文件
    [mysqld]
    host-cache-size=0
    skip-name-resolve
    datadir=/var/lib/mysql
    log-error = /var/lib/mysql/mysqld_error.log
    socket=/var/lib/mysql/mysqld.sock
    secure-file-priv=/var/lib/mysql-files
    user=mysql
  
    pid-file=/var/lib/mysql/mysqld.pid
    [client]
    socket=/var/lib/mysql/mysqld.sock

    !includedir /etc/mysql/conf.d/
---
apiVersion: apps/v1                 #指定api组
kind: Deployment                    #指定api类型
metadata:                           #元数据
  labels:                           #标签
    lnmp.home.com/name: wordpress   #定义标签
  name: wordpress                   #指定部署对象的名字
  namespace: lnmp                   #指定名称空间
spec:                               #指定对象规约
  replicas: 4                       #定义副本集
  revisionHistoryLimit: 10          #进行更新后保留的历史版本数
  strategy:                         #配置更新策略
    rollingUpdate:                  #配置滚动更新
      maxSurge: 25%                 #进行滚动更新时,允许超过约定副本数的比例/个数
      maxUnavailable: 25%           #进行滚动更新时,允许的最大不可用比例/数量
  selector:                         #定义标签选择器
    matchLabels:                    #定义匹配标签
      lnmp.home.com/name: wordpress #指定匹配的标签
  template:                         #定义模板
    metadata:                       #元数据
      labels:                       #标签
        lnmp.home.com/name: wordpress #指定标签
    spec:                             #指定对象规约
      imagePullSecrets:               #指定拉取镜像的认证信息
      - name: harbor                  #引用Secret对象
      containers:                     #定义容器
        - env:                        #定义环境变量
            - name: "WORDPRESS_DB_HOST"
              value: "mysql-service"
            - name: "WORDPRESS_DB_USER"
              value: "wordpress"
            - name: "WORDPRESS_DB_PASSWORD"
              value: "wozhenniubi"
            - name: "WORDPRESS_DB_NAME"
              value: "wordpress"
          image: harbor.placjh.com/wordpress/wordpress:php8.3-fpm   #指定镜像和版本
          imagePullPolicy: IfNotPresent #定义镜像拉取策略
          name: wordpress               #指定部署对象的名字
          resources:                    #设置资源限制
            requests:                   #资源需求,期望大小
              memory: 50Mi              #期望内存资源大小
              cpu: 100m                 #期望cpu资源大小
            limits:                     #资源限制,最大限制
              memory: 100Mi             #请求内存资源最多使用多少
              cpu: 200m                 #请求cpu资源最多使用多少
          ports:                        #指定开放端口
            - containerPort: 9000       #开放9000端口
              name: php                 #给端口命名
              protocol: TCP             #网络协议
          readinessProbe:               #定义就绪探针
            exec:                       #指定使用命令方式
              command:                  #使用命令
              - ls
              - /var/www/html/wp-login.php
            periodSeconds: 10           #探测周期
            timeoutSeconds: 5           #超时时间
            successThreshold: 1         #成功次数
            failureThreshold: 3         #失败次数
          livenessProbe:                #定义存活探针
            tcpSocket:                  #指定使用tcp连接方式
              port: 9000                #指定探测端口
            periodSeconds: 10           #探测周期
            timeoutSeconds: 1           #超时时间
            successThreshold: 1         #成功次数
            failureThreshold: 3         #失败次数
          volumeMounts:                 #配置数据卷挂载
          - name: nfs-data              #指定存储卷名称
            mountPath: /var/www/html    #定义挂载点
          - name: www-config            #指定存储卷名称
            mountPath: /usr/local/etc/php-fpm.d/www.conf    #定义挂载点
            subPath: www.conf           #指定configmap子路径
      volumes:                          #定义存储卷
      - name: nfs-data                  #定义存储卷名称
        persistentVolumeClaim:          #指定pvc
          claimName: nfs-worpress-pvc   #指定pvc
      - name: www-config                #定义存储卷
        configMap:                      #定义存储卷类型为configmap
          name: my-config               #指定存储卷名称
          items:                        #指定使用的键值对
            - key: www.conf             #指定configMap中的键名
              path: www.conf            #指定挂载后的文件名
---
apiVersion: apps/v1                     #指定api组
kind: Deployment                        #指定api类型
metadata:                               #元数据
  labels:                               #标签
    lnmp.home.com/name: nginx           #定义标签
  name: nginx                           #指定部署对象的名字
  namespace: lnmp                       #指定名称空间
spec:                                   #指定对象规约
  replicas: 1                           #指定副本集
  selector:                             #定义标签选择器
    matchLabels:                        #定义匹配标签
      lnmp.home.com/name: nginx         #指定匹配的标签
  template:                             #定义模板
    metadata:                           #元数据
      labels:                           #标签
        lnmp.home.com/name: nginx       #指定标签
    spec:                               #指定对象规约
      imagePullSecrets:                 #指定拉取镜像的认证信息
      - name: harbor                    #引用Secret对象
      containers:                       #定义容器
        - image: harbor.placjh.com/nginx/nginx:1.25.4           #指定镜像和版本
          imagePullPolicy: IfNotPresent #定义镜像拉取策略
          name: nginx                   #指定部署对象的名字
          resources:                    #设置资源限制
            requests:                   #资源需求,期望大小
              memory: 50Mi              #期望内存资源大小
              cpu: 100m                 #期望cpu资源大小
            limits:                     #资源限制,最大限制
              memory: 100Mi             #请求内存资源最多使用多少
              cpu: 200m                 #请求cpu资源最多使用多少
          ports:                        #指定开放端口
            - containerPort: 80         #开放80端口
              name: web                 #给端口命名
              protocol: TCP             #网络协议
          readinessProbe:               #定义就绪探针
            httpGet:                    #指定使用http连接方式
              path: /                   #指定访问路径
              port: 80                  #指定访问端口
              scheme: HTTP              #指定使用HTTP协议
            periodSeconds: 10           #探测周期
            timeoutSeconds: 1           #超时时间
            successThreshold: 1         #成功次数
            failureThreshold: 3         #失败次数
          livenessProbe:                #定义存活探针
            httpGet:                    #指定使用http连接方式
              path: /                   #指定访问路径
              port: 80                  #指定访问端口
              scheme: HTTP              #指定使用HTTP协议
            periodSeconds: 10           #探测周期
            successThreshold: 1         #超时时间
            timeoutSeconds: 1           #成功次数
            failureThreshold: 3         #失败次数
          volumeMounts:                 #配置数据卷挂载
          - name: default-config        #指定存储卷名称
            mountPath: /etc/nginx/conf.d/default.conf   #定义挂载点
            subPath: default.conf       #指定configmap子路径
          - name: nginx-config          #指定存储卷名称
            mountPath: /etc/nginx/nginx.conf            #定义挂载点
            subPath: nginx.conf         #指定configmap子路径
          - name: nfs-data              #指定存储卷名称
            mountPath: /var/www/html    #定义挂载点
      volumes:                          #定义存储卷
      - name: default-config            #定义存储卷名称
        configMap:                      #定义存储卷类型为configmap
          name: my-config               #指定存储卷名称
          items:                        #指定使用的键值对
            - key: default.conf         #指定configMap中的键名
              path: default.conf        #指定挂载后的文件名
      - name: nginx-config              #定义存储卷名称
        configMap:                      #定义存储卷类型为configmap
          name: my-config               #指定存储卷名称
          items:                        #指定使用的键值对
            - key: nginx.conf           #指定configMap中的键名
              path: nginx.conf          #指定挂载后的文件名
      - name: nfs-data                  #定义存储卷名称
        persistentVolumeClaim:          #指定pvc
          claimName: nfs-wordpress-pvc  #指定pvc
---
apiVersion: apps/v1                     #指定api组
kind: StatefulSet                       #指定api类型
metadata:                               #元数据
  labels:                               #标签
    lnmp.home.com/name: mysql           #定义标签
  name: mysql                           #指定部署对象的名字
  namespace: lnmp                       #指定名称空间
spec:                                   #指定对象规约
  replicas: 1                           #定义副本集
  selector:                             #定义标签选择器
    matchLabels:                        #定义匹配的标签
      lnmp.home.com/name: mysql         #指定匹配的标签
  template:                             #定义模板
    metadata:                           #元数据
      labels:                           #标签
        lnmp.home.com/name: mysql       #指定标签
    spec:                               #指定对象规约
      imagePullSecrets:                 #指定拉取镜像的认证信息
      - name: harbor                    #引用Secret对象
      containers:                       #定义容器
        - env:                          #定义环境变量
            - name: "MYSQL_ROOT_PASSWORD"
              value: "2Grm-JFJ"
            - name: "MYSQL_DATABASE"
              value: "wordpress"
            - name: "MYSQL_USER"
              value: "wordpress"
            - name: "MYSQL_PASSWORD"
              value: "2Grm-JFJ"
          image: harbor.placjh.com/mysql/mysql:oraclelinux8     #指定镜像版本
          imagePullPolicy: IfNotPresent #指定镜像拉取策略
          name: mysql                   #指定部署对象的名字 
          readinessProbe:               #定义就绪探针
            initialDelaySeconds: 30     #定义容器启动多长时间后探测
            periodSeconds: 10           #探测周期
            timeoutSeconds: 5           #超时时间
            successThreshold: 1         #成功次数
            failureThreshold: 3         #失败次数
            exec:                       #指定使用命令方式
              command: ["mysqladmin", "-uroot", "-p${MYSQL_ROOT_PASSWORD}", "ping"] #使用命令
          livenessProbe:                #定义存活探针
            periodSeconds: 10           #探测周期
            timeoutSeconds: 5           #超时时间
            successThreshold: 1         #成功次数
            failureThreshold: 3         #失败次数
            exec:                       #指定使用命令方式
              command: ["mysqladmin", "-uroot", "-p${MYSQL_ROOT_PASSWORD}", "ping"] #使用命令
          ports:                        #指定开放端口
            - containerPort: 3306       #开放3306端口
              name: db                  #给端口命名
              protocol: TCP             #网络协议
          volumeMounts:                 #配置数据卷挂载
          - name: nfs-data              #定义存储卷名称
            mountPath: /var/lib/mysql   #定义挂载点
          - name: my-cnf                #定义存储卷名称
            mountPath: /etc/my.cnf      #定义挂载点
            subPath: my.cnf             #指定configmap子路径
      volumes:                          #定义存储卷
      - name: nfs-data                  #指定存储卷名称
        persistentVolumeClaim:          #指定pvc
          claimName: nfs-mysql-pvc      #指定pvc
      - name: my-cnf                    #定义存储卷名称
        configMap:                      #定义存储卷类型为configmap
          name: my-config               #指定存储卷名称
          items:                        #指定使用的键值对
            - key: my.cnf               #指定configMap中的键名
              path: my.cnf              #指定挂载后的文件名

---
apiVersion: v1                          #指定api组
kind: Service                           #指定api类型
metadata:                               #元数据
  labels:                               #标签
    lnmp.home.com/name: wordpress-service   #定义标签
  name: wordpress-service               #指定部署对象的名字
  namespace: lnmp                       #指定名称空间
spec:                                   #指定对象规约
  ports:                                #指定service开放端口
    - name: wordpress                   #指定端口名称
      port: 9000                        #开放9000端口
      protocol: TCP                     #网络协议
  selector:                             #标签选择器
    lnmp.home.com/name: wordpress       #指定标签
---
apiVersion: v1                          #指定api组
kind: Service                           #指定api类型
metadata:                               #元数据
  labels:                               #标签
    lnmp.home.com/name: nginx-service   #定义标签
  name: nginx-service                   #指定部署对象的名字
  namespace: lnmp                       #指定名称空间
  annotations:                          #注解
    lb.kubesphere.io/v1alpha1: openelb  #指定使用的负载均衡器
    protocol.openelb.kubesphere.io/v1alpha1: layer2   #指定使用的工作协议
    eip.openelb.kubesphere.io/v1alpha2: eip-pool      #指定使用的EIP(弹性地址池)
spec:                                   #指定对象规约
  ports:                                #指定service开放端口
    - name: web                         #指定端口名称
      port: 80                          #开放80端口
      protocol: TCP                     #网络协议
  selector:                             #标签选择器
    lnmp.home.com/name: nginx           #指定标签
  type: LoadBalancer                    #指定service类型
---
apiVersion: v1                          #指定api组
kind: Service                           #指定api类型
metadata:                               #元数据
  labels:                               #标签
    lnmp.home.com/name: mysql-service   #定义标签
  name: mysql-service                   #指定部署对象的名字
  namespace: lnmp                       #指定名称空间
spec:                                   #指定对象规约
  ports:                                #指定service开放端口
    - name: db                          #指定端口名称
      port: 3306                        #开放3306端口
      protocol: TCP                     #网络协议
  selector:                             #标签选择器
    lnmp.home.com/name: mysql           #指定标签
---
apiVersion: autoscaling/v2              #指定api组
kind: HorizontalPodAutoscaler           #指定api类型
metadata:                               #元数据
  labels:                               #标签
    lnmp.home.com/name: wordpress-hpa   #定义标签
  name: wordpress-hpa                   #指定部署对象名字
  namespace: lnmp                       #指定名称空间
spec:                                   #指定对象规约
  scaleTargetRef:                       #指定HPA要操作的目标对象
    apiVersion: apps/v1                 #指定要关联的目标资源的api组
    kind: Deployment                    #指定要关联的目标资源的api类型
    name: wordpress                     #要关联的目标资源的名称
  minReplicas: 1                        #最小副本数
  maxReplicas: 10                       #最大副本数
  metrics:                              #扩缩容决策
  - type: Resource                      #指标类型
    resource:                           #指定具体的资源信息
      name: cpu                         #资源名称
      target:                           #定义相关资源配置
        type: Utilization               #目标类型
        averageUtilization: 50          #利用率
      name: memory                      #资源名称
      target:                           #定义相关资源配置
        type: RUtilization              #目标类型
        averageUtilization: 50          #利用率
---
apiVersion: autoscaling/v2              #指定api组
kind: HorizontalPodAutoscaler           #指定api类型
metadata:                               #元数据
  labels:                               #标签
    lnmp.home.com/name: nginx-hpa       #定义标签
  name: nginx-hpa                       #指定部署对象的名字
  namespace: lnmp                       #指定名称空间
spec:                                   #指定对象规约
  scaleTargetRef:                       #指定HPA要操作的目标对象
    apiVersion: apps/v1                 #指定要关联的目标资源的api组
    kind: Deployment                    #指定要关联的目标资源的api类型
    name: nginx                         #要关联的目标资源的名称
  minReplicas: 1                        #最小副本数
  maxReplicas: 10                       #最大副本数
  metrics:                              #扩缩容决策
  - type: Resource                      #指标类型
    resource:                           #指定具体的资源信息
      name: cpu                         #资源名称
      target:                           #定义相关资源配置
        type: Utilization               #目标类型
        averageUtilization: 50          #利用率
      name: memory                      #资源名称
      target:                           #定义相关资源配置
        type: RUtilization              #目标类型
        averageUtilization: 50          #利用率
---
apiVersion: networking.k8s.io/v1        #指定api组
kind: Ingress                           #指定api类型
metadata:                               #元数据
  name: ingress-test                    #指定部署对象的名字
  namespace: lnmp                       #指定名称空间
  annotations:                          #注解
    nginx.ingress.kubernetes.io/rewrite-target: /   #路径重写
spec:                                   #指定对象规约
  ingressClassName: nginx               #指定使用的Ingress控制器
  rules:                                #路由规则
  - host: test.home.com                 #指定主机名(类似nginx的server_name)
    http:                               #http相关配置
      paths:                            #定义路径映射
      - pathType: Prefix                #路径类型
        backend:                        #后端服务配置
          service:                      #后端服务信息
            name: nginx-service         #指定后端service名字
            port:                       #服务端口
              number: 80                #指定端口
        path: /                         #定义路径
---
apiVersion: v1      #指定api组
kind: Secret        #指定api类型
data:               #提供的数据
  .dockerconfigjson: eyJhdXRocyI6eyJodHRwczovL2hhcmJvci5wbGFjamguY29tIjp7InVzZXJuYW1lIjoiYWRtaW4iLCJwYXNzd29yZCI6Ikw0eWgxUVQiLCJhdXRoIjoiWVdSdGFXNDZNa2R5YlMxS1Jrbz0ifX19Cg==     #docker的登录信息,其格式为base64编码
metadata:           #元数据
  name: harbor      #资源名称
  namespace: lnmp   #名称空间
type: kubernetes.io/dockerconfigjson  #类型

评论