最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ConfigMap掛載與Subpath在Nginx容器中的應用小結(jié)

 更新時間:2024年03月06日 09:00:24   作者:華為云開發(fā)者聯(lián)盟  
configmap可以通過ENV環(huán)境變量和文件兩種方式掛載到容器中,修改configmap后容器中對應的ENV環(huán)境變量不會更新,將配置文件nginx.conf以configmap文件的方式掛載到容器中,本文介紹ConfigMap掛載與Subpath在Nginx容器中的應用小結(jié),感興趣的朋友一起看看吧

背景

nginx.conf通過configmap文件形式掛載到容器內(nèi),可以更加方便的修改nginx.conf配置

方案簡介

將配置文件nginx.conf以configmap文件的方式掛載到容器中。為了更通用,可以將使用主nginx.conf include 指定xx.conf方式,主nginx.conf作為一個cm,具體xx.conf對應一個cm

configmap可以通過ENV環(huán)境變量和文件兩種方式掛載到容器中,修改configmap后容器中對應的ENV環(huán)境變量不會更新;修改configmap后容器中對應的file會自動更新,如果以subpath方式掛載文件,文件內(nèi)容不會自動更新

將nginx.conf作為configmap掛載到容器中

1.創(chuàng)建configmap

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config
  namespace: default
data:
  nginx.conf: |+
    user  nginx;
    worker_processes  8;
    error_log  /var/log/nginx/error.log warn;
    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;
        keepalive_timeout  65;
        #gzip  on;
        include /etc/nginx/conf.d/*.conf;
    }
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-server-config
  namespace: default
data:
  server1.conf: |+
    server {
            listen       80;
            server_name  server1.com;
            location / {
                root   /usr/share/nginx/html/;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
  server2.conf: |+
    server {
            listen       81;
            server_name  server2.com;
            location / {
                root   /usr/share/nginx/html/;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }

2.部署nginx業(yè)務使用對應的cm

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    version: v1
  name: test-reload
  namespace: default
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: test-reload
  template:
    metadata:
       labels:
        app: test-reload
    spec:
      containers:
      - image: nginx:latest
        imagePullPolicy: Always
        name: container-1
        volumeMounts:
        - mountPath: /etc/nginx/conf.d
          name: vol-168233491311961268
        - mountPath: /etc/nginx/nginx.conf
          name: vol-168249948123126427
          readOnly: true
          subPath: nginx.conf
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: default-secret
      restartPolicy: Always
      volumes:
      - configMap:
          defaultMode: 420
          name: nginx-server-config
        name: vol-168233491311961268
      - configMap:
          defaultMode: 420
          name: nginx-config
        name: vol-168249948123126427

subpath拓展

subpath的作用如下:

  • 避免覆蓋。如果掛載路徑是一個已存在的目錄,則目錄下的內(nèi)容不會被覆蓋。直接將configMap/Secret掛載在容器的路徑,會覆蓋掉容器路徑下原有的文件,使用subpath選定configMap/Secret的指定的key-value掛載在容器中,則不會覆蓋掉原目錄下的其他文件
  • 文件隔離。pod中含有多個容器公用一個日志volume,不同容器日志路徑掛載的到不同的子目錄,而不是根路徑(Subpath目錄會在底層存儲自動創(chuàng)建且權限為777,無需手動創(chuàng)建)

避免覆蓋效果演示

1.創(chuàng)建一個工作負載nginx,并用普通方式掛載configmap配置文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: config
data:
  test-subpath.conf: |+
    test subpath;
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: test
  name: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      volumes:
      - configMap:
          defaultMode: 420
          name: config
        name: vol-168249948123126427
      containers:
      - image: centos:latest
        name: centos
        command:
        - /bin/bash
        args:
        - -c
        - while true;do sleep 1 &&  echo hello;done
        volumeMounts:
        - mountPath: /tmp
          name: vol-168249948123126427

2.使用docker inspect ${容器id}命令查看容器掛載信息,掛載目標為tmp目錄,tmp目錄下原有內(nèi)容被覆蓋

cke_137.png

[root@test-746c64649c-pzztn /]# ls -l /tmp/
total 0
lrwxrwxrwx 1 root root 24 Feb 27 03:02 test-subpath.conf -> ..data/test-subpath.conf

3.創(chuàng)建一個工作負載nginx,并用subpath方式掛載configmap配置文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: config
data:
  test-subpath.conf: |+
    test subpath;
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: test
  name: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      volumes:
      - configMap:
          defaultMode: 420
          name: config
        name: vol-168249948123126427
      containers:
      - image: centos:latest
        name: centos
        command:
        - /bin/bash
        args:
        - -c
        - while true;do sleep 1 &&  echo hello;done
        volumeMounts:
        - mountPath: /tmp/test-subpath.conf
          name: vol-168249948123126427
          subPath: test-subpath.conf

4.使用docker inspect ${容器Id}命令查看容器掛載信息,掛載目標為test-subpath.conf文件,所以tmp目錄下原來的文件不會被覆蓋

[root@test-7b64fd6bb-56lpp /]# ls -l /tmp/
total 12
-rwx------ 1 root root 701 Dec  4  2020 ks-script-esd4my7v
-rwx------ 1 root root 671 Dec  4  2020 ks-script-eusq_sc5
-rw-r--r-- 1 root root  14 Feb 27 03:07 test-subpath.conf

文件隔離演示

1.創(chuàng)建工作負載test,使用hostPath卷類型持久化日志文件

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: test
  name: test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      volumes:
      - hostPath:
          path: /tmp/log   #該路徑必須在節(jié)點上已存在
        name: vol-168249948123126427
      containers:
      - image: centos:latest
        name: centos
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        command:
        - /bin/bash
        args:
        - -c
        - while true;do echo $(POD_NAME) >> /tmp/log/app.log && sleep 900 ;done
        volumeMounts:
        - mountPath: /tmp/log
          name: vol-168249948123126427
          subPathExpr: $(POD_NAME)

2.兩個Pod實例調(diào)度至同一個節(jié)點

[root@test ~]# kubectl get pod -owide -l app=test
NAME                    READY   STATUS    RESTARTS   AGE   IP            NODE           NOMINATED NODE   READINESS GATES
test-69dfc665cd-2nhg5   1/1     Running   0          95s   172.16.4.59   172.16.2.172   <none>           <none>
test-69dfc665cd-z7rsj   1/1     Running   0          77s   172.16.4.25   172.16.2.172   <none>           <none>

3.進入容器內(nèi)查看日志文件

[root@test ~]# kubectl exec -it test-69dfc665cd-2nhg5 bash
[root@test-69dfc665cd-2nhg5 /]# cat /tmp/log/app.log 
test-69dfc665cd-2nhg5
[root@test-69dfc665cd-2nhg5 /]# exit
exit
[root@test ~]# kubectl exec -it test-69dfc665cd-z7rsj bash
[root@test-69dfc665cd-z7rsj /]# cat /tmp/log/app.log 
test-69dfc665cd-z7rsj

4.在節(jié)點上查看掛載路徑,每個Pod的日志文件用目錄進行隔離,目錄名為Pod名稱

[root@172 log]# pwd
/tmp/log
[root@172 log]# ll
total 0
drwxr-xr-x 2 root root 60 Feb 27 15:08 test-69dfc665cd-2nhg5
drwxr-xr-x 2 root root 60 Feb 27 15:09 test-69dfc665cd-z7rsj
[root@172 log]# cat test-69dfc665cd-2nhg5/app.log 
test-69dfc665cd-2nhg5
[root@172 log]# cat test-69dfc665cd-z7rsj/app.log 
test-69dfc665cd-z7rsj

到此這篇關于ConfigMap掛載與Subpath在Nginx容器中的應用的文章就介紹到這了,更多相關Subpath Nginx容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解用Nginx搭建CDN服務器方法(圖文)

    詳解用Nginx搭建CDN服務器方法(圖文)

    這篇文章主要介紹了詳解用Nginx搭建CDN服務器方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Nginx中配置HTTP/2協(xié)議的詳細指南

    Nginx中配置HTTP/2協(xié)議的詳細指南

    HTTP/2 是 HTTP 協(xié)議的下一代版本,旨在提高性能、減少延遲并優(yōu)化現(xiàn)代網(wǎng)絡環(huán)境中的通信效率,本文將為大家介紹Nginx配置HTTP/2協(xié)議想詳細步驟,需要的可以參考下
    2025-04-04
  • Nginx服務器中用于生成縮略圖的模塊配置教程

    Nginx服務器中用于生成縮略圖的模塊配置教程

    這篇文章主要介紹了Nginx服務器中用于生成縮略圖的模塊配置教程,包括實時生成縮略圖到硬盤上的方法講解,需要的朋友可以參考下
    2016-01-01
  • nginx配置引發(fā)的403問題解決辦法

    nginx配置引發(fā)的403問題解決辦法

    這篇文章主要介紹了nginx配置引發(fā)的403問題解決辦法的相關資料,需要的朋友可以參考下
    2017-06-06
  • keepalived+nginx實現(xiàn)雙服務器主備方案

    keepalived+nginx實現(xiàn)雙服務器主備方案

    本文主要介紹了使用keepalived和nginx實現(xiàn)雙服務器主備方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-12-12
  • nginx設置X-Frame-Options的字段選擇

    nginx設置X-Frame-Options的字段選擇

    本文主要介紹了X-Frame-Options選項的三個值,包含DENY、SAMEORIGIN和ALLOW-FROM uri,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • 一文搞懂Nginx限流(簡單實現(xiàn))

    一文搞懂Nginx限流(簡單實現(xiàn))

    這篇文章主要介紹了一文搞懂Nginx限流(簡單實現(xiàn)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • nginx中斜杠(‘/‘)的具體使用

    nginx中斜杠(‘/‘)的具體使用

    在Nginx配置的過程中,斜杠(/)經(jīng)常使用到,它們不僅可以區(qū)分不同的路徑,還有其他的作用,本文就詳細的介紹了nginx中斜杠(‘/‘)的具體使用,感興趣的可以了解一下,感興趣的可以了解一下
    2023-10-10
  • angular6+springboot實現(xiàn)前后分離nginx配置

    angular6+springboot實現(xiàn)前后分離nginx配置

    這篇文章主要介紹了angular6+springboot實現(xiàn)前后分離nginx配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Nginx實現(xiàn)會話保持的兩種方式

    Nginx實現(xiàn)會話保持的兩種方式

    在我們做Nginx負載均衡的時候經(jīng)常會遇到會話保持的問題,為了保證同一用戶session會被分配到同一臺服務器上,這時就需要會話保持,本文介紹了兩種方法,感興趣的可以了解一下
    2022-03-03

最新評論

陇南市| 濉溪县| 灵川县| 宁陕县| 湘阴县| 宝坻区| 保定市| 观塘区| 凤庆县| 洪泽县| 红原县| 从化市| 昌江| 鄱阳县| 大洼县| 乌兰县| 宁南县| 桐梓县| 岳阳县| 新巴尔虎右旗| 伽师县| 林西县| 嘉峪关市| 犍为县| 修水县| 阿图什市| 平南县| 四会市| 大同市| 仙桃市| 方城县| 同仁县| 霍山县| 宜君县| 鄂托克前旗| 玛纳斯县| 乐陵市| 鄢陵县| 赫章县| 兴和县| 南昌市|