首页 > 系统相关 >安装Nginx-Web服务

安装Nginx-Web服务

时间:2024-11-07 17:30:13浏览次数:5  
标签:Web vnd name application app Nginx nginx Pod 安装

安装Nginx-Web服务

准备

k8s集群

需要的k8s对象

  • Namespace

    用来隔离对象资源, name=app-namespace-nginx

  • Service

    Service API 是 Kubernetes 的组成部分,它是一种抽象,帮助你将 Pod 集合在网络上公开出去。 每个 Service 对象定义端点的一个逻辑集合(通常这些端点就是 Pod)以及如何访问到这些 Pod 的策略.常用的公开到集群外方式有NodePort,Ingress,些示例中使用NodePort

    name=app-service-nginx

  • Deployment

    用于管理运行一个应用负载的一组 Pod,通常适用于不保持状态的负载 管理运行后端服务Pod

    name=app-deployment-nginx

    • Pod

      实际运行业务服务的一组容器集合,是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元.

      此案例中使用的服务是nginx的Web服务

      name=(由调度器自动生成)

  • ConfigMap

    保存配置文件的对象

    name=app-config-map-nginx

整体描述

使用Deployment 对象管理一组Pod,Pod的实例个数使用 spec:replicas: 2 定义为2个, 
Pod中运行的是一个Nginx服务,它的配置文件是从ConfigMap对象中来,使用方式是通过卷(volume)的形式挂载到Pod内的容器的,
然后使用Service来关联到Deployment管理的Pod,通过NodePort的方法显露到集群外部让client访问

yaml文件

# yaml 文件名称: app-nginx.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: app-namespace-nginx
---
apiVersion: v1
kind: Service
metadata:
  namespace: app-namespace-nginx
  name: app-service-nginx
spec:
  selector:
    app: app-nginx ###关联容器标签
  ports:
    - port: 80 ###容器端口
      targetPort: 80
      nodePort: 30000 ###nodeport映射为30002端口,便于外部主机访问
  type: NodePort ###svc类型为nodeport
---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: app-namespace-nginx
  name: app-deployment-nginx
  # 这里定义的是deployment的labels
  labels:
    app: app-deployment-nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      # 这个labels 定义所创建的 ReplicaSet 如何查找要管理的 Pod,如果跟下面Pod的labels无法匹配,则会报错 spec.template.metadata.labels: Invalid value: map[string]string{"app":"nginx"}: `selector` does not match template `labels`
      app: app-nginx
  template:
    metadata:
      # 这里是Pod将要被打上的labels, 要跟上面 deployment 定义的 ReplicaSet labels 要对应
      labels:
        app: app-nginx
    spec:
      containers:
        - name: nginx
          image: nginx:stable
          imagePullPolicy: IfNotPresent ###镜像拉取策略
          ports:
            - containerPort: 80
          volumeMounts:
            - name: app-volume-nginx-config
              mountPath: /etc/nginx
      volumes:
        - name: app-volume-nginx-config
          configMap:
            #         configMap的名称
            name: app-config-map-nginx
            optional: false # 将环境变量标记为可选
            items:
              # configMap的内的 key
              - key: nginx-nginx-conf
                path: nginx.conf # 容器卷内的文件路径
              - key: nginx-mime-types
                path: mime.types
---
apiVersion: v1
# https://kubernetes.io/zh-cn/docs/concepts/configuration/configmap/
kind: ConfigMap
# data 或 binaryData 字段下面的每个键的名称都必须由字母数字字符或者 -、_ 或 . 组成。
# 在 data 下保存的键名不可以与在 binaryData 下出现的键名有重叠。
# 从 v1.19 开始,你可以添加一个 immutable 字段到 ConfigMap 定义中, 创建不可变更的 ConfigMap。
metadata:
  namespace: app-namespace-nginx
  name: app-config-map-nginx
# 如果 immutable 为 true ,则些配置是不可变的
immutable: false
data:
  nginx-nginx-conf: |
    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;
        #tcp_nopush     on;
        keepalive_timeout  65;
        gzip  on;
        server {
        listen       80;
        server_name  localhost;
           proxy_set_header host $host; # 转发请求时将请求的域名一起转发
           location / {
               root /usr/share/nginx/html;
           }
           error_page   500 502 503 504  /50x.html;
           location = /50x.html {
              root   /usr/share/nginx/html;
           }
        }
        include /etc/nginx/conf.d/*.conf;  
    }
  nginx-mime-types: |
    types {
        text/html                                        html htm shtml;
        text/css                                         css;
        text/xml                                         xml;
        image/gif                                        gif;
        image/jpeg                                       jpeg jpg;
        application/javascript                           js;
        application/atom+xml                             atom;
        application/rss+xml                              rss;
        text/mathml                                      mml;
        text/plain                                       txt;
        text/vnd.sun.j2me.app-descriptor                 jad;
        text/vnd.wap.wml                                 wml;
        text/x-component                                 htc;
        image/avif                                       avif;
        image/png                                        png;
        image/svg+xml                                    svg svgz;
        image/tiff                                       tif tiff;
        image/vnd.wap.wbmp                               wbmp;
        image/webp                                       webp;
        image/x-icon                                     ico;
        image/x-jng                                      jng;
        image/x-ms-bmp                                   bmp;
        font/woff                                        woff;
        font/woff2                                       woff2;
        application/java-archive                         jar war ear;
        application/json                                 json;
        application/mac-binhex40                         hqx;
        application/msword                               doc;
        application/pdf                                  pdf;
        application/postscript                           ps eps ai;
        application/rtf                                  rtf;
        application/vnd.apple.mpegurl                    m3u8;
        application/vnd.google-earth.kml+xml             kml;
        application/vnd.google-earth.kmz                 kmz;
        application/vnd.ms-excel                         xls;
        application/vnd.ms-fontobject                    eot;
        application/vnd.ms-powerpoint                    ppt;
        application/vnd.oasis.opendocument.graphics      odg;
        application/vnd.oasis.opendocument.presentation  odp;
        application/vnd.oasis.opendocument.spreadsheet   ods;
        application/vnd.oasis.opendocument.text          odt;
        application/vnd.openxmlformats-officedocument.presentationml.presentation pptx;
        application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
        application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
        application/vnd.wap.wmlc                         wmlc;
        application/wasm                                 wasm;
        application/x-7z-compressed                      7z;
        application/x-cocoa                              cco;
        application/x-java-archive-diff                  jardiff;
        application/x-java-jnlp-file                     jnlp;
        application/x-makeself                           run;
        application/x-perl                               pl pm;
        application/x-pilot                              prc pdb;
        application/x-rar-compressed                     rar;
        application/x-redhat-package-manager             rpm;
        application/x-sea                                sea;
        application/x-shockwave-flash                    swf;
        application/x-stuffit                            sit;
        application/x-tcl                                tcl tk;
        application/x-x509-ca-cert                       der pem crt;
        application/x-xpinstall                          xpi;
        application/xhtml+xml                            xhtml;
        application/xspf+xml                             xspf;
        application/zip                                  zip;
        application/octet-stream                         bin exe dll;
        application/octet-stream                         deb;
        application/octet-stream                         dmg;
        application/octet-stream                         iso img;
        application/octet-stream                         msi msp msm;
        audio/midi                                       mid midi kar;
        audio/mpeg                                       mp3;
        audio/ogg                                        ogg;
        audio/x-m4a                                      m4a;
        audio/x-realaudio                                ra;
        video/3gpp                                       3gpp 3gp;
        video/mp2t                                       ts;
        video/mp4                                        mp4;
        video/mpeg                                       mpeg mpg;
        video/quicktime                                  mov;
        video/webm                                       webm;
        video/x-flv                                      flv;
        video/x-m4v                                      m4v;
        video/x-mng                                      mng;
        video/x-ms-asf                                   asx asf;
        video/x-ms-wmv                                   wmv;
        video/x-msvideo                                  avi;
    }
---

启动和访问

# 启动
kubectl app -f  app-nginx.yaml 
# 查看 Service,Pod 等资源对象是否正常
# 注意所有的pod要是Running状态 ,service的port正常显露出去
kubectl -n app-namespace-nginx get all
NAME                                       READY   STATUS    RESTARTS   AGE
pod/app-deployment-nginx-687fbb7db-9dfbd   1/1     Running   0          113m
pod/app-deployment-nginx-687fbb7db-rjpgw   1/1     Running   0          113m

NAME                        TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/app-service-nginx   NodePort   10.233.11.138   <none>        80:30000/TCP   32h

NAME                                   READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/app-deployment-nginx   2/2     2            2           32h

NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/app-deployment-nginx-687fbb7db   2         2         2       113m
replicaset.apps/app-deployment-nginx-8cc7b775f   0         0         0       32h
# 访问 任意节点的宿主机IP:30000就可以访问 
curl http://宿主机IP:30000/

标签:Web,vnd,name,application,app,Nginx,nginx,Pod,安装
From: https://www.cnblogs.com/xysgo/p/18533647

相关文章

  • nginx 部署2个相同的vue
    起因:最近遇到一个问题,在前端用nginx部署vue,发现如果前端有改动,如果不适用热更新,而是直接复制项目过去,会404因此想到用nginx负载两套相同vue项目,然后一个个复制vue项目就可以了。 废话不多:一在nginx下创建两个vue的路径 二修改nginx的配置文件worker_processes......
  • Linxu 安装 Redis
    1、下载redis官网地址:https://redis.io/downloads/#redis-stack-downloads或wget直接获取:wgethttps://download.redis.io/redis-stable.tar.gz2、安装(不清楚linux命令的可以自行查询,make编译源文件,makeinstall安装)1#mkdir/usr/local/redis2#tarxfredis-stable.ta......
  • Adobe Premiere Pro(PR)软件下载与详细的安装步骤(附百度网盘链接)
    目录AdobePremierePro获取安装包AdobePremierePro安装装步骤第一步:解压并双击setup.exe第二步:选择安装路径或者使用默认路径第三步:等待安装第四步:安装成功,打开 第五步:测试并创建新项目AdobePremierePro获取安装包百度链接AdobePremierePro安装装步骤......
  • 深入解析 WKWebView 的 didFinish 回调时机:页面加载与异步操作的处理
    在iOS开发中,我们经常会用WKWebView来加载和展示H5页面。通常,开发者会在WKWebView的didFinish方法中处理页面加载完成后的逻辑,例如更新UI或执行后续操作。然而,didFinish的触发时机并不总是如我们所期待,它并不会等待所有异步操作(如AJAX请求、图片加载等)完成后再执行......
  • blockchain | web3.py交互模板
    blockchain|web3.py交互模板exp:fromweb3importWeb3fromweb3.middlewareimportSignAndSendRawMiddlewareBuilderimportjsonw3=Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))ifnotw3.is_connected(): print('connerr') exit(-1)......
  • docker安装配置dnsmasq
    docker下载安装参考:docker安装、卸载、配置、镜像如果是低版本的额ubuntu,比如ubuntu16.04.7LTS,为了加快下载速度,参考:Ubuntu16.04LTS安装Docker。docker安装dnsmasq下载dnsmasq镜像首先镜像我们可以选择带web页面的,也可选择不带的,这里选择带web也免的,方便不懂技术的人配置。dock......
  • 95_api_intro_websitetools_readability
    网页可读内容抽取API数据接口智能提取文章关键元素信息,智能抽取,多种元素信息。1.产品功能智能提取网页可阅读内容;提供网页可阅读内容的HTML代码;支持传递网页HTML或网页URL参数;支持多种元素信息抽取,包括文章标题、作者、文字方向、语言、内容、内容(不包含HTML标......
  • 89_api_intro_websitetools_whois
    域名Whois查询API数据接口多类型域名支持,精准Whois数据,实时数据。1.产品功能支持国际、国内域名Whois查询;每小时定时更新基础数据库;提供精准、高效的Whois查询;返回可查询最详细的域名相关信息;秒级查询性能,支持高并发;数据持续更新与维护;全接口支持HTTPS(TLS......
  • kservert安装部署
    1.版本要求KubernetesVersionRecommendedIstioVersion1.271.18,1.191.281.19,1.201.291.20,1.212.安装istio,certmanager(master1)#安装istio wgethttps://github.com/istio/istio/releases/download/1.23.3/istioctl-1.23.3-linux-a......
  • 82_api_intro_websitetools_favicon
    获取任意站点标题与图标API接口解析站点的title与favicon。1.产品功能支持获取任意站点的标题和favicon;返回的favicon为站点链接;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面兼容AppleATS;全国多节点CDN部署;接口极速响应,多台服务器构建API接口负载......