最新要闻
- 全球看点:乒乓球技巧训练这就是高手的水准_乒乓球技巧
- Twitter将上线离谱新规:非会员甚至无法参与投票
- 热头条丨九识自动驾驶物流车被曝闯红灯 网友:该怎么记分处罚
- 速读:“网红”威震天在北京环球影城摔了一跤 客服回应:后续演出正常
- 【环球新要闻】一个时代结束了!Wii U和3DS在线商店已正式关闭
- 实时:透明外壳设计!Nothing Ear(2)无线耳机上市 999元
- 环球观焦点:韩国有意解禁福岛水产品?在野党呼吁韩总统表态
- 全球热头条丨想玩必须升级!Steam将于2024年终止对Win7/8/8.1系统支持
- 中国科学家发现月球水库 估计蓄水量多达2700亿吨
- 父母做生意给儿子取名为顾客 当事人:家里有个“顾客”能带来更多顾客
- 世界最高安全标准 我国自研核电华龙一号西部首堆全面建成
- 【时快讯】249元 TP-LINK推出新款玄鸟AX3000路由器:3000Mbps满血Wi-Fi 6
- 即时焦点:郑州大学河南先进技术研究院2023年硕士研究生拟调剂信息公告已公布
- 天天热点评!国服一步步被掏空 暴雪国际服支持微信支付宝:价格全面上涨
- vivo X Fold2将在博鳌亚洲论坛首秀:采用“天圆地方·两仪万象”设计
- 每日资讯:网信办:全面清理虚假摆拍短视频
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
环球观天下!32、K8S-配置管理之Configmap
(相关资料图)
1、基础知识
1.1、场景需求
生产中所有的应用程序中,都涉及到配置文件,而配置文件经常会有变更,比如数据库连接、代码版本号等.最典型场景就是:项目经历开发环境、测试环境、预发布环境、线上环境才能完成发布,而每个环境都有定义其独立的各种配置,这些配置手工操作很繁杂,所以好多大公司专门开发了专用配置管理中心,如百度的disconf等。
1.2、如何为容器化应用提供配置信息?
1、启动容器时,直接向应用程序传递参数,args: []2、将定义好的配置文件复制至镜像之中;3、通过环境变量向容器传递配置数据:有个前提要求,应用得支持从环境变量加载配置信息;4、制作镜像时,使用entrypoint脚本来预处理变量,常见的做法就是使用非交互式编辑工具,将环境变量的值替换到应用的配置文件中;5、基于存储卷向容器传递配置文件;注意: 对于运行容器中的配置改变,需要通过应用程序重载相关配置
1.3、k8s的配置管理
kubernetes作为分布式容器调度平台,肯定会遇到同样的问题,那么遇到这种问题后,我们不可能把资源删除后,重新修改一下,然后在启动生成,这种方法就太繁琐的。kubernetes提供了对pod中容器应用的集中配置管理组件:ConfigMap、Secret、downwardAPI。通过这些组件来实现向pod中的容器中注入配置信息的机制。
1.4、组件简介
1.4.1、Configmap
Configmap是k8s集群中非常重要的一种配置管理资源对象。借助于ConfigMap API向pod中的容器中注入配置信息的机制。ConfigMap不仅仅可以保存单个属性,也可以用来保存整个配置文件或者JSON二进制文件。各种配置属性和数据以 k/v或嵌套k/v 样式 存在到Configmap中 注意: 所有的配置信息都是以明文的方式来进行传递,实现资源配置的快速获取或者更新。
1.4.2、Secret
在k8s集群中,有一些核心的配置属性信息是非常敏感的,所以这些信息在传递的过程中,是不希望外人能够看到的,所以,k8s提供了一种加密场景中的配置管理资源对象 -- secret。它在进行数据传输之前,会对数据进行编码,在数据获取的时候,会对数据进行解码。从而保证整个数据传输过程的安全。注意: 这些数据是根据不同的应用场景,采用不同的加密机制。
1.4.3、DownwardAPI
从严格意义上来说,downwardAPI不是存储卷,它自身就存在。相较于configmap、secret等资源对象需要创建后才能使用,而downwardAPI引用的是Pod自身的运行环境信息,这些信息在Pod启动的时候就存在。downwardAPI 为运行在pod中的应用容器提供了一种反向引用。让容器中的应用程序了解所处pod或Node的一些基础属性信息。
2、Configmap基本使用
2.1、Configmap作用
kubernetes作为分布式容器调度平台,肯定会遇到同样的问题,那么遇到这种问题后,我们不可能把资源删除后,重新修改一下,然后在启动生成,这种方法就太繁琐的。kubernetes提供了对pod中容器应用的集中配置管理组件:ConfigMap。通过ConfigMap来实现,借助于ConfigMap API向pod中的容器中注入配置信息的机制。ConfigMap不仅仅可以保存单个属性,也可以用来保存整个配置文件或者JSON二进制文件。注意: 虽然configmap可以对各种应用程序提供定制配置服务,但是我们不能用它来替代专门的配置文件,我们可以简单的把它理解为Linux系统中的/etc目录,专门用来存储配置文件的目录。
2.2、基本属性
kubectl explain cm binaryData 使用二进制传递数据 data 传递数据注意: 基于data的方式传递信息的话,他会在pod的容器内部生成一个单独的数据文件 数据的表现样式: 普通数据: 属性名称: 属性值 文件数据: 文件名称: | 文件内容 注意: | 是"多行键值"的标识符
2.3、创建Configmap-实践
2.3.1、方法1-资源定义文件
cat >configmap-test.yml<<"EOF"apiVersion: v1kind: ConfigMapmetadata: name: test-cfgdata: cache_host: localhost file.conf: | [daemon] logs=/var/log/test.logEOF注释: data:部分内容是真正的配置项,他们有两种格式: cache_host是Key/value格式 file.conf: | 是文件格式master1 ]# kubectl apply -f configmap-test.yml configmap/test-cfg createdmaster1 ]# kubectl get cmNAME DATA AGEkube-root-ca.crt 1 10dtest-cfg 2 3smaster1 ]# kubectl describe configmap test-cfg Name: test-cfgNamespace: defaultLabels:Annotations: Data====cache_host:----localhostfile.conf:----[daemon]logs=/var/log/test.logBinaryData====Events: # 里面定义了两种类型的配置属性:文件样式和数据样式,都是以kv样式展示 属性名和属性值中间使用 "----" 来隔开
2.3.2、方法2-命令行工具
查看命令帮助kubectl create configmap -h参数详解: --from-file=[] 以配置文件的方式创建配置数据 --from-literal=[] 以命令行设置键值对的方式配置数据 --from-env-file="" 以环境变量专用文件的方式配置数据# 单个文件导入kubectl create configmap cm-test1 --from-file=./test1.conf # 多个文件导入kubectl create configmap cm-test1-test2 --from-file=./test1.conf --from-file=./test2.conf # 导入环境变量kubectl create configmap cm-env --from-env-file=./test.env # 使用key-value导入kubectl create configmap cm-key-value --from-literal=name=cyc --from-literal=age=1999
2.4、Configmap添加属性-实践
kubectl create configmap redis-config --from-literal=host=0.0.0.0 --from-literal=port=6379kubectl describe configmaps redis-config kubectl get configmaps redis-config -o yaml
2.5、添加Nginx配置文件-实践
2.5.1、准备配置文件
mkdir nginx-conf && cd nginx-conf# 主配置文件 cat >myserver.conf<<"EOF"server { listen 8080; server_name www.sswang.com; include /etc/nginx/conf.d/myserver-*.cfg; location / { root /usr/share/nginx/html; }}EOF# 压缩配置片段文件cat >myserver-gzip.conf<<"EOF"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;EOF# 状态配置片段文件cat >myserver-status.conf<<"EOF"location /nginx-status { stub_status on; access_log off;}EOF
2.5.2、合并为同一个configmap
kubectl create configmap nginx-conf --from-file nginx-conf/myserver.conf \--from-file=nginx-conf/myserver-status.conf --from-file=nginx-conf/myserver-gzip.confkubectl create configmap nginx-conf --from-file=nginx-conf/# 多个文件之间,属性名是文件名,属性值是文件内容,属性和属性彼此之间是通过空行来隔开
2.6、指定环境变量文件
2.6.1、准备环境变量文件
mkdir redis-conf && cd redis-confcat >redis_conf.env<<"EOF"bind=10.0.0.19port=6379daemonize=nodatabases=16EOF
2.6.2、创建configmap
kubectl create configmap redis-conf --from-env-file=redis-conf/redis_conf.envkubectl get cm redis-conf -o yamlkubectl describe cm redis-conf
3、Configmap案例
3.1、使用ConfigMap有三种方式
1、通过环境变量的方式,直接传递pod,1.1 环境变量是容器启动时注入的,不会随CM更改而发生变化1.2 通过环境变量脚本的方式,预处理这些配置信息注意:环境变量的名称如果要用横线的话,最好使用下划线(_)2、通过在pod的命令行下运行的方式,比较鸡肋,我们不用3、使用volume的方式挂载入到pod内容器中挂载的Volume数据可以同步更新推荐滚动升级pod的方式来让ConfigMap内容变化生效
3.2、注意事项
1、ConfigMap必须在Pod之前创建2、与ConfigMap在同一个namespace内的pod才能使用ConfigMap,即ConfigMap不能跨命名空间调用。
3.3、属性解析
3.3.1、env
kubectl explain pod.spec.containers.env name 手工定制环境变量的时候,设置环境变量的名称,必选字段 value 手工定制环境变量的时候,设置环境变量的属性值,可选字段 valueFrom 手工定制环境变量的时候,设置环境变量的属性来源位置
3.3.2、configMapKeyRef
kubectl explain pod.spec.containers.env.valueFrom.configMapKeyRef key 引用哪个confmap中的key name 引用哪个confmap optional 如果设置为false,标识该项是必选项,如果设置为true标识这个key是可选的。
3.3.3、envFrom
kubectl explain pod.spec.containers.envFrom configMapRef ConfigMap对象中的特定Key secretKeyRef Secret对象中的特定Key prefix 为ConfigMap中的每个属性都添加前缀标识
3.4、env、configMapKeyRef变量-实践
3.4.1、定义资源配置清单
cat >configmap-env-test.yml<<"EOF"apiVersion: v1kind: ConfigMapmetadata: name: nginx-configdata: port: "10086" user: "www"---apiVersion: v1kind: Podmetadata: name: configmap-env-testspec: containers: - name: nginx1 image: 192.168.10.33:80/k8s/my_nginx:v1 env: - name: NGINX_HOST value: "192.168.10.33" - name: NGINX_PORT valueFrom: configMapKeyRef: name: nginx-config key: port optional: true - name: NGINX_USER valueFrom: configMapKeyRef: name: nginx-config key: user optional: falseEOF
3.4.2、应用资源配置清单
# 将变量传入POD中,作为环境变量kubectl apply -f configmap-env-test.yml master1 ]# kubectl exec -it configmap-env-test -- /bin/bashroot@configmap-env-test:/# echo $NGINX_HOST $NGINX_PORT $NGINX_USER192.168.10.33 10086 www
3.5、envFrom变量-实践
3.5.1、定义资源配置清单
cat >configmap-envfrom-test.yml<<"EOF"apiVersion: v1kind: ConfigMapmetadata: name: nginx-configdata: NGINX_PORT: "10086" NGINX_USER: "www"---apiVersion: v1kind: Podmetadata: name: configmap-envfrom-testspec: containers: - name: nginx1 image: 192.168.10.33:80/k8s/my_nginx:v1 envFrom: - configMapRef: name: nginx-configEOF# configMapRef 和 子属性 name必须有两个字母的距离否则会失
3.5.2、应用资源配置清单
[root@master1 ]# kubectl apply -f configmap-envfrom-test.yml configmap/nginx-config createdpod/configmap-envfrom-test created[root@master1 ]# kubectl get podsNAME READY STATUS RESTARTS AGEconfigmap-envfrom-test 1/1 Running 0 4s[root@master1 ]# kubectl exec -it configmap-envfrom-test -- /bin/bashroot@configmap-envfrom-test:/# echo $NGINX_PORT $NGINX_USER10086 www
3.6、${var_name}参数变量-实践
3.6.1、定义资源配置清单
cat >command-pod.yml<<"EOF"apiVersion: v1kind: ConfigMapmetadata: name: command-argdata: time: "3600"---apiVersion: v1kind: Podmetadata: name: command-podspec: containers: - name: command-pod image: 192.168.10.33:80/k8s/busybox:latest command: [ "/bin/sh", "-c", "sleep ${SPECIAL_TIME}" ] env: - name: SPECIAL_TIME valueFrom: configMapKeyRef: name: command-arg key: time restartPolicy: NeverEOF
3.6.2、应用资源配置清单
kubectl apply -f command-pod.yml kubectl get cmkubectl describe cm command-arg kubectl get podsmaster1 ]# kubectl exec -it command-pod -- /bin/sh/ # echo $SPECIAL_TIME3600
3.7、命令方法将变量传入pod中做环境变量-实践
3.7.1、--env
master1 ]# kubectl run conf-pod --image=192.168.10.33:80/k8s/my_nginx:v1 --env="NAME=cyc"pod/conf-pod created[root@master1 ]# kubectl get podsNAME READY STATUS RESTARTS AGEconf-pod 1/1 Running 0 2s[root@master1 ]# kubectl exec -it conf-pod -- /bin/bashroot@conf-pod:/# echo $NAMEcyc
3.8、数据卷-实践
3.8.1、定义资源配置清单
cat > volume-config.yml<<"EOF"apiVersion: v1kind: ConfigMapmetadata: name: volume-configdata: special.name: redis-name redis.conf: | [daemon] daemon=true---apiVersion: v1kind: Podmetadata: name: conf-test-volumespec: volumes: - name: config-volume configMap: name: volume-config containers: - name: nginx image: 192.168.10.33:80/k8s/my_nginx:v1 volumeMounts: - name: config-volume mountPath: /redis_home/EOF
3.8.2、应用资源配置清单
master1 ]# kubectl apply -f volume-config.yml configmap/volume-config createdpod/conf-test-volume createdmaster1 ]# kubectl get cmNAME DATA AGEredis-conf 4 14hmaster1 ]# kubectl get podsNAME READY STATUS RESTARTS AGEconf-test-volume 1/1 Running 0 7smaster1 ]# kubectl exec -it conf-test-volume -- /bin/bashroot@conf-test-volume:/# ls -l /redis_home/lrwxrwxrwx 1 root root 17 Mar 28 04:48 redis.conf -> ..data/redis.conflrwxrwxrwx 1 root root 19 Mar 28 04:48 special.name -> ..data/special.nameroot@conf-test-volume:/# cat /redis_home/special.name redis-nameroot@conf-test-volume:/# cat /redis_home/redis.conf [daemon]daemon=true这些文件虽然看起来是在我们挂载的目录下,实际上,它是经过了两层的软连接才能找到真正挂载的文件。redis_home --> .data --> .2023_03_xxx通过这种双层软连接的方式,只要我们的容器支持重载技术,那么我们只需要更改配置文件就可以实现容器应用的变动。
3.8.3、在线编辑配置文件
master1 ]# kubectl edit cm volume-config ...apiVersion: v1data: redis.conf: | [daemon] daemon=false...master1 ]# kubectl exec -it conf-test-volume -- /bin/bashroot@conf-test-volume:/# cat /redis_home/redis.conf [daemon]daemon=false# 等待十几秒后,配置信息自动发生了变动# 整个过程中,无需重启pod对象
3.9、挂载nginx配置文件到pod volume内-实践
3.9.1、将配置文件转为configmap
mkdir nginx-conf && cd nginx-conf# 主配置文件 cat >myserver.conf<<"EOF"server { listen 8080; server_name www.sswang.com; include /etc/nginx/conf.d/myserver-*.cfg; location / { root /usr/share/nginx/html; }}EOF# 压缩配置片段文件cat >myserver-gzip.cfg<<"EOF"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;EOF# 状态配置片段文件cat >myserver-status.cfg<<"EOF"location /nginx-status { stub_status on; access_log off;}EOFkubectl create configmap nginx-conf-files --from-file=nginx-conf/kubectl describe configmaps nginx-conf-files
3.9.2、定义资源配置清单
cat > nginx-conf-configmap.yml<<"EOF"apiVersion: v1kind: ConfigMapmetadata: name: nginx-indexdata: index.html: | "hello nginx configmap" ---apiVersion: v1kind: Podmetadata: name: nginx-conf-configmapspec: containers: - image: 192.168.10.33:80/k8s/my_nginx:v1 name: nginx-server volumeMounts: - name: nginxconf mountPath: /etc/nginx/conf.d/ readOnly: true - name: nginxindex mountPath: /usr/share/nginx/html/ readOnly: true volumes: - name: nginxconf configMap: name: nginx-conf-files optional: false - name: nginxindex configMap: name: nginx-index optional: false EOF
3.9.3、应用资源配置清单
master1 ]# kubectl apply -f nginx-conf-configmap.yml configmap/nginx-index createdpod/nginx-conf-configmap createdmaster1 ]# kubectl get pods -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESnginx-conf-configmap 1/1 Running 0 63s 10.244.3.244 node1# 查看pod里面配置文件是否正常master1 ]# kubectl exec -it nginx-conf-configmap -- ls -l /etc/nginx/conf.dtotal 0lrwxrwxrwx 1 root root 24 Mar 28 07:41 myserver-gzip.cfg -> ..data/myserver-gzip.cfglrwxrwxrwx 1 root root 26 Mar 28 07:41 myserver-status.cfg -> ..data/myserver-status.cfglrwxrwxrwx 1 root root 20 Mar 28 07:41 myserver.conf -> ..data/myserver.conf# 访问测试master1 ]# curl 10.244.3.244:8080"hello nginx configmap" master1 ]# curl 10.244.3.244:8080/nginx-statusActive connections: 1 server accepts handled requests 2 2 2 Reading: 0 Writing: 1 Waiting: 0
3.10、挂载Nginx部分配置内容到pod volume内【覆盖】-实践
3.10.1、将配置文件转为configmap
mkdir nginx-conf && cd nginx-conf# 主配置文件 cat >myserver.conf<<"EOF"server { listen 8080; server_name www.sswang.com; include /etc/nginx/conf.d/myserver-*.cfg; location / { root /usr/share/nginx/html; }}EOF# 压缩配置片段文件cat >myserver-gzip.cfg<<"EOF"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;EOF# 状态配置片段文件cat >myserver-status.cfg<<"EOF"location /nginx-status { stub_status on; access_log off;}EOFkubectl create configmap nginx-conf-files --from-file=nginx-conf/kubectl describe configmaps nginx-conf-files
3.10.2、定义资源配置清单
cat >nginx-conf-configmap-subfile.yml<<"EOF"apiVersion: v1kind: ConfigMapmetadata: name: nginx-indexdata: index.html: "hello nginx sub configmap\n" ---apiVersion: v1kind: Podmetadata: name: nginx-conf-configmapspec: containers: - image: 192.168.10.33:80/k8s/my_nginx:v1 name: nginx-server volumeMounts: - name: nginxconf mountPath: /etc/nginx/conf.d/ readOnly: true - name: nginxindex mountPath: /usr/share/nginx/html/ readOnly: true volumes: - name: nginxconf configMap: name: nginx-conf-files items: - key: myserver.conf path: myserver.conf mode: 0644 - key: myserver-gzip.cfg path: myserver-gzip.cfg mode: 0644 optional: false - name: nginxindex configMap: name: nginx-index optional: false EOF# 此pod不支持访问/nginx-status ,因为没有配置该项
3.10.3、应用资源配置清单
master1 ]# kubectl apply -f nginx-conf-configmap-subfile.yml configmap/nginx-index createdpod/nginx-conf-configmap createdmaster1 ]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESnginx-conf-configmap 1/1 Running 0 100s 10.244.3.245 node1master1 ]# kubectl exec -it nginx-conf-configmap -- ls -l /etc/nginx/conf.dtotal 0lrwxrwxrwx 1 root root 24 Mar 28 07:58 myserver-gzip.cfg -> ..data/myserver-gzip.cfglrwxrwxrwx 1 root root 20 Mar 28 07:58 myserver.conf -> ..data/myserver.confmaster1 ]# curl 10.244.3.245:8080hello nginx sub configmapmaster1 ]# curl 10.244.3.245:8080/nginx-status 404 Not Found 404 Not Found
nginx/1.23.3
3.11、subPath-挂载Nginx部分配置内容到pod volume【不覆盖】-实践
3.11.1、将配置文件转为configmap
mkdir nginx-conf && cd nginx-conf# 主配置文件 cat >myserver.conf<<"EOF"server { listen 8080; server_name www.sswang.com; include /etc/nginx/conf.d/myserver-*.cfg; location / { root /usr/share/nginx/html; }}EOF# 压缩配置片段文件cat >myserver-gzip.cfg<<"EOF"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;EOF# 状态配置片段文件cat >myserver-status.cfg<<"EOF"location /nginx-status { stub_status on; access_log off;}EOFkubectl create configmap nginx-conf-files --from-file=nginx-conf/kubectl describe configmaps nginx-conf-files
3.11.2、定义资源配置清单
cat >nginx-conf-configmap-subpath.yml<<"EOF"apiVersion: v1kind: ConfigMapmetadata: name: nginx-indexdata: index.html: "hello nginx use sub configmap\n" ---apiVersion: v1kind: Podmetadata: name: nginx-conf-configmapspec: containers: - image: 192.168.10.33:80/k8s/my_nginx:v1 name: nginx-server volumeMounts: - name: nginxconf mountPath: /etc/nginx/conf.d/myserver.conf subPath: myserver.conf readOnly: true - name: nginxconf mountPath: /etc/nginx/conf.d/myserver-gzip.cfg subPath: myserver-gzip.cfg readOnly: true - name: nginxindex mountPath: /usr/share/nginx/html/ readOnly: true volumes: - name: nginxconf configMap: name: nginx-conf-files optional: false - name: nginxindex configMap: name: nginx-index optional: false EOF
3.11.3、应用资源配置清单
master1 ]# kubectl apply -f nginx-conf-configmap-subpath.yml configmap/nginx-index configuredpod/nginx-conf-configmap createdmaster1 ]# kubectl get pods -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESnginx-conf-configmap 1/1 Running 0 3s 10.244.3.246 node1master1 ]# kubectl exec -it nginx-conf-configmap -- ls -l /etc/nginx/conf.dtotal 12-rw-r--r-- 1 root root 1093 Mar 28 08:06 default.conf # 不会覆盖原来的配置文件-rw-r--r-- 1 root root 149 Mar 28 08:06 myserver-gzip.cfg-rw-r--r-- 1 root root 165 Mar 28 08:06 myserver.conf
3.12、更新nginx pod的配置-实践
注意:在挂载时不要使用 subPath,因为使用 subPath 之后就不支持自动更新了。
3.12.1、修改端口为例
master1 ~]# kubectl get cmNAME DATA AGEkube-root-ca.crt 1 11dnginx-conf-files 3 16mnginx-index 1 11mmaster1 ~]# kubectl edit cm nginx-conf-files ... listen 18080; server_name www.sswang.com;...
3.12.2、重新加载nginx服务
master1 ]# kubectl exec -it nginx-conf-configmap -- cat /etc/nginx/conf.d/myserver.confserver { listen 18080; server_name www.sswang.com; include /etc/nginx/conf.d/myserver-*.cfg; location / { root /usr/share/nginx/html; }}master1 ]# kubectl exec -it nginx-conf-configmap -- nginx -s reload2023/03/28 08:23:59 [notice] 122#122: signal process started
3.12.3、访问测试
master1 ]# kubectl get pods -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESnginx-conf-configmap 1/1 Running 0 109s 10.244.3.247 node1[root@master1 ]# curl 10.244.3.247:18080hello nginx sub configmap
关键词:
环球观天下!32、K8S-配置管理之Configmap
世界看点:Python中21道个程序小练习
css设置超过固定长度以省略号显示
全球看点:乒乓球技巧训练这就是高手的水准_乒乓球技巧
全球简讯:瑞银:看好亚股增长潜力 偏好亚洲投资级债券
Twitter将上线离谱新规:非会员甚至无法参与投票
热头条丨九识自动驾驶物流车被曝闯红灯 网友:该怎么记分处罚
速读:“网红”威震天在北京环球影城摔了一跤 客服回应:后续演出正常
【环球新要闻】一个时代结束了!Wii U和3DS在线商店已正式关闭
实时:透明外壳设计!Nothing Ear(2)无线耳机上市 999元
热资讯![HTML]表单标签(form表单域、input输入表单、label标签、select下拉表单、textarea文本域)
C#List的3种排序方法
环球观焦点:韩国有意解禁福岛水产品?在野党呼吁韩总统表态
全球新资讯:收评:两市震荡走弱沪指跌0.19% 人工智能概念冲高回落
全球热头条丨想玩必须升级!Steam将于2024年终止对Win7/8/8.1系统支持
中国科学家发现月球水库 估计蓄水量多达2700亿吨
父母做生意给儿子取名为顾客 当事人:家里有个“顾客”能带来更多顾客
世界最高安全标准 我国自研核电华龙一号西部首堆全面建成
【时快讯】249元 TP-LINK推出新款玄鸟AX3000路由器:3000Mbps满血Wi-Fi 6
观热点:Rust 备忘清单_开发速查表分享
即时焦点:郑州大学河南先进技术研究院2023年硕士研究生拟调剂信息公告已公布
天天热点评!国服一步步被掏空 暴雪国际服支持微信支付宝:价格全面上涨
vivo X Fold2将在博鳌亚洲论坛首秀:采用“天圆地方·两仪万象”设计
每日资讯:网信办:全面清理虚假摆拍短视频
环球观热点:如何应对上手英文工具站的 8 大误区
小程序的车载场景应用
【Visual Leak Detector】配置项 ReportEncoding
数据建模
世界要闻:在.NET7使用NPOI读取Excel如此简单
每日简讯:西门子医疗Syngo Carbon助力贵安医院打破数据孤岛,加速智慧医院建设
每日快播:谁是更好的甜点处理器?锐龙5 7600、酷睿i5-13400对比评测:游戏差距大到不敢相信
终于结束了 特斯拉“退一赔三”案二审败诉后申请再审:法院驳回
笔记本电脑排风扇声音大是怎么回事?笔记本电脑排风扇声音大怎么解决?
nova6最严重的缺点是什么?nova6参数详细价格
哈尔滨有几个电脑城?哈尔滨电脑城地址
折旧率是什么意思?折旧率计算公式
全球今头条!Go语言:通过TDD驱动测试开发为同事写的程序优化提速——初次接触并发与channel
【世界时快讯】非看不可的Redis持久化
选择排序
速递!【Visual Leak Detector】配置项 MaxTraceFrames
flash8怎么下载到电脑上?Flash8的序列号是多少?
大连地铁敞门行驶 线路刚开12天:客服称“原因正在调查”
快资讯丨00后女生毕业当猪场保育员:她认为这行业很有潜力
世界快资讯丨微软反戈一击 反垄断战火引至日本本土
当前头条:东南亚出游降温:机票降幅达40%
环球新动态:机器学习基础06DAY
数据密集型应用存储与检索设计
当前头条:范畴论:迷人的数学花园
环球观天下!智能存储重磅上线:低成本闲时转码
【天天快播报】促消费,振内需,康佳加速业务高质量发展
世界第一名宇航员!尤里·加加林坠机遇难地点照片首次公开
每日看点!真的可以免费坐高铁了!用12306积分兑换:官方教程收好
焦点速递!杭州地铁现打工人专线 网友:通勤都不让闲着
环球观察:《指环王:力量之戒》片场马匹死亡 动保组织谴责:剥削动物
魅族20系列大杯曝光:120Hz E6直屏、12GB+512GB组合
焦点快报!实验一 密码引擎-2-电子钥匙功能测试
CNStack 虚拟化服务:实现虚拟机和容器资源的共池管理
每日视讯:ChatGPT软件技术栈解密
天天微速讯:具有FTP、FTPS和sftp功能的文本编辑器——EditPlus功能介绍
今日热搜:【解答】MySQL MTR的实现原理与优势
核磁共振增强剂的危害_核磁共振增强剂的危害
环球热文:高德、阿里云发布全新车路协同方案 夜间开车像开了上帝视角
世界热文:瑞幸咖啡被吐槽喝完3口剩下全是冰 客服:门店按配方比例制作
世界快消息!育碧正式宣布“单飞”:E3展会再失重要参展商
独此一家!真我GT Neo5 SE梦幻续航组合:100W快充+5500mAh电池
每日速递:迪士尼《小美人鱼》真人电影确认引进内地:或5月上映
世界短讯!关于ChatGPT的一些信息,我画了一张思维导图
当前头条:前端设计模式——解释器模式
世界热点!各部队加强即将退役人员保密教育的一组见闻
焦点速递!男子2天喝4顿后死亡 起诉店家获赔:医生称如此喝酒很伤身
全球实时:价格相差数倍!智能手表比智能手环强在哪里?
昔日明星掌机落幕:任天堂正式关闭3DS游戏商店
最新消息:李想:攻破燃油车 需3步
当前简讯:任天堂爆款续作!《塞尔达传说:王国之泪》新实机今晚公布:5月12日发售
全球今热点:头铁面试官:一个小小的 System.out.println 硬是考了我半个小时,被问懵了。。
【天天播资讯】《Flask Web 开发指南 pt.1》
环球信息:日本北海道一养鸡场发生禽流感疫情
库克喊话:苹果和中国市场30年来密切关联 我们相互成长
今日热讯:告别物理卡槽!iPhone 15将进一步普及eSIM:水货机今后更难了
老人推倒摩托继承人被判赔1.6万元:车主直言被网曝 老人违法不该被宽恕
全球简讯:【国际大宗商品早报】隔夜外盘商品大面积反弹 美油涨超5%芝加哥农产品全线上涨
全球快报:最“丑”绿色车牌或在2年内取消 网友热议电车优待早该结束!国人将车牌代表面子
全球信息:2022年中国市场最畅销10款手机:国人狂买iPhone 13 高端安卓泪奔
天天视讯!昔日超市霸主 家乐福中国内地首店关闭:在北京开了28年
焦点快播:禁售时间已明确 油车还能开多久?中石油回应:新能源拐点还有很长路
天天微头条丨读Java性能权威指南(第2版)笔记30_Java服务器
世界热点评!Linux -mv命令的10个实用例子
全球看热讯:日本动漫演唱会_日本动漫
环球信息:【Visual Leak Detector】配置项 MaxDataDump
C++ 整理
OpenYurt v1.2 新版本深度解读(三):五步搭建一个OpenYurt集群
焦点速读:海外工具站 2022 复盘:商业认知篇
环球关注:泪目!孩子给离世父亲发短信被回复:爸爸也想你
1只花豹偷袭2只大猩猩:居然 全死了?
环球今日讯!别等魔兽国服了 暴雪今日开放全新服务器:自己单干
当蒂法换上《生化4》艾达王的装束:淡妆浓抹总相宜
全球观速讯丨软件、电影、游戏都“免费” 俄罗斯称盗版不再违法:要让奈飞破产
环球看点!樊小纯
前沿热点:美团面试:熟悉哪些JVM调优参数?
全球快看:基于.NET Core + Jquery实现文件断点分片上传