Kubernetes 的配置资源 ConfigMap(02部分)

作者设置:由于当前各个常用镜像站无法正常代理下载镜像,这篇实验中所用到的镜像建议先从网络下载获取再导入到私仓使用,

或私信后台回复:9521 获取~ ~

目录描述

  • Kubernetes常见的配置资源介绍

  • ConfigMap介绍说明

  • ConfigMap创建方式

  • ConfigMap使用方式

  • ConfigMap实践案例

五、ConfigMap 实践案例

实验环境:

单master+双node,操作系统Ub22.04(live-server),Kubernetes v1.25

5.1 操作示范: env 变量

#查看Pod默认的变量命令格式:
kubectl exec -it [PODNAME] -- env 

#这里借用前面搭建时的demoapp配置文件,查看默认变量
root@master1ha1:~# kubectl exec -it demoapp-75586749f8-pmbhf -n default -- env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=demoapp-75586749f8-pmbhf
TERM=xterm
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
DEMOAPP_PORT_80_TCP_PORT=80
DEMOAPP_PORT_80_TCP_ADDR=10.105.4.244
KUBERNETES_SERVICE_PORT=443
DEMOAPP_PORT_80_TCP=tcp://10.105.4.244:80
KUBERNETES_PORT_443_TCP_PROTO=tcp
DEMOAPP_SERVICE_HOST=10.105.4.244
DEMOAPP_SERVICE_PORT=80
DEMOAPP_SERVICE_PORT_80_80=80
DEMOAPP_PORT_80_TCP_PROTO=tcp
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PORT=443
DEMOAPP_PORT=tcp://10.105.4.244:80
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT=tcp://10.96.0.1:443
DEPLOYENV=Production
RELEASE=Stable
PS1=[\u@\h \w]\$ 
HOME=/root

#创建配置文件
root@master1ha1:~# vim storage-configmap-valueFrom-env.yaml
apiVersion: v1
kind: ConfigMap
metadata:
        name: cm-pod-test
        namespace: default
data:
        host: 0.0.0.0
        port: "8888"

---
apiVersion: v1
kind: Pod
metadata:
        name: configmap-env-demo
spec:
        containers:
        - image: registry.cn-hangzhou.aliyuncs.com/guang_demo/qwer:ik8s-demoappv1.0
          name: pod-test
          env:
          - name: HOST
            valueFrom:
                    configMapKeyRef:
                            name: cm-pod-test
                            key: host
                            optional: true  #true时,如果configmap中的key即使不存在,也不会导致容器无法初始化
          - name: PORT
            valueFrom:
                    configMapKeyRef:
                            name: cm-pod-test
                            key: port
                            optional: false #false时,如果configmap中的key不存在,会导致容器无法初始化

#查询生成信息
root@master1ha1:~# kubectl get pod -A -o wide
NAMESPACE      NAME                                 READY   STATUS                  RESTARTS        AGE   IP                NODE             NOMINATED NODE   READINESS GATES
default        configmap-env-demo                   1/1     Running                 0               75s   10.244.2.27       node2            <none>           <none>

#查看变量,能看到PORT和HOST带入
root@master1ha1:~# kubectl exec -it configmap-env-demo -- env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=configmap-env-demo
TERM=xterm
PORT=8888
HOST=0.0.0.0
KUBERNETES_PORT=tcp://10.96.0.1:443
DEMOAPP_SERVICE_HOST=10.105.4.244
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP_PORT=443
DEMOAPP_PORT=tcp://10.105.4.244:80
DEMOAPP_PORT_80_TCP_PORT=80
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
DEMOAPP_SERVICE_PORT_80_80=80
DEMOAPP_PORT_80_TCP=tcp://10.105.4.244:80
DEMOAPP_PORT_80_TCP_ADDR=10.105.4.244
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
DEMOAPP_SERVICE_PORT=80
DEMOAPP_PORT_80_TCP_PROTO=tcp
DEPLOYENV=Production
RELEASE=Stable
PS1=[\u@\h \w]\$ 
HOME=/root

#查询容器内监听端口存在
root@master1ha1:~# kubectl exec -it configmap-env-demo -- ss -ntl
State              Recv-Q             Send-Q                           Local Address:Port                           Peer Address:Port             Process             
LISTEN             0                  128                                    0.0.0.0:8888                                0.0.0.0:*                         

#拟访问测试成功           
root@master1ha1:~# curl 10.244.2.27:8888
iKubernetes demoapp v1.0 !! ClientIP: 10.244.0.0, ServerName: configmap-env-demo, ServerIP: 10.244.2.27!

#资源删除
[root@master1 yaml]#kubectl delete -f storage-configmap-valueFrom-env.yaml

5.2 操作示范: envFrom 批量导入变量

#配置文件资源定义文件
root@master1ha1:~# kubectl apply -f storage-configmap-simple-envfrom.yaml
apiVersion: v1
kind: ConfigMap
metadata:
        name: cm-nginx
data:
        NGINX_PORT: "98765"
        NGINX_USER: "lcg"

---
apiVersion: v1
kind: Pod
metadata:
        name: configmap-envfrom-test
spec:
        containers:
        - name: configmap-envfrom-test
          image: registry.cn-hangzhou.aliyuncs.com/guang_demo/qwer:ik8s-demoappv1.0
          envFrom:  #指定cm,不指定默认配置default
           - configMapRef:
                   name: cm-nginx  #所有变量从cm中读取

#配置解析:envFrom 方式使用cm里面所有的属性信息,而且变量名是默认的

root@master1ha1:~# kubectl apply -f storage-configmap-simple-envfrom.yaml
configmap/cm-nginx created
pod/configmap-envfrom-test created
root@master1ha1:~# kubectl get cm cm-nginx -o yaml
apiVersion: v1
data:
  NGINX_PORT: "98765"
  NGINX_USER: lcg
kind: ConfigMap
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","data":{"NGINX_PORT":"98765","NGINX_USER":"lcg"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"cm-nginx","namespace":"default"}}
  creationTimestamp: "2024-08-02T11:39:35Z"
  name: cm-nginx
  namespace: default
  resourceVersion: "225895"
  uid: 7c7c28f4-8517-48a9-9617-485570bfa8a3
  
root@master1ha1:~# kubectl describe cm cm-nginx 
Name:         cm-nginx
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
NGINX_USER:
----
lcg
NGINX_PORT:
----
98765

BinaryData
====

Events:  <none>

#查询生成结果
root@master1ha1:~# kubectl get pod -A -o wide
NAMESPACE      NAME                                 READY   STATUS                  RESTARTS        AGE     IP                NODE             NOMINATED NODE   READINESS GATES
default        configmap-envfrom-test               1/1     Running                 0               4m43s   10.244.2.28       node2            <none>           <none>

#验证变量
root@master1ha1:~# kubectl exec -it configmap-envfrom-test -- env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=configmap-envfrom-test
TERM=xterm
NGINX_PORT=98765
NGINX_USER=lcg
DEMOAPP_PORT_80_TCP_PROTO=tcp
DEMOAPP_PORT_80_TCP_ADDR=10.105.4.244
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
DEMOAPP_SERVICE_PORT_80_80=80
DEMOAPP_PORT=tcp://10.105.4.244:80
DEMOAPP_PORT_80_TCP=tcp://10.105.4.244:80
DEMOAPP_PORT_80_TCP_PORT=80
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
DEMOAPP_SERVICE_PORT=80
KUBERNETES_SERVICE_PORT_HTTPS=443
DEMOAPP_SERVICE_HOST=10.105.4.244
DEPLOYENV=Production
RELEASE=Stable
PS1=[\u@\h \w]\$ 
HOME=/root

#删除
root@master1ha1:~# kubectl delete -f storage-configmap-simple-envfrom.yaml
configmap "cm-nginx" deleted
pod "configmap-envfrom-test" deleted

5.3 操作示范: volume 生成配置文件并更新生效

#configmap资源定义
root@master1ha1:~# vim storage-configmap-simple-volume.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-volume
data:
  author: ttc
  file.conf: |
      [app]
       config1
       config2

---
apiVersion: v1
kind: Pod
metadata:
  name: pod-volume-test
spec:
  volumes:
     - name: volume-config  #指定卷名
       configMap:
        name: cm-volume  #指定卷来自cm
  containers:
     - name: demoapp
       image: registry.cn-hangzhou.aliyuncs.com/guang_demo/qwer:ik8s-demoappv1.0
       volumeMounts:
        - name: volume-config  #调用前面定义的卷名
          mountPath: /cmap/  #指定Pod中的挂载点目录

#应用
root@master1ha1:~# kubectl apply -f storage-configmap-simple-volume.yaml 
configmap/cm-volume configured
pod/pod-volume-test created
root@master1ha1:~# kubectl get cm cm-volume -o yaml
apiVersion: v1
data:
  author: ttc  #author成为文件名,ttc成为文件内容
  file.conf: |
    [app]
     config1
     config2
kind: ConfigMap
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","data":{"author":"ttc","file.conf":"[app]\n config1\n config2\n"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"cm-volume","namespace":"default"}}
  creationTimestamp: "2024-08-03T02:32:56Z"
  name: cm-volume
  namespace: default
  resourceVersion: "243088"
  uid: 6ad07c3c-d031-43dc-817d-336a06e404a8
  
root@master1ha1:~# kubectl describe cm cm-volume 
Name:         cm-volume
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
author:
----
ttc
file.conf:
----
[app]
 config1
 config2


BinaryData
====

Events:  <none>
root@master1ha1:~# kubectl get pod -A -o wide
NAMESPACE      NAME                                 READY   STATUS             
default        pod-volume-test                      1/1     Running                 0               3m57s   10.244.2.29       node2            <none>           <none>
#验证配置文件
root@master1ha1:~# kubectl exec -it pod-volume-test -- sh
[root@pod-volume-test /]# ls
bin    cmap   dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
[root@pod-volume-test /]# ls cmap/
author     file.conf
[root@pod-volume-test /]# cat cmap/author 

[root@pod-volume-test /]# cat cmap/file.conf 
[app]
 config1
 config2
#查看一下文件的存储方式
[root@pod-volume-test /]# ls -la cmap
total 12
drwxrwxrwx    3 root     root          4096 Aug  3 02:34 .
drwxr-xr-x    1 root     root          4096 Aug  3 02:34 ..
drwxr-xr-x    2 root     root          4096 Aug  3 02:34 ..2024_08_03_02_34_05.1153618151
lrwxrwxrwx    1 root     root            32 Aug  3 02:34 ..data -> ..2024_08_03_02_34_05.1153618151
lrwxrwxrwx    1 root     root            13 Aug  3 02:34 author -> ..data/author
lrwxrwxrwx    1 root     root            16 Aug  3 02:34 file.conf -> ..data/file.conf
#结果显示:
#这些文件虽然看起来是在挂载的目录下,实际上,它是经过了两层的软连接才能找到真正挂载的文件
cmap --> ..data --> ..YYYY_MM_DD_HH_MM_SS.XXXXXXXX
#通过这种双层软连接的方式,只要容器支持重载技术,那么只需要更改配置文件就可以实现容器应用的变动

#测试在线更新配置文件中的内容
root@master1ha1:~# kubectl edit cm cm-volume 
apiVersion: v1
data:
  author: ttc-v2.0  #修改此行
  file.conf: |
    [app]
     config1
     config2
     config3-update  #新增内容,其余不变
kind: ConfigMap
.....
configmap/cm-volume edited

#等一会儿进入pod可以看到配置文件变化
root@master1ha1:~# kubectl exec -it pod-volume-test -- sh
[root@pod-volume-test /]# ls -la cmap/
total 12
drwxrwxrwx    3 root     root          4096 Aug  3 02:48 .
drwxr-xr-x    1 root     root          4096 Aug  3 02:34 ..
drwxr-xr-x    2 root     root          4096 Aug  3 02:48 ..2024_08_03_02_48_24.694563244
lrwxrwxrwx    1 root     root            31 Aug  3 02:48 ..data -> ..2024_08_03_02_48_24.694563244
lrwxrwxrwx    1 root     root            13 Aug  3 02:34 author -> ..data/author
lrwxrwxrwx    1 root     root            16 Aug  3 02:34 file.conf -> ..data/file.conf
[root@pod-volume-test /]# cat cmap/author 
ttc-v2.0 #回显是更新到了
[root@pod-volume-test /]# cat cmap/file.conf 
[app]
 config1
 config2
 config3-update  #回显是更新到了
#测试结果显示:等待个几秒后,配置信息自动发生了变动,整个过程中,pod对象没有进行重启

#删除
root@master1ha1:~# kubectl delete -f storage-configmap-simple-volume.yaml 

5.4 操作示范利用 configmap volume 实现 Redis 配置

#配置输出
root@master1ha1:~# vim storage-configmap-redis.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: redis-conf
data:
  redis.conf: |
    appendonly yes  #redis的配置,yes表示appendonly功能启用

---
apiVersion: v1
kind: Pod
metadata:
  name: cm-redis-demo
spec:
  volumes:
    - name: redis-data  # 创建volume
      emptyDir: {}
    - name: redis-config
      configMap:
        name: redis-conf
        items:
          - key: redis.conf
            path: redis.conf
  containers:
    - name: redis
      image: redis:6
      command:
        - redis-server
        - "/conf/redis.conf"
      ports:
        - containerPort: 6379
      volumeMounts:
        - name: redis-data
          mountPath: /data  # 把创建好的volume挂载到指定目录
        - name: redis-config
          mountPath: /conf

#应用
root@master1ha1:~# kubectl apply -f storage-configmap-redis.yaml
#检查
root@master1ha1:~# kubectl get cm redis-conf 
NAME         DATA   AGE
redis-conf   1     17s
root@master1ha1:~# kubectl exec -it cm-redis-demo -- ls /data/ /conf
/conf:
redis.conf
/data/:
appendonly.aof
root@master1ha1:~# kubectl exec -it cm-redis-demo -- cat /conf/redis.conf
appendonly yes

#在线修改
root@master1ha1:~# kubectl edit cm redis-conf
apiVersion: v1
data:
 redis.conf: |
   appendonly yes     
   requirepass 123456 #添加此行

#等几秒查看,发现已同步至配置文件, 但是容器内服务不会直接生效,还需要重启redis
root@master1ha1:~# kubectl exec -it cm-redis-demo -- cat /conf/redis.conf
appendonly yes
requirepass 123456

#删除
root@master1ha1:~# kubectl delete -f storage-configmap-redis.yaml

5.5 操作示范: volume 挂载全部内容

#命令行创建CM
#创建nginx的配置信息
root@master1ha1:~# vim nginx/default.conf 
server {
   listen       8080;
   server_name localhost;
    #access_log /var/log/nginx/host.access.log main;
   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;
   }
}

#命令行创建CM
root@master1ha1:~# kubectl create configmap cm-nginx-conf-files --from-file=nginx/
configmap/cm-nginx-conf-files created

#yaml文件
root@master1ha1:~# vim storage-configmap-nginx-file.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm-nginx-index
data:
  index.html: "Nginx Configmap GGBANG!" #单行内容的文件生成configmap
---
apiVersion: v1
kind: Pod 
metadata:
  name: pod-nginx-conf-configmap
spec:
  volumes:
  - name: nginx-conf
    configMap:
      name: cm-nginx-conf-files
      optional: false
  - name: nginx-index
    configMap:
      name: cm-nginx-index
      optional: false
  containers:
  - image: nginx
    name: nginx
    volumeMounts:
    - name: nginx-conf
      mountPath: /etc/nginx/conf.d/
      readOnly: true
    - name: nginx-index
      mountPath: /usr/share/nginx/html/
      readOnly: true
root@master1ha1:~# kubectl apply -f storage-configmap-nginx-file.yaml 
root@master1ha1:~# kubectl get cm
NAME                  DATA   AGE
cm-nginx-conf-files   1      15m
cm-nginx-index        1      10m
kube-root-ca.crt      1      37d

#查看
root@master1ha1:~# kubectl get cm cm-nginx-index -o yaml
apiVersion: v1
data:
  index.html: Nginx Configmap GGBANG!
kind: ConfigMap
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","data":{"index.html":"Nginx Configmap GGBANG!"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"cm-nginx-index","namespace":"default"}}
  creationTimestamp: "2024-08-06T07:33:03Z"
  name: cm-nginx-index
  namespace: default
  resourceVersion: "347108"
  uid: b6cb2141-86a7-49de-9c82-4185dd504aa5

root@master1ha1:~# kubectl get cm cm-nginx-conf-files -o yaml
apiVersion: v1
data:
  default.conf: |
    server {
       listen       8080;
       server_name localhost;
        #access_log /var/log/nginx/host.access.log main;
       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;
       }
    }
kind: ConfigMap
metadata:
  creationTimestamp: "2024-08-06T06:52:29Z"
  name: cm-nginx-conf-files
  namespace: default
  resourceVersion: "343689"
  uid: 8c2f069d-0076-4204-8cec-2053fd683437

root@master1ha1:~# kubectl get pod  -o wide
NAME                       READY   STATUS    RESTARTS     AGE   IP            NODE    NOMINATED NODE   READINESS GATES
pod-nginx-conf-configmap   1/1     Running   0   61d   10.244.1.49   node1   <none>           <none>

#验证配置文件结果
root@master1ha1:~# curl 10.244.1.49:8080
Nginx Configmap GGBANG!

#删除
root@master1ha1:~# kubectl delete -f storage-configmap-nginx-file.yaml 
root@master1ha1:~# kubectl delete configmap cm-nginx-conf-files   

5.6 操作示范:volume挂载 CM 中部分文件

#准备配置文件
root@master1ha1:~# ls nginx/
myserver.conf  myserver-gzip.cfg  myserver-status.cfg
#配置文件
root@master1ha1:~# cat nginx/myserver.conf 
server {
    listen 8888;
    server_name ttc.com;
    include /etc/nginx/conf.d/myserver-*.cfg;
    location / {
        root /usr/share/nginx/html;
    }
}
#子配置文件,注意:文件是以cfg为后缀,不能以conf文件后缀,会导致冲突
root@master1ha1:~# cat nginx/myserver-gzip.cfg 
gzip on;
gzip_comp_level 5;
gzip_proxied     expired no-cache no-store private auth;
gzip_types text/plain text/css application/xml text/javascript;

root@master1ha1:~# cat nginx/myserver-status.cfg 
location /nginx-status {
    stub_status on;
    access_log off;
}

#创建cm
root@master1ha1:~# kubectl create cm cm-nginx-conf-files --from-file=nginx/
configmap/cm-nginx-conf-files created
#清单文件
root@master1ha1:~# vim storage-configmap-nginx-subfile.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: cm-nginx-index
data:
 index.html: "Nginx Sub Configmap Page!\n"
---
apiVersion: v1
kind: Pod
metadata:
 name: pod-cm-nginx-conf
spec:
 volumes:
   - name: nginx-conf
     configMap:
       name: cm-nginx-conf-files
       items:
         - key: myserver.conf
           path: myserver.conf
           mode: 0644
         - key: myserver-status.cfg
           path: myserver-status.cfg
           mode: 0644
         - key: myserver-gzip.cfg
           path: myserver-gzip.cfg
           mode: 0644
       optional: false
   - name: nginx-index
     configMap:
       name: cm-nginx-index
       optional: false
 containers:
   - image: nginx
     name: pod-cm-nginx-conf-container
     volumeMounts:
       - name: nginx-conf
         mountPath: /etc/nginx/conf.d/
         readOnly: true
       - name: nginx-index
         mountPath: /usr/share/nginx/html/
         readOnly: true
#创建资源
root@master1ha1:~# kubectl apply -f storage-configmap-nginx-subfile.yaml
root@master1ha1:~# kubectl get cm
NAME                  DATA   AGE
cm-nginx-conf-files   3      147m
cm-nginx-index        1      7m16s

#查看资源
root@master1ha1:~# kubectl get cm cm-nginx-index -o yaml
apiVersion: v1
data:
  index.html: |
    Nginx Sub Configmap Page!
kind: ConfigMap
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","data":{"index.html":"Nginx Sub Configmap Page!\n"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"cm-nginx-index","namespace":"default"}}
  creationTimestamp: "2024-08-06T07:56:26Z"
  name: cm-nginx-index
  namespace: default
  resourceVersion: "349084"
  uid: 9bd04ee5-cda0-468d-8db9-5a661573e165
 

root@master1ha1:~# kubectl get cm cm-nginx-conf-files -o yaml

#查看容器的文件
root@master1ha1:~# kubectl exec -it pod-cm-nginx-conf -- ls /etc/nginx/conf.d/
myserver-gzip.cfg myserver-status.cfg myserver.conf

#访问验证
root@master1ha1:~# kubectl get pod  -o wide
NAME                       READY   STATUS    RESTARTS     AGE   IP            NODE    NOMINATED NODE   READINESS GATES
pod-nginx-conf-configmap   1/1     Running   2h   18d   10.244.1.51   node2   <none>           <none>
root@master1ha1:~# curl 10.244.1.51:8888
Nginx Sub Configmap Page!

#更新配置
root@master1ha1:~# kubectl edit cm cm-nginx-index
apiVersion: v1
data:
 index.html: |
   Nginx Sub Configmap Page changed! #修改此行

#更新完配置立即生效
root@master1ha1:~# curl 10.244.1.51:8888
Nginx Sub Configmap Page changed!

#更新配置
root@master1ha1:~# #kubectl edit cm cm-nginx-conf-files
 myserver.conf: |
   server {
       listen 6666;  #修改此行
       server_name ttc.com;
#在线更新完配置文件的时间戳没有变化,但文件内容变化了
root@master1ha1:~# kubectl exec -it pod-cm-nginx-conf -- ls -al /etc/nginx/conf.d/

root@master1ha1:~# curl 10.244.1.51:6666
curl: (5) Failed to connect to 10.244.1.51 port 6666: Connection refused

#在线更改的是容器内服务的配置,还需要让服务配置生效
root@master1ha1:~# kubectl exec -it pod-cm-nginx-conf -- nginx -s reload
root@master1ha1:~# curl 10.244.1.51:6666
Nginx Sub Configmap Page changed!

#删除资源
root@master1ha1:~# kubectl delete -f storage-configmap-nginx-subfile.yaml
root@master1ha1:~# kubectl delete cm cm-nginx-conf-files

最后:

有几个使用cm的限制,需要注意一下~

  • 创建限制: ConfigMap必须在Pod之前创建,这表示在定义Pod时引用cm, cm必须已经存在

  • 命名空间限制: ConfigMap受namespace限制,只有和cm处于相同namespace下的Pod才可以引用。如果需要在不同的namespace中共享ConfigMap,需要将其部署到公共的Namespace或者通过其他方式来实现

  • 挂载路径限制: 当使用volumeMounts给Pod挂载ConfigMap时,mountPath只能是目录,而不能是文件,如果容器内该目录下已有文件存在,那么这些文件将会被新挂载的ConfigMap覆盖

  • 大小限制: ConfigMap的字节大小可能因Kubernetes版本和配置不同而有所差异,受到一定的限制,这个我没遇到~

    了解这些限制有助于更好地规划和使用ConfigMap的部署


最后~欢迎关注我! @Linux学习的那些事儿

我的个人资源整理,满满都是干货:可按需访问领取

200T免费资料,持续发布中... icon-default.png?t=N7T8https://vlink.cc/route

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux学习的那些事儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值