Kubernetes 使用configmap挂载卷给Pod内的nginx容器

目录

实验:使用configmap挂载卷给Pod内的nginx容器

1、创建nginx.conf配置文件(必须由nginx镜像里的nginx.conf修改而来,防止出现配置不相似的情况出现,导致访问不了nginx网页)

2、通过nginx.conf文件创建configmap容器(注意nginx.conf文件必须在该目录下)

3、查看创建的configmap和它的详细资料

4、根据configmap创建nginx-deployment.yaml文件

5、运行nginx-deployment.yaml,创建Pod

6、创建Service发布nginx容器服务,创建nginx-service.yaml文件

7、运行nginx-service.yaml,创建Pod

8、验证访问


实验:使用configmap挂载卷给Pod内的nginx容器

1、创建nginx.conf配置文件(必须由nginx镜像里的nginx.conf修改而来,防止出现配置不相似的情况出现,导致访问不了nginx网页)

(base) root@sd-cluster-04:/etc/nginx# cat nginx.conf 
# claylpf testuser  nginx;
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}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;
}
(base) root@sd-cluster-04:/etc/nginx# 

2、通过nginx.conf文件创建configmap容器(注意nginx.conf文件必须在该目录下)

(base) root@sd-cluster-04:/etc/nginx# kubectl create configmap nginx-config --from-file=nginx.conf -n testns

3、查看创建的configmap和它的详细资料

(base) root@sd-cluster-04:/etc/nginx# kubectl get configmap nginx-config -n testns #查看是否成功运行
NAME           DATA   AGE
nginx-config   1      77s(base) root@sd-cluster-04:/etc/nginx# kubectl describe configmap/nginx-config -n testns  # 查看详细信息
Name:         nginx-config
Namespace:    testns
Labels:       <none>
Annotations:  <none>Data
====
nginx.conf:
----
# claylpf testuser  nginx;
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}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;
}Events:  <none>
(base) root@sd-cluster-04:/etc/nginx# 

4、根据configmap创建nginx-deployment.yaml文件

(base) root@sd-cluster-04:/etc/nginx# cat nginx-deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentnamespace: testns
spec:replicas: 1selector:matchLabels:app: clay-nginxtemplate:metadata:labels:app: clay-nginxspec:containers:- name: nginximage: nginx:1.24ports:- containerPort: 80volumeMounts:- name: nginx-config-volumemountPath: /etc/nginx/nginx.confsubPath: nginx.confvolumes:- name: nginx-config-volumeconfigMap:name: nginx-configitems:- key: nginx.confpath: nginx.conf     
(base) root@sd-cluster-04:/etc/nginx# 

代码解释:

这是一个 Kubernetes Deployment 的 YAML 文件,用于定义一个部署配置。以下是逐行解释该文件的内容:1. `apiVersion: apps/v1`: 这一行指定了 Kubernetes API 的版本,以及使用的资源类型是 Deployment。2. `kind: Deployment`: 指定了资源的种类,这是一个部署 (Deployment)。3. `metadata:`: 定义资源的元数据,包括名称和命名空间。- `name: nginx-deployment`: 部署的名称是 "nginx-deployment"。- `namespace: testns`: 部署所属的命名空间是 "testns"。6. `spec:`: 定义了部署的规格,包括副本数、选择器以及 Pod 模板。- `replicas: 1`: 指定了要运行的副本数量,这里是 1 个。- `selector:`: 选择器用于确定要管理的 Pod 集合。- `matchLabels:`: 指定了需要匹配的标签。- `app: clay-nginx`: 匹配标签中含有 "app: clay-nginx" 的 Pod。- `template:`: 定义了要创建的 Pod 模板。- `metadata:`: 定义 Pod 模板的元数据,包括标签。- `labels:`: 指定了 Pod 的标签,这里是 "app: clay-nginx"。- `spec:`: 定义了 Pod 的规格。- `containers:`: 定义了容器列表。- `name: nginx`: 定义容器的名称为 "nginx"。- `image: nginx:1.24`: 指定容器使用的镜像,这里使用的是 Nginx 版本 1.24。- `ports:`: 定义容器的端口配置。- `containerPort: 80`: 容器监听的端口是 80。- `volumeMounts:`: 定义了卷挂载配置,将卷挂载到容器内。- `name: nginx-config-volume`: 指定挂载卷的名称,这个名称将与下面定义的卷匹配。- `mountPath: /etc/nginx/nginx.conf`: 指定挂载的路径在容器内的位置。- `subPath: nginx.conf`: 指定在卷中的子路径。- `volumes:`: 定义了卷的配置。- `name: nginx-config-volume`: 定义了一个名为 "nginx-config-volume" 的卷。- `configMap:`: 指定卷的类型为 ConfigMap。- `name: nginx-config`: 指定 ConfigMap 的名称,这个名称将与集群中的 ConfigMap 匹配。- `items:`: 指定要从 ConfigMap 中提取的键值对。- `key: nginx.conf`: 指定键的名称。- `path: nginx.conf`: 指定将键的值映射到容器内的路径。这个配置文件描述了一个部署,它将创建一个 Pod,其中运行一个名为 "nginx" 的容器,该容器使用 Nginx 1.24 镜像,并将一个名为 "nginx-config-volume" 的 ConfigMap 挂载到容器内的 `/etc/nginx/nginx.conf` 路径上。这样,Nginx 容器将使用 ConfigMap 中的配置文件来配置其行为。

5、运行nginx-deployment.yaml,创建Pod

(base) root@sd-cluster-04:/etc/nginx# kubectl apply -f nginx-deployment.yaml (base) root@sd-cluster-04:/etc/nginx# kubectl get pods -o wide -n testns
NAME                                READY   STATUS        RESTARTS   AGE    IP             NODE            NOMINATED NODE   READINESS GATES
es-cluster-0                        0/1     Terminating   0          62d    10.244.5.163   sd-cluster-02   <none>           <none>
mysql-deployment-66c4d975f5-zm4sz   1/1     Running       0          5d1h   10.244.0.212   sd-cluster-04   <none>           <none>
nginx-deployment-67fb5f6db7-9ltlb   1/1     Running       0          21m    10.244.1.254   sd-cluster-05   <none>           <none>
redis-deployment-f7d7dd455-xk7h8    1/1     Running       0          5d     10.244.0.215   sd-cluster-04   <none>           <none>
(base) root@sd-cluster-04:/etc/nginx# 

6、创建Service发布nginx容器服务,创建nginx-service.yaml文件

(base) root@sd-cluster-04:/etc/nginx# cat nginx-service.yaml 
apiVersion: v1
kind: Service
metadata:name: nginx-servicenamespace: testnslabels:app: clay-nginx
spec:type: NodePortselector:app: clay-nginx  ports:- protocol: TCPport: 80targetPort: 80nodePort: 31273
(base) root@sd-cluster-04:/etc/nginx# 

逐行解释:

这是一个 Kubernetes Service 的 YAML 文件,用于创建一个服务资源。以下是逐行解释该文件的内容:1. `apiVersion: v1`: 这一行指定了 Kubernetes API 的版本,以及使用的资源类型是 Service。2. `kind: Service`: 指定了资源的种类,这是一个服务 (Service)。3. `metadata:`: 定义了服务的元数据,包括名称、命名空间和标签。- `name: nginx-service`: 服务的名称是 "nginx-service"。- `namespace: testns`: 服务所属的命名空间是 "testns"。- `labels:`: 为服务添加标签。- `app: clay-nginx`: 将标签 "app: clay-nginx" 添加到服务上。6. `spec:`: 定义了服务的规格,包括服务类型、选择器和端口配置。- `type: NodePort`: 指定了服务的类型为 NodePort,这意味着服务将暴露到每个节点的指定端口上。- `selector:`: 选择器用于确定哪些 Pod 属于这个服务。- `app: clay-nginx`: 匹配标签中含有 "app: clay-nginx" 的 Pod。- `ports:`: 定义了服务监听的端口配置。- `protocol: TCP`: 指定了端口的传输协议是 TCP。- `port: 80`: 服务监听的端口号是 80。- `targetPort: 80`: 服务将流量转发到后端 Pod 的端口号是 80。- `nodePort: 31273`: 如果服务类型是 NodePort,这个配置项指定了节点上用于访问服务的端口号。在这个例子中,服务将在节点上的端口 31273 上监听,从而可以通过节点的 IP 地址和该端口访问该服务。这个配置文件描述了一个服务,它会将流量从节点的端口 31273 转发到匹配标签 "app: clay-nginx" 的后端 Pod 上的端口 80。这种服务类型通常用于在外部网络上访问 Kubernetes 集群中的服务。

7、运行nginx-service.yaml,创建Pod

(base) root@sd-cluster-04:/etc/nginx# kubectl apply -f nginx-service.yaml (base) root@sd-cluster-04:/etc/nginx# kubectl get service -o wide -n testns
NAME            TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE   SELECTOR
mysql-service   NodePort   10.96.132.123   <none>        3306:30859/TCP   5d    app=mysql
nginx-service   NodePort   10.96.87.157    <none>        80:31273/TCP     65m   app=clay-nginx
redis-service   NodePort   10.96.10.164    <none>        6379:30026/TCP   5d    app=redis
(base) root@sd-cluster-04:/etc/nginx# 

8、验证访问

首先访问容器内的配置文件是否发生更改:

再次访问浏览器,产科nginx的Web服务是否发布 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/131469.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++刷题】经典简单题第二辑

回文排列 class Solution { public:bool canPermutePalindrome(string s) {// 记录字符出现的次数int count[256] {0};for(size_t i 0; i < s.size(); i)count[s[i]];// 记录字符出现次数为奇数的个数int flag 0;for(size_t i 0; i < 256; i)if(count[i] % 2 1)f…

yolov5权重文件.pt转.bin文件

参考链接&#xff1a;YOLOv5学习记录(二): 模型转化及Android端部署_yolo .pt文件转未bin_Xiaoer__Lu的博客-CSDN博客 1、准备pt文件 我的目录是&#xff1a;C:\Users\Administrator\Desktop\driving\yolov5-mask-42-master\runs\train\exp_yolov5s\weights里的best.pt 2、p…

算法:贪心---跳一跳

1、题目&#xff1a; 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 2…

云养殖模式:让养殖业走向智慧化、高效化、绿色化

养殖业是我国农业的重要组成部分&#xff0c;也是农民增收的重要来源。然而&#xff0c;传统的养殖方式存在着许多问题&#xff0c;如水环境污染、病害频发、市场风险高、管理落后等&#xff0c;导致养殖效益低下&#xff0c;难以适应现代消费者的需求。如何改变这种局面&#…

Java基础(二十三):反射(reflection)

文章目录 一、反射机制1.1 快速入门1.2 反射机制原理 二、反射相关类三、反射调用性能优化四、Class类4.1 基本介绍4.2 使用4.3 哪些类型有Class对象 五、类加载六、获取类的结构信息七、反射-创建实例、操作属性和方法&#xff08;爆破&#xff09; 一、反射机制 1.1 快速入门…

自然语言处理应用(三):微调BERT

微调BERT 微调&#xff08;Fine-tuning&#xff09;BERT是指在预训练的BERT模型基础上&#xff0c;使用特定领域或任务相关的数据对其进行进一步训练以适应具体任务的需求。BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是一种基于Tr…

【强化学习篇】on-policy 和 off-policy 的区别

本质区别&#xff1a; 要学习的 agent 跟和环境互动的 agent 是同一个&#xff0c;是on-policy(同策略) 要学习的 agent 跟和环境互动的 agent 不是同一个&#xff0c;是off-policy(异策略) on-policy 与 off-policy值函数&#xff1a; on-policy与off-policy区别是&#xf…

MCU软核 2. Xilinx Artix7上运行tinyriscv

0. 环境 - ubuntu18 - win10 vivado 2018.3 - git desktop - XC7A35TV12核心板 - ft2232hl小板&#xff08;用于程序烧录&#xff09; 1. git克隆源码 Git Desktop -> File -> Clone repository -> -> URL: https://gitee.com/liangkangnan/tinyriscv/ -> Lo…

如何在Python爬虫程序中使用HTTP代理?

在进行网络爬虫时&#xff0c;我们经常需要使用代理服务器来隐藏自己的真实IP地址&#xff0c;以避免被目标网站封禁或限制访问。本文将介绍如何将HTTP代理配置到Python爬虫程序中使用。 什么是HTTP代理&#xff1f; HTTP代理是一种网络代理&#xff0c;它充当客户端和服务器之…

Redis-带你深入学习数据类型zset

目录 1、zset有序集合 2、zset相关命令 2.1、添加或更新指定的元素——zadd 2.2、获取有序集合zset的元素个数相关命令&#xff1a;zcard、zcount 2.3、返回指定区间元素相关命令&#xff1a;zrange、arevrange、zrangebyscore 2.4、删除相关命令&#xff1a;zpopmax、zp…

$ref赋值之后,子组件不渲染(刷新后,$ref父组件传值,子组件不更新数据问题)

在父组件中&#xff0c;点击搜索&#xff0c; 通过this.$refs传值给子组件 this.$refs.GoodsClassNav.paramsAll.keyword key; 子组件结果中不显示&#xff0c; 但是打印this.$refs.GoodsClassNav.paramsAll.keyword&#xff0c;可以打印到最新的值&#xff0c;点击子组件中…

PyQt5通过堆叠布局实现选项卡(多界面)功能

PyQt5通过堆叠布局实现选项卡(多界面)功能 1、创建一个MainWindow 加入Text Brower做标题&#xff0c;几个按钮。 然后在左侧containers中添加Stacked Widget这个控件&#xff0c;初步布局如下&#xff1a; 对窗口中的堆叠容器 “Stacked Widget”&#xff0c;选中后可以用…

【100天精通Python】Day61:Python 数据分析_Pandas可视化功能:绘制饼图,箱线图,散点图,散点图矩阵,热力图,面积图等(示例+代码)

目录 1 Pandas 可视化功能 2 Pandas绘图实例 2.1 绘制线图 2.2 绘制柱状图 2.3 绘制随机散点图 2.4 绘制饼图 2.5 绘制箱线图A 2.6 绘制箱线图B 2.7 绘制散点图矩阵 2.8 绘制面积图 2.9 绘制热力图 2.10 绘制核密度估计图 1 Pandas 可视化功能 pandas是一个强大的数…

常驻巨噬细胞诱导的纤维化在胰腺炎性损伤和PDAC中具有不同的作用

介绍一篇2023年8月10日发表在Nature Immunology的文章 标题&#xff1a; Fibrosis induced by resident macrophages has divergent roles in pancreas inflammatory injury and PDAC 影响因子&#xff1a;30.5 DOI&#xff1a;https://doi.org/10.1038/s41590-023-01579-x …

web端动效 PAG

之前写过一篇lottie动效的文章&#xff1a;web端动效 lottie-web 使用&#xff0c;本篇写一下PAG-web的基础使用。 PAG是腾讯开发&#xff0c;支持移动端、桌面端以及Web端的动效工作流解决方案。目标是降低或消除动效相关的研发成本&#xff0c;能够一键将设计师在 AE&#x…

TensorFlow 03(Keras)

一、tf.keras tf.keras是TensorFlow 2.0的高阶API接口&#xff0c;为TensorFlow的代码提供了新的风格和设计模式&#xff0c;大大提升了TF代码的简洁性和复用性&#xff0c;官方也推荐使用tf.keras来进行模型设计和开发。 1.1 tf.keras中常用模块 如下表所示: 1.2 常用方法 …

Ei Scopus检索 | 2024年第四届能源与环境工程国际会议(CoEEE 2024)

会议简介 Brief Introduction 2024年第四届能源与环境工程国际会议(CoEEE 2024) 会议时间&#xff1a;2023年5月22日-24日 召开地点&#xff1a;意大利米兰 大会官网&#xff1a;www.coeee.org CoEEE 2024将围绕“能源与环境工程”的最新研究领域而展开&#xff0c;为研究人员、…

VSCODE 使用技巧

vscode批量去掉代码中空行的方法 1、在vscode中使用ctrl f组合快捷键打开替换窗口. 2、输入下面的正则表达式 ^\s*(?\r?$)\n https://mp.weixin.qq.com/s/ZKV2sZWszxBLNTNLEWhsng

springboot redisTemplate.opsForValue().setIfAbsent返回null原理

一、版本 springboot版本&#xff1a;spring-boot-starter-data-redis 2.1.6 redisson版本&#xff1a;redisson-spring-boot-starter 3.11.5 二、场景 Boolean res redisTemplate.opsForValue().setIfAbsent("key","value");以上代码同一时间多次执行…

Sentinel控制台配置 持久化到nacos

sentinel控制台&#xff0c;使用方便&#xff0c;功能强大。使用官方的jar包&#xff0c;配置不会持久化&#xff0c;sentinel重启后会导致&#xff0c;之前的规则全部丢失&#xff0c;下面一起改造源码实现规则数据的持久化 sentinel源码地址 &#xff08;github访问太慢&am…