k8s(8)—— k8s存储之ConfigMap
目录一、ConfigMap简介1、ConfigMap的概念二、Cofigmap配置管理创建Cofigmap的方式有4种1、使用字面值创建2、使用文件进行创建3、使用目录进行创建4、编写cofigmap的yaml文件年创建三、使用configmap设置环境变量(一)、方法一:1、创建yaml文件2、查看更新的情况(二)、方...
目录
一、ConfigMap简介
- 1、ConfigMap的概念
二、Cofigmap配置管理
创建Cofigmap的方式有4种
- 1、使用字面值创建
- 2、使用文件进行创建
- 3、使用目录进行创建
- 4、编写cofigmap的yaml文件年创建
三、使用configmap设置环境变量
(一)、方法一:
- 1、创建yaml文件
- 2、查看更新的情况
(二)、方法二:
- 1、修改yaml文件的配置内容
- 2、测试
(三)、直接指定答应的key对应的值
- 1、修改yaml文件
- 2、测试
(四)通过数据卷使用configmap
- 1、查看官网信息
- 2、创建yaml文件
四、configmap热更新
(一)、热更新的验证
1、创建yaml文件
2、修改文件cm4-config文件的内容查看更新
(二)、configmap热更新后,并不会触发相关的pod的滚动更新,需要手动触发:
1、创建nginx.conf文件 nginx端口服务的文件
2、以nginx.config 来创建configmap
3、要使yaml文件生效改变 pod的更新需要手动更新
一、ConfigMap简介
- 1、ConfigMap的概念
ConfigMap 资源提供了向 Pod 注入配置数据的方法。 ConfigMap 对象中存储的数据可以被 configMap 类型的卷引用,然后被应用到 Pod 中运行的容器化应用。
当引用 configMap 对象时,你可以简单的在 Volume 中通过它名称来引用。 还可以自定义 ConfigMap 中特定条目所要使用的路径。 例如,要将名为 log-config 的 ConfigMap 挂载到名为 configmap-pod 的 Pod 中
cofigmap 配置管理
Cofigmap由于保存配置数据,以键值对形式存储
Cofigmap资源提供了向Pod注入配置数据的方式
旨在让镜像和配置年文件解析藕,以便实现景象的可移植性和可复制性
典型的使用场所:
填充环境变量的值
设置容器内的命令行的参数
填充卷的配置文件
官网信息:https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/
一、Cofigmap配置管理
创建Cofigmap的方式有4种
- 1、使用字面值创建
- 2、使用文件进行创建
- 3、使用目录进行创建
- 4、编写cofigmap的yaml文件年创建
1、使用字面创建
[kubeadm@server1 ~]$ mkdir configmap ##创建目录(创建的目录是为了区分其他的实验)
[kubeadm@server1 ~]$
[kubeadm@server1 ~]$ cd configmap/
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl create configmap cm1-config --from-literal=key1=config1 --from-literal=key2=config2 ##创建configmap
configmap/cm1-config created
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl get cm ##查看是否创建成功
NAME DATA AGE
cm1-config 2 12s
1.2、查看是生成的configmap文件信息
[kubeadm@server1 configmap]$ kubectl describe cm cm1-config ##查看创建的日志
Name: cm1-config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
key1: ##键值
----
config1 ##键值对应的值
key2:
----
config2
Events: <none>
[kubeadm@server1 configmap]$
2、使用文件创建
kubeadm@server1 configmap]$ kubectl create configmap my-config-2 --from-file=/etc/resolv.conf ##使用/etc/resolv.conf 文件进行创建
configmap/my-config-2 created
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl describe cm my-config-2 ##查看创建的结果的
Name: my-config-2
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
resolv.conf: ##键值
----
nameserver 114.114.114.114 ##对应的内容
Events: <none>
[kubeadm@server1 configmap]$
3、使用目录创建
目录中文件名为key,文件的内容为value
[kubeadm@server1 configmap]$ cp /etc/passwd . ##将文件拷贝到当前目录下
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ ls
passwd resolv.conf
[kubeadm@server1 configmap]$ cp /etc/fstab . ##拷贝fstab到当前的目录下
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ ls
fstab passwd resolv.conf
[kubeadm@server1 configmap]$ kubectl create configmap cm3-config --from-file=. ##以当前的目录中的文件创建configmap
configmap/cm3-config created
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl describe cm cm3-config ##查看cm3的创建信息
Name: cm3-config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
fstab:
----
#
# /etc/fstab
# Created by anaconda on Tue Dec 17 20:27:01 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 0 0
UUID=66383b38-e7f8-4146-9002-9f37c9251ffd /boot xfs defaults 0 0
#/dev/mapper/rhel-swap swap swap defaults 0 0
passwd:
----
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
----
nameserver 114.114.114.114
Events: <none>
4、编写cofigmap的yaml文件年创建
4.1、配置ConfigMap的yaml文件
[kubeadm@server1 configmap]$ vim cm1.yaml
[kubeadm@server1 configmap]$ vim cm1.yaml
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl create -f cm1.yaml ##创建ConfigMap文件
^[[3~configmap/cm4-config created
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl get cm ##查看创建的cm
NAME DATA AGE
cm1-config 2 <invalid>
cm2-config 1 41m
cm3-config 3 38m
cm4-config 2 14s
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl describe cm cm4-config ##查看创建的日信息
Name: cm4-config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
db_host:
----
172.25.6.250 ##创建对应的键值
db_port:
----
3306 ##创建对应的value值
Events: <none>
[kubeadm@server1 configmap]$
4.2、测试
三、使用configmap设置环境变量
(一)、方法一:
- 1、创建yaml文件
- 2、查看更新的情况
(二)、方法二:
- 1、修改yaml文件的配置内容
- 2、测试
(三)、直接指定答应的key对应的值
- 1、修改yaml文件
- 2、测试
(四)通过数据卷使用configmap
- 1、查看官网信息
- 2、创建yaml文件
(一)、方法一一一导入环境变量
(二)、批量导入环境变量
(三)、直接导入指定的环境变量
通过环境变量的方式直接转递给pod
通过在pod的命令行下运行的方式
作为volume的方式挂载到pod内
(一)、方法一:
- 1、创建yaml文件
- 2、查看更新的情况
1、创建yaml文件
指导入yaml文件中指定的key值
kubeadm@server1 configmap]$ vim cm2.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod1
spec:
containers:
- name: pod1
image: busybox
command: [ "/bin/sh", "-c", "env" ] ##运行完后直接打印变量
env: ##环境变量
- name: key1 ##key1等于cmc4-confing中取的db_host对应的值
valueFrom:
configMapKeyRef: ##从configMapKeyRef中去取值
name: cm4-config ##取值的服务对象
key: db_host ##在cmc4-confing中取的值对应的key值
- name: key2
valueFrom:
configMapKeyRef:
name: cm4-config
key: db_port
restartPolicy: Never ##不用去重启pod
1.2、测试:
[kubeadm@server1 configmap]$ kubectl create -f cm2.yaml
pod/pod1 created
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl get pod
NAME READY STATUS RESTARTS AGE
pod1 0/1 ContainerCreating 0 5s
[kubeadm@server1 configmap]$ kubectl get pod
NAME READY STATUS RESTARTS AGE
pod1 0/1 Completed 0 21s
[kubeadm@server1 configmap]$ kubectl describe cm cm4-config
Namespace: default
Labels: <none>
Annotations: <none>
Data ##cm-configmap上的内容
====
db_host:
----
172.25.6.250
db_port:
----
3306
Events: <none>
1.3、查看pod1的日志
[kubeadm@server1 configmap]$ kubectl logs pod1
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_SERVICE_PORT=443
HOSTNAME=pod1
SHLVL=1
HOME=/root
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KUBERNETES_PORT_443_TCP_PORT=443
key1=172.25.6.250 ##对应文件中的内容
KUBERNETES_PORT_443_TCP_PROTO=tcp
key2=3306 ##对应的是文件中cm4-config中的值已经被注入po1容器内
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_HOST=10.96.0.1
PWD=/
2、查看更新的情况
修改cm4-config中都内容
[kubeadm@server1 configmap]$ kubectl edit cm cm4-config ##编辑cm4-config
加入:db_name: westos
2.2、查看更新的情况
[kubeadm@server1 configmap]$ kubectl describe cm cm4-config
Name: cm4-config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
db_host:
----
172.25.6.250
db_name:
----
westos ##修改后的内容
db_port:
----
3306
Events: <none>
(更新成功!!!)
(二)、方法二:
- 1、修改yaml文件的配置内容
- 2、测试
批量导入configmap文件中的多有参数:
将cm4-config文件中所有的值导出来
1、修改yaml文件的配置内容
[kubeadm@server1 configmap]$ vim env2-config.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod2
spec:
containers:
- name: pod2
image: busybox
command: [ "/bin/sh", "-c", "env" ]
envFrom: ##导入环境变量
- configMapRef:
name: cm4-config ##从cm4-config中导入环境变量
restartPolicy: Never
[kubeadm@server1 configmap]$ kubectl get pod
NAME READY STATUS RESTARTS AGE
pod1 0/1 Completed 0 5h7m
pod2 0/1 Completed 0 90s ##查看是否生效
[kubeadm@server1 configmap]$
2、测试:
在cm4-config中的所有值已经被导入到pod2中
[kubeadm@server1 configmap]$ kubectl logs pod2
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://10.96.0.1:443
HOSTNAME=pod2
SHLVL=1
db_port=3306
HOME=/root
db_name=westos
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_SERVICE_HOST=10.96.0.1
PWD=/
db_host=172.25.6.250
[kubeadm@server1 configmap]$
(三)、直接指定答应的key对应的值
- 1、修改yaml文件
- 2、测试
1、修改yaml文件
[kubeadm@server1 configmap]$ vim commad-config.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod3
spec:
containers:
- name: pod3
image: busybox
command: [ "/bin/sh", "-c", "echo $(db_host) $(db_port)" ] ##运行取db_host、db_port
envFrom: ##导入环境变量
- configMapRef:
name: cm4-config ##从cm4-config中导入环境变量
restartPolicy: Never
~
[kubeadm@server1 configmap]$ kubectl create -f commad-config.yaml
pod/pod3 created ##创建
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl get pod , ##查看pod是否运行成功
NAME READY STATUS RESTARTS AGE
pod1 0/1 Completed 0 5h31m
pod2 0/1 Completed 0 25m
pod3 0/1 ContainerCreating 0 4s
2、测试:
(之间打印文件中对应的configmap中的所有值)
[kubeadm@server1 configmap]$ kubectl logs pod3 ##直接输入从cm4-config中提取的db_host、db_port的值的结果
172.25.6.250 3306
(四)通过数据卷使用configmap
- 1、查看官网信息
- 2、创建yaml文件
查看官网信息:https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/
2、创建yaml文件
[kubeadm@server1 configmap]$ vim volume.config.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod4
spec:
containers:
- name: pod4
image: busybox
command: [ "/bin/sh", "-c", "cat /config/db_host" ] ##在命令行中执行cat /config/db_host的命令
volumeMounts:
- name: config-volume
mountPath: /config ##挂接cm4-config到/config
volumes:
- name: config-volume
configMap: ##要挂载的config-volume卷来自于special-config
name: cm4-config
restartPolicy: Never ##不用重启
数据提取的过程直接把cm4-config 挂载到 /config下 然后提取db_host
2.2、创建configmap、查看是否创建成功
[kubeadm@server1 configmap]$ kubectl create -f volume.config.yaml ##创建
pod/pod4 created
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl get pod ##查看pod是否成功运行
NAME READY STATUS RESTARTS AGE
pod1 0/1 Completed 0 5h54m
pod2 0/1 Completed 0 48m
pod3 0/1 Completed 0 22m
pod4 0/1 ContainerCreating 0 9s
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl get pod
NAME READY STATUS RESTARTS AGE
pod1 0/1 Completed 0 5h54m
pod2 0/1 Completed 0 48m
pod3 0/1 Completed 0 23m
pod4 0/1 Completed 0 16s
[kubeadm@server1 configmap]$
2.3、测试:
[kubeadm@server1 configmap]$ kubectl logs pod4
172.25.6.250
四、configmap热更新
(一)、热更新的验证
- 1、创建yaml文件
- 2、修改文件cm4-config文件的内容查看更新
(二)、configmap热更新后,并不会触发相关的pod的滚动更新,需要手动触发:
- 1、创建nginx.conf文件 nginx端口服务的文件
- 2、以nginx.config 来创建configmap
- 3、要使yaml文件生效改变 pod的更新需要手动更新
3、验证方法二:
[kubeadm@server1 configmap]$ kubectl delete -f volume.config.yaml
pod "pod4" deleted
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ vim volume.config.yaml
修改: command: [ "/bin/sh", "-c", "ls /config/" ] ##在命令行中执行列出/config下的目录
[kubeadm@server1 configmap]$ kubectl delete -f volume.config.yaml
pod "pod4" deleted
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ vim volume.config.yaml
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl create -f volume.config.yaml
pod/pod4 created
[kubeadm@server1 configmap]$ kubectl get pod
NAME READY STATUS RESTARTS AGE
pod1 0/1 Completed 0 6h1m
pod2 0/1 Completed 0 55m
pod3 0/1 Completed 0 29m
pod4 0/1 Completed 0 7s
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl logs pod4
db_host
db_name
db_port
[kubeadm@server1 configmap]$
3.2、测试:
4、验证方法三:
列出/config下所有目录的内容所有kry对应的值
[kubeadm@server1 configmap]$ vim volume.config.yaml
command: [ "/bin/sh", "-c", "cat /config/*" ] ##在命令行中执行列出/config下所有目录的内容
4.2、测试:
[kubeadm@server1 configmap]$ kubectl logs pod4
172.25.6.250 westos 3306
四、configmap热更新
(一)、热更新的验证
1、创建yaml文件
2、修改文件cm4-config文件的内容查看更新
(二)、configmap热更新后,并不会触发相关的pod的滚动更新,需要手动触发:
1、创建nginx.conf文件 nginx端口服务的文件
2、以nginx.config 来创建configmap
3、要使yaml文件生效改变 pod的更新需要手动更新
一般都用在结点的热更新上
(一)、热更新的验证
1、创建yaml文件
[kubeadm@server1 configmap]$ vim hot-config.yaml
apiVersion: apps/v1 ##控制器的版本
kind: Deployment ##控制器的类型
metadata:
name: my-nginx ##控制器的名称
spec:
replicas: 1 ##副本数为1这些pod由集群自动取分配给哪个节点
selector:
matchLabels:
app: nginx ##标签
template: ##模板
metadata: ##pod数据类型
labels:
app: nginx ##标签
spec:
containers: ##pod容器
- name: nginx ##名称
image: nginx ##v2镜像(名称要和仓库里的镜像名称相同)
ports: ##端口
- containerPort: 80 ##监听的端口名称
volumeMounts:
- name: config-volume
mountPath: /config ##挂接cm4-config到/config
volumes:
- name: config-volume
configMap: ##要挂载的config-volume卷来自于special-config
name: cm4-config
1.2、创建并检查pod是否正常运行
[kubeadm@server1 configmap]$ kubectl create -f hot-config.yaml ##创建
deployment.apps/my-nginx created
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl get pod ##查看pod是否运行正常
NAME READY STATUS RESTARTS AGE
my-nginx-5ff649fc5b-c7zs9 1/1 Running 0 75s
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$
1.3、测试:
[kubeadm@server1 configmap]$ kubectl exec my-nginx-5ff649fc5b-c7zs9 ls /config ##查看目录
db_host
db_name
db_port
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl exec my-nginx-5ff649fc5b-c7zs9 ls /config/db_port
/config/db_port
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl exec my-nginx-5ff649fc5b-c7zs9 cat /config/db_port
3306 ##查看db_port的内容
2、修改文件cm4-config文件的内容查看更新
2.1、修改cm4-config中的内容
[kubeadm@server1 configmap]$ kubectl edit cm cm4-config
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
db_host: 172.25.6.250
db_name: westos
db_port: "8888" ##把参数改为8888
kind: ConfigMap
metadata:
creationTimestamp: "2020-03-05T03:14:23Z"
name: cm4-config
namespace: default
resourceVersion: "1605475"
selfLink: /api/v1/namespaces/default/configmaps/cm4-config
uid: 17652f1d-d0d8-47e6-b28d-d94b65702505
2.2、测试:
查看更新的情况
(需要等待一些时间)
[kubeadm@server1 configmap]$ kubectl exec my-nginx-5ff649fc5b-c7zs9 cat /config/db_port
8888 ##参数已经改为8888
(二)、configmap热更新后,并不会触发相关的pod的滚动更新,需要手动触发:
1、创建nginx.conf文件 nginx端口服务的文件
2、以nginx.config 来创建configmap
3、要使yaml文件生效改变 pod的更新需要手动更新
热更新:
updata -> nginx.conf -> reload nginx (一般的更新过程)
文件更新
pod -> 运行command 中的命令 load nginx.conf -> memory(存放到我们的内存中)-> update nginx.conf -> trigger pod(触发文件更新) -> reload nginx
1、创建nginx.conf文件 nginx端口服务的文件
[kubeadm@server1 configmap]$ vim nginx.conf
server {
listen 8000; ##修改nginx访问的配置文件
server_name _;
location / {
root /usr/share/nginx/html;
index index.html index.html;
}
}
1.2、拉取一个bash查看nginx的配置信息
~
[kubeadm@server1 configmap]$ kubectl exec my-nginx-5ff649fc5b-c7zs9 -it bash ##进入配置文件的bash中
root@my-nginx-5ff649fc5b-c7zs9:/#
root@my-nginx-5ff649fc5b-c7zs9:/# cd /etc/nginx/
root@my-nginx-5ff649fc5b-c7zs9:/etc/nginx#
root@my-nginx-5ff649fc5b-c7zs9:/etc/nginx# ls
conf.d fastcgi_params koi-utf koi-win mime.types modules nginx.conf scgi_params uwsgi_params win-utf
root@my-nginx-5ff649fc5b-c7zs9:/etc/nginx#
root@my-nginx-5ff649fc5b-c7zs9:/etc/nginx# cd conf.d/ ##端口文件存放的目录
root@my-nginx-5ff649fc5b-c7zs9:/etc/nginx/conf.d#
root@my-nginx-5ff649fc5b-c7zs9:/etc/nginx/conf.d# ls
default.conf
root@my-nginx-5ff649fc5b-c7zs9:/etc/nginx/conf.d# cat default.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
root@my-nginx-5ff649fc5b-c7zs9:/etc/nginx/conf.d#
1.3、编辑yaml文件
[kubeadm@server1 configmap]$ vim hot-config.yaml
apiVersion: apps/v1 ##控制器的版本确定
kind: Deployment ##控制器的类型
metadata:
name: my-nginx ##控制器的名称
spec:
replicas: 1 ##副本数为1这些pod由集群自动取分配给哪个节点
selector:
matchLabels:
app: nginx ##标签
template: ##模板
metadata: ##pod数据类型
labels:
app: nginx ##标签
spec:
containers: ##pod容器
- name: nginx ##名称
image: nginx ##v2镜像(名称要和仓库里的镜像名称相同)
volumeMounts:
- name: config-volume
mountPath: /etc/nginx/conf.d ##nginx默认的端口存放的路径
volumes:
- name: config-volume
configMap: ##要挂载的config-volume卷来自于special-config
name: nginx-config ##配置成功端口会成功的放在/etc/nginx/conf.d 之后
2、以nginx.config 来创建configmap
[kubeadm@server1 configmap]$ kubectl create configmap nginx.config --from-file=nginx.conf ##通过文件的形式来创建configmap
configmap/nginx.conf created
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl get pod
No resources found in default namespace.
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ kubectl get cm
NAME DATA AGE
nginx.config 1 15s
[kubeadm@server1 configmap]$
2.2、查看创建的configmap的日志信息
[kubeadm@server1 configmap]$ kubectl describe cm nginx.config
Name: nginx.conf
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
nginx.conf:
----
server {
listen 8000;
server_name _;
location / {
root /usr/share/nginx/html;
index index.html index.html;
}
}
Events: <none>
[kubeadm@server1 configmap]$
2.3、创建confgimap
[kubeadm@server1 configmap]$ kubectl create -f hot-config.yaml
deployment.apps/my-nginx created
[kubeadm@server1 configmap]$
2.4、测试:
查看nginx.conf文件是否被放到 /etc/nginx/conf.d/路径下
[kubeadm@server1 configmap]$ kubectl exec my-nginx-7dc8d7b68d-cm24d cat /etc/nginx/conf.d/nginx.conf ##查看nginx.conf 文件是否已经被存放到 /etc/nginx/conf.d/
server {
listen 8000;
server_name _;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
3、要使yaml文件生效改变 pod的更新需要手动更新
出现这种情况的原因是ongfigmap 热更新后 并不是触发相关的Pod滚动更新,需要手动触发
每次通过修改“version/config” 来触发Pod的滚动更新
使用configmap挂载环境变量是不会更新的
3.1、修改nginx-config配置文件中的端口为“8080”
[kubeadm@server1 configmap]$ kubectl edit cm nginx-config ##修改配置文件
****
#apiVersion: v1
#data:
# nginx.conf: |
# server {
listen 8080; ##将端口改为8080
# server_name _;
# location / {
# root /usr/share/nginx/html;
# index index.html index.htm;
# }
# }
3.2、测试:
查看更新因为系统的原因所以会比较慢
3.3、访问8000端口(8000端口依然可以访问说明更新只是热更新,并没有触发pod的更新)
[kubeadm@server1 configmap]$ curl 10.244.2.77:8000
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
3.4、访问8080端口(访问失败)
[kubeadm@server1 configmap]$ curl 10.244.2.77:8080
curl: (7) Failed connect to 10.244.2.77:8080; Connection refused
[kubeadm@server1 configmap]$
3.5、如果需要触发pod更新,则需要
3.5.1、输入手动更新的命令:
[kubeadm@server1 configmap]$ kubectl patch deployments.apps my-nginx --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20200223"}}}}}' ##输入的命令其实就是在修改yaml文件中的内容
3.5.2、会触发pod的更新
[kubeadm@server1 configmap]$ kubectl get pod
NAME READY STATUS RESTARTS AGE
my-nginx-657cf55d9c-6nzdn 0/1 ContainerCreating 0 20s ##新更新的pod
my-nginx-7dc8d7b68d-cm24d 1/1 Running 0 45m ##原来运行的pod
3.6、测试:
[kubeadm@server1 configmap]$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-nginx-657cf55d9c-6nzdn 1/1 Running 0 4m1s 10.244.1.65 server4 <none> <none> ##pod更新相应的ip也更新
[kubeadm@server1 configmap]$
[kubeadm@server1 configmap]$ curl 10.244.1.65:8080 ##验证8080端口是否被成功的更新
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
测试发现pod已经更新再次访问时可以访问到8080端口的后端
更多推荐
所有评论(0)