创建对应文件

  • nginx.conf
  • deploy.yml
  • service.yml

nginx.conf 内容

location的配置根据需求自行配置

worker_processes  1;
 
##ssl硬件加速。
#用户可以用OpneSSL提供的命令来查看是否有ssl硬件加速设备:openssl engine -t
#ssl_engine device;
 
##守护进程(daemon)。是脱离终端在后台允许的进程。它脱离终端是为了避免进程执行过程中的信息在任何终端上显示。这样一来,进程也不会被任何终端所产生的信息所打断。##
##关闭守护进程的模式,之所以提供这种模式,是为了放便跟踪调试nginx,毕竟用gdb调试进程时最繁琐的就是如何继续跟进fork出的子进程了。##
##如果用off关闭了master_proccess方式,就不会fork出worker子进程来处理请求,而是用master进程自身来处理请求
#daemon off;   #查看是否以守护进程的方式运行Nginx 默认是on 
#master_process off; #是否以master/worker方式工作 默认是on
 
##error日志的设置#
#语法: error_log /path/file level;
#默认: error_log / log/error.log error;
#当path/file 的值为 /dev/null时,这样就不会输出任何日志了,这也是关闭error日志的唯一手段;
#leve的取值范围是debug、info、notice、warn、error、crit、alert、emerg从左至右级别依次增大。
#当level的级别为error时,error、crit、alert、emerg级别的日志就都会输出。大于等于该级别会输出,小于该级别的不会输出。
#如果设定的日志级别是debug,则会输出所有的日志,这一数据量会很大,需要预先确保/path/file所在的磁盘有足够的磁盘空间。级别设定到debug,必须在configure时加入 --with-debug配置项。
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
##pid文件(master进程ID的pid文件存放路径)的路径
#pid        logs/nginx.pid;
 
 
events {
 #仅对指定的客户端输出debug级别的日志: 语法:debug_connection[IP|CIDR]
 #这个设置项实际上属于事件类配置,因此必须放在events{……}中才会生效。它的值可以是IP地址或者是CIRD地址。
 	#debug_connection 10.224.66.14;  #或是debug_connection 10.224.57.0/24
 #这样,仅仅以上IP地址的请求才会输出debug级别的日志,其他请求仍然沿用error_log中配置的日志级别。
 #注意:在使用debug_connection前,需确保在执行configure时已经加入了--with-debug参数,否则不会生效。
	worker_connections  1024;
}

http{
 log_format  main '$http_x_forwarded_for ->  $remote_addr -> $server_addr -> $upstream_addr : $remote_user [$time_local] $status $body_bytes_sent $http_host '
                 '$request_time "$request" "$http_referer" "$http_user_agent" "$request_body" '
                 '$upstream_addr $upstream_status $upstream_response_time';
 server {
    listen       80;
    server_name  127.0.0.1;
    #charset koi8-r;
    access_log  /var/log/nginx/access.log main;

    location / {
        root   /mnt/sciencedb;
    }

    #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   /usr/share/nginx/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;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
 }
}

2.deploy.yml内容

注意 k8s 的命名空间以及 pv pvc 的绑定

---
apiVersion: extensions/v1beta1   
kind: Deployment                 
metadata:                        
  name: sdb-nginx               
  namespace: sdb-test            
spec:                            
  replicas: 1                    
  selector:                      
    matchLabels:
      app: sdb-nginx             
  strategy:
    rollingUpdate:               
      maxSurge: 1               
      maxUnavailable: 1          
  template:                     
    metadata:
      labels:
        app: sdb-nginx           
    spec:                        
      containers:
        - name: sdb-nginx
          image: nginx
          ports:
            - containerPort: 80
          volumeMounts:
           - mountPath: /mnt/sciencedb
             name: sdb
           - mountPath: /var/log/nginx
             name: nginx-log
           - mountPath: /etc/nginx/nginx.conf 
             name: nginx-etc       
             subPath: nginx.conf
      volumes:                    
      - name: sdb           
        persistentVolumeClaim:    
          claimName: sdb-pvc 
      - name: nginx-log
        persistentVolumeClaim:    
          claimName: log-pvc 
      - name: nginx-etc           
        configMap:
         name: nginxconfig       
         items:
          - key: nginx.conf       
            path: nginx.conf

3.service.yml内容

注意修改 k8s 命名空间
nodePort为对外的端口

kind: Service
apiVersion: v1
metadata:
  name: sdb-nginx             
  namespace: sdb-test             
spec:
  selector:
    app: sdb-nginx              
  type: NodePort                 
  ports:                       
    - protocol: TCP              
      port: 80                 
      targetPort: 80             
      nodePort: 90

4.启动nginx

kubectl create configmap nginxconfig --from-file nginx.conf -n sdb-test

kubectl apply -f deploy.yml -n sdb-test

kubectl apply -f service.yml -n sdb-test

5.查看Pods的运行状态即可

kubectl get pods -n sdb-test

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐