欢迎光临散文网 会员登陆 & 注册

nginx+php部署图例 HPA集群

2023-02-20 09:08 作者:bili_39183997178  | 我要投稿

---

kind: PersistentVolume

apiVersion: v1

metadata:

  name: pv-nfs

spec:

  volumeMode: Filesystem

  capacity:

    storage: 30Gi

  accessModes:

  - ReadWriteOnce

  - ReadOnlyMany

  - ReadWriteMany

  persistentVolumeReclaimPolicy: Retain

  nfs:

    server: 192.168.1.100

    path: /var/webroot


---

kind: PersistentVolumeClaim

apiVersion: v1

metadata:

  name: pvc-nfs

spec:

  volumeMode: Filesystem

  accessModes:

  - ReadWriteMany

  resources:

    requests:

      storage: 25Gi


---

kind: ConfigMap

apiVersion: v1

metadata:

  name: nginx-conf

data:

  nginx.conf: |2


    #user  nobody;

    worker_processes  1;


    #error_log  logs/error.log;

    #error_log  logs/error.log  notice;

    #error_log  logs/error.log  info;


    #pid        logs/nginx.pid;



    events {

        worker_connections  1024;

    }



    http {

        include       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  logs/access.log  main;


        sendfile        on;

        #tcp_nopush     on;


        #keepalive_timeout  0;

        keepalive_timeout  65;


        #gzip  on;


        server {

            listen       80;

            server_name  localhost;


            #charset koi8-r;


            #access_log  logs/host.access.log  main;


            location / {

                root   html;

                index  index.html index.htm;

            }


            #error_page  404              /404.html;


            # redirect server error pages to the static page /50x.html

            #

            error_page   500 502 503 504  /50x.html;

            location = /50x.html {

                root   html;

            }


            # proxy the PHP scripts to Apache listening on 127.0.0.1:80

            #

            #location ~ \.php$ {

            #    proxy_pass   http://127.0.0.1;

            #}


            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

            #

            location ~ \.php$ {

                root           html;

                fastcgi_pass   127.0.0.1:9000;

                fastcgi_index  index.php;

                include        fastcgi.conf;

            }


            # deny access to .htaccess files, if Apache's document root

            # concurs with nginx's one

            #

            #location ~ /\.ht {

            #    deny  all;

            #}

        }



        # another virtual host using mix of IP-, name-, and port-based configuration

        #

        #server {

        #    listen       8000;

        #    listen       somename:8080;

        #    server_name  somename  alias  another.alias;


        #    location / {

        #        root   html;

        #        index  index.html index.htm;

        #    }

        #}



        # HTTPS server

        #

        #server {

        #    listen       443 ssl;

        #    server_name  localhost;


        #    ssl_certificate      cert.pem;

        #    ssl_certificate_key  cert.key;


        #    ssl_session_cache    shared:SSL:1m;

        #    ssl_session_timeout  5m;


        #    ssl_ciphers  HIGH:!aNULL:!MD5;

        #    ssl_prefer_server_ciphers  on;


        #    location / {

        #        root   html;

        #        index  index.html index.htm;

        #    }

        #}


    }


---

kind: Deployment

apiVersion: apps/v1

metadata:

  name: webnginx

spec:

  selector:

    matchLabels:

      myapp: nginx

  replicas: 3

  template:

    metadata:

      labels:

        myapp: nginx

    spec:

      volumes:

      - name: nginx-php

        configMap: 

          name: nginx-conf

      - name: log-data

        hostPath:

          path: /var/log/weblog

          type: DirectoryOrCreate

      - name: website

        persistentVolumeClaim:

          claimName: pvc-nfs

      containers:

      - name: nginx

        image: 192.168.1.100:5000/myos:nginx

        volumeMounts:

        - name: nginx-php

          subPath: nginx.conf

          mountPath: /usr/local/nginx/conf/nginx.conf

        - name: log-data

          mountPath: /usr/local/nginx/logs

        - name: website

          mountPath: /usr/local/nginx/html

        ports:

        - protocol: TCP

          containerPort: 80

      - name: php-backend

        image: 192.168.1.100:5000/myos:php-fpm

        volumeMounts:

        - name: website

          mountPath: /usr/local/nginx/html

      restartPolicy: Always


---

kind: Service

apiVersion: v1

metadata:

  name: webcluster

spec:

  ports:

  - protocol: TCP

    port: 80

    targetPort: 80

  selector:

    myapp: nginx

  type: ClusterIP


---

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

  name: myweb

  annotations:

    kubernetes.io/ingress.class: "nginx"

spec:

  backend:

    serviceName: webcluster

    servicePort: 80

[root@master ~]# kubectl apply -f webcluster.yaml 

persistentvolume/pv-nfs created

persistentvolumeclaim/pvc-nfs created

configmap/nginx-conf created

deployment.apps/webnginx created

service/webcluster created

ingress.extensions/myweb created

[root@master ~]# kubectl get pod

NAME                       READY   STATUS    RESTARTS   AGE

webnginx-647877b59-hdb64   2/2     Running   0          11s

webnginx-647877b59-ljb6g   2/2     Running   0          11s

webnginx-647877b59-rqmdr   2/2     Running   0          11s

[root@master ~]# kubectl get ingresses

NAME    HOSTS   ADDRESS        PORTS   AGE

myweb   *       192.168.1.31   80      17s



PHA集群

[root@master ~]# vim myhpa.yaml 

---

apiVersion: apps/v1

kind: Deployment

metadata:

  name: myweb

spec:

  selector:

    matchLabels:

      app: apache

  replicas: 1

  template:

    metadata:

      labels:

        app: apache

    spec:

      containers:

      - name: apache

        image: 192.168.1.100:5000/myos:httpd

        ports:

        - containerPort: 80

        resources:

          requests:

            cpu: 200m

      restartPolicy: Always


---

apiVersion: v1

kind: Service

metadata:

  name: web-service

spec:

  ports:

  - protocol: TCP

    port: 80

    targetPort: 80

  selector:

    app: apache

  type: ClusterIP


---

apiVersion: extensions/v1beta1

kind: Ingress

metadata:

  name: my-app

  annotations:

    kubernetes.io/ingress.class: "nginx"

spec:

  backend:

    serviceName: web-service

    servicePort: 80


---

apiVersion: autoscaling/v1

kind: HorizontalPodAutoscaler

metadata:

  name: myweb

spec:

  minReplicas: 1

  maxReplicas: 3

  scaleTargetRef:

    apiVersion: apps/v1

    kind: Deployment

    name: myweb

  targetCPUUtilizationPercentage: 50

[root@master ~]# kubectl apply -f myhpa.yaml

[root@master ~]# kubectl get hpa

NAME    REFERENCE          TARGETS   MINPODS   MAXPODS   REPLICAS   AGE

myweb   Deployment/myweb   0%/50%    1         3         1          15m


nginx+php部署图例 HPA集群的评论 (共 条)

分享到微博请遵守国家法律