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; } } }
实例配置: