Linux6.40 Kubernetes 配置资源管理

文章目录

  • 计算机系统
    • 5G云计算
      • 第三章 LINUX Kubernetes 配置资源管理
        • 一、Secret
          • 1.Secret 四种类型
            • 1)kubernetes.io/service-account-token
            • 2)Opaque
            • 3)kubernetes.io/dockerconfigjson
            • 4)kubernetes.io/tls
          • 2.Pod 需要先引用才能使用某个 secret,Pod 有 3 种方式来使用 secret
        • 二.ConfigMap

计算机系统

5G云计算

第三章 LINUX Kubernetes 配置资源管理

一、Secret

Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,这类数据虽然也可以存放在 Pod 或者镜像中,但是放在 Secret 中是为了更方便的控制如何使用数据,并减少暴露的风险

1.Secret 四种类型
1)kubernetes.io/service-account-token

由 Kubernetes 自动创建,用来访问 APIServer 的 Secret,Pod 会默认使用这个 Secret 与 APIServer 通信, 并且会自动挂载到 Pod 的 /run/secrets/kubernetes.io/serviceaccount 目录中

2)Opaque

base64 编码格式的 Secret,用来存储用户自定义的密码、密钥等,默认的 Secret 类型

3)kubernetes.io/dockerconfigjson

用来存储私有 docker registry 的认证信息

4)kubernetes.io/tls

用来存储 TLS 证书和私钥信息

2.Pod 需要先引用才能使用某个 secret,Pod 有 3 种方式来使用 secret

1)作为挂载到一个或多个容器上的卷 中的文件

2)作为容器的环境变量

3)由 kubelet 在为 Pod 拉取镜像时使用

应用场景:凭据
https://kubernetes.io/docs/concepts/configuration/secret///创建 Secret
1、用kubectl create secret命令创建Secret
echo -n 'zhangsan' > username.txt
echo -n 'abc1234' > password.txtkubectl create secret generic mysecret --from-file=username.txt --from-file=password.txtkubectl get secrets
NAME                                 TYPE                                  DATA   AGE
default-token-sggl5                  kubernetes.io/service-account-token   3      6d21h
mysecret                             Opaque                                2      3s
nfs-client-provisioner-token-xpkn5   kubernetes.io/service-account-token   3      3d2hkubectl describe secret mysecret
Name:         mysecret
Namespace:    default
Labels:       <none>
Annotations:  <none>Type:  OpaqueData
====
username.txt:  8 bytes
password.txt:  7 bytes//get或describe指令都不会展示secret的实际内容,这是出于对数据的保护的考虑2、内容用 base64 编码,创建Secret
echo -n zhangsan | base64
emhhbmdzYW4K=echo -n abc1234 | base64
YWJjMTIzNAo==kubectl create secret generic mysecret1 --from-literal=myname=lisikubectl get secrets
NAME                                 TYPE                                  DATA   AGE
default-token-sggl5                  kubernetes.io/service-account-token   3      6d21h
mysecret                             Opaque                                2      6m
mysecret1                            Opaque                                1      12s
nfs-client-provisioner-token-xpkn5   kubernetes.io/service-account-token   3      3d2hkubectl get secret mysecret1 -o yaml
apiVersion: v1
data:myname: bGlzaQ==
kind: Secret
metadata:creationTimestamp: "2023-08-17T09:04:08Z"managedFields:- apiVersion: v1fieldsType: FieldsV1fieldsV1:f:data:.: {}f:myname: {}f:type: {}manager: kubectl-createoperation: Updatetime: "2023-08-17T09:04:08Z"name: mysecret1namespace: defaultresourceVersion: "160205"selfLink: /api/v1/namespaces/default/secrets/mysecret1uid: 53c6b51e-4089-456a-8ee7-9aefba21db40
type: Opaque//使用方式 
1、将 Secret 挂载到 Volume 中,以 Volume 的形式挂载到 Pod 的某个目录下
vim secret-test.yaml
apiVersion: v1
kind: Pod
metadata:name: mypod
spec:containers:- name: nginximage: nginxvolumeMounts:- name: secretsmountPath: "/etc/secrets"readOnly: truevolumes:- name: secretssecret:secretName: mysecretkubectl create -f secret-test.yamlkubectl get pods
NAME                                      READY   STATUS    RESTARTS   AGE
mypod                                     1/1     Running   0          46s
nfs-client-provisioner-55bbbfbb9f-bwrhm   1/1     Running   0          2d1hkubectl exec -it mypod bash
# cd /etc/secrets/
# ls
password.txt  username.txt
# cat username.txt
zhangsan# 2、将 Secret 导出到环境变量中
vim secret-test1.yaml
apiVersion: v1
kind: Pod
metadata:name: mypod1
spec:containers:- name: nginximage: nginxenv:- name: TEST_USERvalueFrom:secretKeyRef:name: mysecretkey: username.txt- name: TEST_PASSWORDvalueFrom:secretKeyRef:name: mysecretkey: password.txtenvFrom:- secretRef:name: mysecret1kubectl apply -f secret-test1.yaml kubectl get pods
NAME         READY   STATUS    RESTARTS   AGE
NAME                                      READY   STATUS    RESTARTS   AGE
mypod                                     1/1     Running   0          3m9s
mypod1                                    1/1     Running   0          30s
nfs-client-provisioner-55bbbfbb9f-bwrhm   1/1     Running   0          2d1hkubectl exec -it mypod1 bash
# echo $TEST_USER
zhangsan
# echo $TEST_PASSWORD
abc1234

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二.ConfigMap

与Secret类似,区别在于ConfigMap保存的是不需要加密配置的信息
ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制,ConfigMap 可以被用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制大对象

应用场景:应用配置//创建 ConfigMap
1、使用目录创建
mkdir /opt/configmap/vim /opt/configmap/game.config
enemy.types=aliens,monsters
player.maximum-lives=5 vim /opt/configmap/ui.config
color.good=purple
color.bad=yellow
allow.textmode=truels /opt/configmap/
game.config
ui.configkubectl create configmap game-config --from-file=/opt/configmap/
//--from-file 指定在目录下的所有文件都会被用在 ConfigMap 里面创建一个键值对,键的名字就是文件名,值就是文件的内容kubectl get cm
NAME               DATA   AGE
game-config        2      3s
kube-root-ca.crt   1      6d21hkubectl get cm game-config -o yaml
apiVersion: v1
data:game.config: "enemy.types=aliens,monsters\nplayer.maximum-lives=5 \n"ui.config: |color.good=purplecolor.bad=yellowallow.textmode=true
kind: ConfigMap
metadata:creationTimestamp: "2023-08-17T09:13:28Z"managedFields:- apiVersion: v1fieldsType: FieldsV1fieldsV1:f:data:.: {}f:game.config: {}f:ui.config: {}manager: kubectl-createoperation: Updatetime: "2023-08-17T09:13:28Z"name: game-confignamespace: defaultresourceVersion: "161245"selfLink: /api/v1/namespaces/default/configmaps/game-configuid: b198ecb4-2d62-4d5e-bbd8-3fe609986ec42、使用文件创建 
只要指定为一个文件就可以从单个文件中创建 ConfigMap
--from-file 这个参数可以使用多次,即可以使用两次分别指定上个实例中的那两个配置文件,效果就跟指定整个目录是一样的kubectl create configmap game-config-2 --from-file=/opt/configmap/game.config --from-file=/opt/configmap/ui.configkubectl get configmaps game-config-2 -o yamlkubectl describe cm game-config-23、使用字面值创建 
使用文字值创建,利用 --from-literal 参数传递配置信息,该参数可以使用多次,格式如下
kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=goodkubectl get configmaps special-config -o yaml
apiVersion: v1
data:special.how: veryspecial.type: good
kind: ConfigMap
metadata:creationTimestamp: "2023-08-17T09:16:42Z"managedFields:- apiVersion: v1fieldsType: FieldsV1fieldsV1:f:data:.: {}f:special.how: {}f:special.type: {}manager: kubectl-createoperation: Updatetime: "2023-08-17T09:16:42Z"name: special-confignamespace: defaultresourceVersion: "161613"selfLink: /api/v1/namespaces/default/configmaps/special-configuid: be38184f-ac39-4e38-92df-87e01a2b7a60kubectl delete cm --all
kubectl delete pod --all//Pod 中使用 ConfigMap 
1、使用 ConfigMap 来替代环境变量
vim env.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: special-confignamespace: default
data:special.how: veryspecial.type: good
---
apiVersion: v1
kind: ConfigMap
metadata:name: env-confignamespace: default
data:log_level: INFOkubectl apply -f env.yaml kubectl get cm
NAME               DATA   AGE
env-config         1      3s
kube-root-ca.crt   1      57s
special-config     2      3s//Pod的创建
vim test-pod.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod
spec:containers:- name: busyboximage: busybox:1.28.4command: [ "/bin/sh", "-c", "env" ]env:- name: SPECIAL_HOW_KEYvalueFrom:configMapKeyRef:name: special-configkey: special.how- name: SPECIAL_TYPE_KEYvalueFrom:configMapKeyRef:name: special-configkey: special.typeenvFrom:- configMapRef:name: env-configrestartPolicy: Neverkubectl apply -f test-pod.yamlkubectl get pods
NAME                                      READY   STATUS      RESTARTS   AGE
nfs-client-provisioner-55bbbfbb9f-s2fcr   1/1     Running     0          2m8s
test-pod                                  0/1     Completed   0          20skubectl logs test-pod
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://10.0.0.1:443
HOSTNAME=test-pod
SHLVL=1
SPECIAL_HOW_KEY=very            #赋值变量 SPECIAL_HOW_KEY 的值为 special-config 的 special.how: very
HOME=/root
SPECIAL_TYPE_KEY=good
KUBERNETES_PORT_443_TCP_ADDR=10.0.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
log_level=INFO                  #引入 env-config 的变量 log_level: INFO
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP=tcp://10.0.0.1:443
KUBERNETES_SERVICE_HOST=10.0.0.1
PWD=/2、用 ConfigMap 设置命令行参数 
vim test-pod2.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod2
spec:containers:- name: busyboximage: busybox:1.28.4command: - /bin/sh- -c- echo "$(SPECIAL_HOW_KEY) $(SPECIAL_TYPE_KEY)"env:- name: SPECIAL_HOW_KEYvalueFrom:configMapKeyRef:name: special-configkey: special.how- name: SPECIAL_TYPE_KEYvalueFrom:configMapKeyRef:name: special-configkey: special.typeenvFrom:- configMapRef:name: env-configrestartPolicy: Neverkubectl apply -f test-pod2.yamlkubectl get pods
NAME                                      READY   STATUS      RESTARTS   AGE
nfs-client-provisioner-55bbbfbb9f-s2fcr   1/1     Running     0          4m10s
test-pod                                  0/1     Completed   0          2m22s
test-pod2                                 0/1     Completed   0          7skubectl logs test-pod2
very good3、通过数据卷插件使用ConfigMap 
在数据卷里面使用 ConfigMap,就是将文件填入数据卷,在这个文件中,键就是文件名,键值就是文件内容
vim test-pod3.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod3
spec:containers:- name: busyboximage: busybox:1.28.4command: [ "/bin/sh", "-c", "sleep 36000" ]volumeMounts:- name: config-volumemountPath: /etc/configvolumes:- name: config-volumeconfigMap:name: special-configrestartPolicy: Neverkubectl apply -f test-pod3.yaml kubectl get pods
NAME                                      READY   STATUS      RESTARTS   AGE
nfs-client-provisioner-55bbbfbb9f-s2fcr   1/1     Running     0          5m20s
test-pod                                  0/1     Completed   0          3m32s
test-pod2                                 0/1     Completed   0          77s
test-pod3                                 1/1     Running     0          6skubectl exec -it test-pod3 sh# cd /etc/config/# ls
special.how   special.type# vi special.how # vi special.type RESTARTS   AGE
nfs-client-provisioner-55bbbfbb9f-s2fcr   1/1     Running     0          5m20s
test-pod                                  0/1     Completed   0          3m32s
test-pod2                                 0/1     Completed   0          77s
test-pod3                                 1/1     Running     0          6skubectl exec -it test-pod3 sh# cd /etc/config/# ls
special.how   special.type# vi special.how # vi special.type 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

React入门 jsx学习笔记

一、JSX介绍 概念&#xff1a;JSX是 JavaScript XML&#xff08;HTML&#xff09;的缩写&#xff0c;表示在 JS 代码中书写 HTML 结构 作用&#xff1a;在React中创建HTML结构&#xff08;页面UI结构&#xff09; 优势&#xff1a; 采用类似于HTML的语法&#xff0c;降低学…

因果推断(四)断点回归(RD)

因果推断&#xff08;四&#xff09;断点回归&#xff08;RD&#xff09; 在传统的因果推断方法中&#xff0c;有一种方法可以控制观察到的混杂因素和未观察到的混杂因素&#xff0c;这就是断点回归&#xff0c;因为它只需要观察干预两侧的数据&#xff0c;是否存在明显的断点…

【C++入门到精通】C++入门 —— list (STL)

阅读导航 前言一、list简介1.概念2.特点 二、list的使用1.list的构造2.常见的操作⭕std::list类型的增、删、查、改 三、list与vector的对比温馨提示 前言 文章绑定了VS平台下std::list的源码&#xff0c;大家可以下载了解一下&#x1f60d; 前面我们讲了C语言的基础知识&…

C语言实例_获取文件MD5值

一、MD5介绍 MD5&#xff08;Message Digest Algorithm 5&#xff09;是一种常用的哈希函数算法。将任意长度的数据作为输入&#xff0c;并生成一个唯一的、固定长度&#xff08;通常是128位&#xff09;的哈希值&#xff0c;称为MD5值。MD5算法以其高度可靠性和广泛应用而闻名…

全球磁强计市场价值约为16.2亿美元,预测期内将以超过5.21%的增长率增长

磁强计是一种用于测量磁场强度和方向的仪器。它可以检测和测量地球磁场、物体的磁性、地下矿藏、磁性材料等。磁强计在地球科学、物理学、地质学、勘探、矿业等领域具有广泛的应用。 根据阿谱尔&#xff08;APO&#xff09;的统计及预测&#xff0c;2022年全球磁强计市场价值约…

ts与vue

ts与Vue 如果你已经学习了typeScript,但不知道如何在vue项目中使用&#xff0c;那么这篇文章将会很适合你。参考千峰教育 kerwin视频 1.会自动推导&#xff0c;隐士推导。提示 类型系统。 独立模块。 isolatedModules选项&#xff1a;是否配置为独立的模块。 减少报错 let …

dispatcherServlet在tomcat启动时如何被加载(1)

目录 在springboot工程中, 如何添加一个servlet呢? 方法1 : 使用WebServlet注解 方法2 : 使用ServletRegistrationBean进行注册 springmvc 采用的就是方式2和springboot集成的, 看一下源码 springboot 字段装配里面有这个类, 看一下源码 90行, 创建了一个DispatcherServlet对象…

解决Adobe Flash Player已被屏蔽

问题&#xff1a;该插件不支持 原因&#xff1a;现在浏览器默认禁用flash 博主当前使用的是谷歌浏览器Chrome 2个主要方法都已经失效 搜索一圈后&#xff0c;之前博客给出的2个主要方法都已经失效。 1、flash.cn 下载本地播放器 2、在chrome中打开flash的禁用开关 2023年解…

LangChain源码逐行解密之系统(二)

LangChain源码逐行解密之系统 20.2 serapi.py源码逐行剖析 我们可以看一下Google查询的例子,在LangChain中有多种实现的方式。 如图20-5所示,在utilities的serpapi.py代码文件中实现了SerpAPIWrapper。 图20- 5 utilities的serpapi.py的SerpAPIWrapper 在langchain目录的se…

如何避免爬虫IP被屏蔽

各位爬友们好&#xff0c;作为一名专业的爬虫代理提供者&#xff0c;我要和大家分享一些避免爬虫IP被屏蔽的实用技巧。你知道吗&#xff0c;当我们爬取数据的时候&#xff0c;很容易被目标网站识别出来并封禁我们的IP地址&#xff0c;导致无法继续爬取数据。这个问题困扰了很多…

7. 实现 API 自动生成

目录 1. pom.xml中引用依赖 2. 引入相关的依赖 3. 编写配置类 4. application.yml 中添加配置 5. API 常用注解 6. 访问 API 列表 7. API 导入 Postman 使用 Springfox Swagger生成 API&#xff0c;并导入 Postman&#xff0c;完成API单元测试。 Swagger 简介&#xff1a;Swag…

执行Lua脚本后一直查询不到Redis中的数据(附带问题详细排查过程,一波三折)

文章目录 执行Lua脚本后一直查询不到Redis中的数据&#xff08;附带详细问题排查过程&#xff0c;一波三折&#xff09;问题背景问题1&#xff1a;Lua脚本无法切库问题2&#xff1a;RedisTemlate切库报错问题3&#xff1a;序列化导致数据不一致问题4&#xff1a;Lua脚本中单引号…

Flask Web开发实战(狼书)| 笔记第1、2章

前言 2023-8-11 以前对网站开发萌生了想法&#xff0c;又有些急于求成&#xff0c;在B站照着视频敲了一个基于flask的博客系统。但对于程序的代码难免有些囫囵吞枣&#xff0c;存在许多模糊或不太理解的地方&#xff0c;只会照葫芦画瓢。 而当自己想开发一个什么网站的时&…

ubuntu部署haproxy

HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理. 1、更新系统报 通过在终端中运行以下命令&#xff0c;确保所有系统包都是最新的 sudo apt updatesudo apt upgrade2、安装Haproxy sudo apt install haproxy设置开机自动启动haproxy服务 sudo systemctl en…

Lnton羚通关于如何解决nanoPC-T4 upgrade报错问题?

nanoPC-T4 在 ​​# sudo apt update 和 sudo apt upgrade​​升级或安装软件 ​​sudo apt install xxx​​时遇到以下问题&#xff1a;​​Failed to set up interface with /etc/hostapd/​ Setting up hostapd (2:2.6-15ubuntu2.8) ... Job for hostapd.service failed be…

ssm+vue医院住院管理系统源码和论文PPT

ssmvue医院住院管理系统源码和论文PPT012 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 摘 要 随着时代的发展&#xff0c;医疗设备愈来愈完善&#xff0c;医院也变成人们生…

基于IMX6ULLmini的linux裸机开发系列一:汇编点亮LED

思来想去还是决定记录一下点灯&#xff0c;毕竟万物皆点灯嘛 编程步骤 使能GPIO时钟 设置引脚复用为GPIO 设置引脚属性(上下拉、速率、驱动能力) 控制GPIO引脚输出高低电平 使能GPIO时钟 其实和32差不多 先找到控制LED灯的引脚&#xff0c;也就是原理图 文件名 C:/Us…

AUTOSAR NvM Block的三种类型

Native NVRAM block Native block是最基础的NvM Block&#xff0c;可以用来存储一个数据&#xff0c;可以配置长度、CRC等。 Redundant NVRAM block Redundant block就是在Native block的基础上再加一个冗余块&#xff0c;当Native block失效&#xff08;读取失败或CRC校验失…

剑指offer44.数字序列中某一位的数字

最后一道题&#xff0c;我一定要自己做出来&#xff0c;想了不到一个小时想法差不多成熟了&#xff0c;但是有一个小细节出问题了&#xff0c;这个问题我在idea上debug都没debug出来。我先讲我的题解然后再讲我这个小问题出在哪里吧。以下是我的代码&#xff1a; class Soluti…

PHP手术麻醉系统源码,自动生成麻醉和护理医疗文书

一套手术麻醉系统源码&#xff0c;可二次开发 手术室麻醉临床信息系统&#xff08;AIMS&#xff09;是应用于医院手术室、麻醉科室的计算机软件系统。该系统针对整个围术期&#xff0c;对病人进行全程跟踪与信息管理&#xff0c;自动集成病人HIS、LIS、RIS、PACS信息&#xff0…