kubernetes-subpath用法(把文件挂载在已存在的目录下,不覆盖原目录)

以ngxin的配置文件为例子:

nginx-deployment.yaml :

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-cm
data:
  nginx.conf: |
    user  nginx;
    worker_processes  4;
    worker_rlimit_nofile 48127;
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;    
    events {
        multi_accept        on;
        worker_connections  16384;
        use                 epoll;
    }    
    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;
        server {
          listen       80;
          server_name  localhost;
          location / {
              root   /usr/share/nginx/html;
              index  index.html index.htm;
          }
          error_page   500 502 503 504  /50x.html;
          location = /50x.html {
              root   /usr/share/nginx/html;
          }
          location /nginx_status {
              #allow 127.0.0.1;
              #deny all;
              access_log off;
              stub_status on;
          }
        }
    } 

---

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:
        kubernetes.io/hostname: 192.168.5.86
      containers:
        - name: nginx
          image: nginx:latest
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - mountPath: /etc/nginx/nginx.conf
              name: nginx-config
              subPath: etc/nginx/nginx.conf
          ports:
            - containerPort: 80
      volumes:
        - name: nginx-config
          configMap:
            name: nginx-cm
            items:
            - key: nginx.conf
              path: etc/nginx/nginx.conf

创建pod:

kubectl create -f ./nginx-deployment.yaml

查看nginx的目录的旧文件是否还在:

$ kubectl exec -it nginx-6b76cd9c54-fb2q8 -- ls /etc/nginx/
conf.d		koi-utf  mime.types  nginx.conf   uwsgi_params
fastcgi_params	koi-win  modules     scgi_params  win-utf

查看nginx.conf是否被更新了:

$ kubectl exec -it nginx-6b76cd9c54-fb2q8 -- cat /etc/nginx/nginx.conf
user  nginx;
worker_processes  4;
worker_rlimit_nofile 48127;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;    
events {
    multi_accept        on;
    worker_connections  16384;
    use                 epoll;
}    
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;
    server {
      listen       80;
      server_name  localhost;
      location / {
          root   /usr/share/nginx/html;
          index  index.html index.htm;
      }
      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
          root   /usr/share/nginx/html;
      }
      location /nginx_status {
          #allow 127.0.0.1;
          #deny all;
          access_log off;
          stub_status on;
      }
    }
} 

参考:

https://kubernetes.io/docs/concepts/storage/volumes/#using-subpath

你可能感兴趣的:(kubernetes)