kubernetes集群编排——k8s存储(configmap,secrets)

configmap

字面值创建

kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2kubectl get cmkubectl describe cm my-config

通过文件创建

kubectl create configmap my-config-2 --from-file=/etc/resolv.confkubectl describe cm my-config-2

通过目录创建

mkdir testcp /etc/passwd test/cp /etc/fstab  test/ls test/

kubectl create configmap my-config-3 --from-file=testkubectl describe cm my-config-3

通过yaml文件创建

vim cm1.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: cm1-config
data:db_host: "172.25.0.250"db_port: "3306"
kubectl apply -f cm1.yamlkubectl describe cm cm1-config

使用configmap设置环境变量

vim pod1.yaml
apiVersion: v1
kind: Pod
metadata:name: pod1
spec:containers:- name: pod1image: busyboxcommand: ["/bin/sh", "-c", "env"]env:- name: key1valueFrom:configMapKeyRef:name: cm1-configkey: db_host- name: key2valueFrom:configMapKeyRef:name: cm1-configkey: db_portrestartPolicy: Never
kubectl apply -f pod1.yamlkubectl logs pod1

kubectl delete  pod pod1
vim pod2.yaml
apiVersion: v1
kind: Pod
metadata:name: pod2
spec:containers:- name: pod2image: busyboxcommand: ["/bin/sh", "-c", "env"]envFrom:- configMapRef:name: cm1-configrestartPolicy: Never
kubectl apply -f pod2.yamlkubectl logs pod2

kubectl delete  pod pod2

使用conigmap设置命令行参数

vim pod3.yaml
apiVersion: v1
kind: Pod
metadata:name: pod3
spec:containers:- name: pod3image: busyboxcommand: ["/bin/sh", "-c", "echo $(db_host) $(db_port)"]envFrom:- configMapRef:name: cm1-configrestartPolicy: Never
kubectl apply -f pod3.yamlkubectl logs  pod3

kubectl delete  pod pod3

通过数据卷使用configmap

vim pod4.yaml
apiVersion: v1
kind: Pod
metadata:name: pod4
spec:containers:- name: pod4image: busyboxcommand: ["/bin/sh", "-c", "cat /config/db_host"]volumeMounts:- name: config-volumemountPath: /configvolumes:- name: config-volumeconfigMap:name: cm1-configrestartPolicy: Never
kubectl apply -f pod4.yamlkubectl logs  pod4

kubectl delete pod pod4

configmap热更新

vim nginx.conf
server {listen       8000;server_name  _;location / {root /usr/share/nginx/html;index  index.html index.htm;}
}
kubectl create configmap nginxconf --from-file=nginx.confkubectl describe cm nginxconf

vim my-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: my-nginx
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxvolumeMounts:- name: config-volumemountPath: /etc/nginx/conf.dvolumes:- name: config-volumeconfigMap:name: nginxconf
kubectl apply -f my-nginx.yamlkubectl get pod -o wide

kubectl exec my-nginx-85fb986977-87dff -- cat /etc/nginx/conf.d/nginx.conf

curl 10.244.219.17:8000

编辑cm,修改端口

kubectl edit  cm nginxconf

kubectl exec my-nginx-85fb986977-87dff -- cat /etc/nginx/conf.d/nginx.conf

修改cm后,过上几秒配置信息会同步到容器,但是容器内运行的服务并不会加载生效,需要手动刷新

方式一:(推荐)

kubectl delete  pod my-nginx-85fb986977-87dff

方式二:(手动触发版本更新,会新建一个replicaset)

kubectl patch deployments.apps my-nginx --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20231103"}}}}}'
kubectl get pod -o wide

curl 10.244.106.133

secrets

从文件创建

echo -n 'admin' > ./username.txtecho -n 'westos' > ./password.txtkubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txtkubectl get secrets db-user-pass -o yaml

编写yaml文件

echo -n 'admin' | base64echo -n 'westos' | base64

vim mysecret.yaml
apiVersion: v1
kind: Secret
metadata:name: mysecret
type: Opaque
data:username: YWRtaW4=			#必须编码后的值password: d2VzdG9z
kubectl apply -f mysecret.yamlkubectl get secrets mysecret -o yaml

将Secret挂载到Volume中

vim pod1.yaml
apiVersion: v1
kind: Pod
metadata:name: mysecret
spec:containers:- name: nginximage: nginxvolumeMounts:- name: secretsmountPath: "/secret"readOnly: truevolumes:- name: secretssecret:secretName: mysecret
kubectl apply  -f pod1.yamlkubectl get pod

kubectl exec  mysecret -- ls /secret

kubectl delete  -f pod1.yaml

向指定路径映射 secret 密钥

vim pod2.yaml
apiVersion: v1
kind: Pod
metadata:name: mysecret
spec:containers:- name: nginximage: nginxvolumeMounts:- name: secretsmountPath: "/secret"readOnly: truevolumes:- name: secretssecret:secretName: mysecretitems:- key: usernamepath: my-group/my-username
kubectl apply -f pod2.yamlkubectl exec  mysecret -- cat /secret/my-group/my-username

kubectl delete  -f pod2.yaml

将Secret设置为环境变量

vim pod3.yaml
apiVersion: v1
kind: Pod
metadata:name: secret-env
spec:containers:- name: pod3image: busyboxcommand: ["/bin/sh", "-c", "env"]env:- name: SECRET_USERNAMEvalueFrom:secretKeyRef:name: mysecretkey: username- name: SECRET_PASSWORDvalueFrom:secretKeyRef:name: mysecretkey: passwordrestartPolicy: Never
kubectl apply -f pod3.yamlkubectl logs secret-env

存储docker registry的认证信息

kubectl create secret docker-registry myregistrykey --docker-server=reg.westos.org --docker-username=admin --docker-password=westos --docker-email=hjl@westos.org

新建私有仓库

vim pod4.yaml
apiVersion: v1
kind: Pod
metadata:name: mypod
spec:containers:- name: game2048image: reg.westos.org/westos/game2048imagePullSecrets:- name: myregistrykey
kubectl apply -f pod4.yamlkubectl  get pod

推荐把registrykey绑定到sa,这样yaml文件中就可以不用指定,更加安全。

kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "myregistrykey"}]}'kubectl describe sa default

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

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

相关文章

深入剖析React Hooks中的 useCallback

前言 自 React 16.8 版本引入 Hooks 以来,useCallback 成为了前端开发者们越来越青睐的一个功能。useCallback 可以有效优化组件性能,尤其在处理函数式组件中的状态更新时。本文将详细介绍 useCallback 的用法及其注意事项。 1. useCallback 简介 use…

Unreal UnLua + Lua Protobuf

Unreal UnLua Lua Protobuf https://protobuf.dev/ protobuf wire format:pb 编译到底层的数据协议 https://github.com/starwing/lua-protobuf/blob/master/README.zh.md buffer 处理 lua string 可以当 buffer 用,# len 不会遇到 0 截断&#xf…

算法leetcode|85. 最大矩形(rust重拳出击)

文章目录 85. 最大矩形:样例 1:样例 2:样例 3:样例 4:样例 5:提示: 分析:题解:rust:go:c:python:java: 85. 最…

Python算法例8 将整数A转换为B

1. 问题描述 给定整数A和B,求出将整数A转换为B,需要改变bit的位数。 2. 问题示例 把31转换为14,需要改变2个bit位,即:(31)10(11111)2,(14&…

c语言的内存使用

#include <stdio.h> #include <stdlib.h> typedef struct info{int a;char b; }Info, *INFO;int main(){INFO ptr (INFO)malloc(sizeof(Info) *3);ptr[0].a 100;ptr[1].b c;printf("[%c]\n", ptr[1].b);free(ptr)return 0; } 定义一个结构体Info&…

CAN 协议常见面试题总结

0.讲一下CAN通讯的过程 第一段&#xff1a;需要发送的通讯设备&#xff0c;先发送一个显性电平0&#xff0c;告诉其他通讯设备&#xff0c;需要开始通讯。 第二段&#xff1a;就是发送仲裁段&#xff0c;其中包括ID帧和数据帧类型&#xff0c;告诉其他通讯设备&#xff0c;需…

alipay sofa-ark-1.1.5 各种类加载器 优先级

. 各种类加载器 & 优先级 /*** <pre>* 类加载器的使用优先级&#xff08;由高到底&#xff09;* 0、JDKDelegateClassLoader* 1、ContainerClassLoader* 2、hook级别类{前置}加载器* 3、PluginClassLoader* 4、B…

uniapp分包

以下是一个完整的 Uniapp 分包示例&#xff0c;代码分布在不同的文件夹中&#xff0c;其中包含了两个子包 sub1 和 sub2&#xff0c;以及一个主包 main。 在项目根目录下创建 pages 文件夹&#xff0c;并在其中创建各个页面的文件夹。 在每个页面文件夹中创建对应的 vue 文件和…

【SSD1306 OLED屏幕测试程序 (开源)orangepi zero2 全志H616 】.md updata: 23/11/07

orangepi zero2 H616 SSD1306 OLED屏幕测试程序 orangepi zero2 配置wiringpi 库后&#xff0c;突发奇想构建一个测试oled屏幕的程序&#xff0c;放一个蜗牛每次移动一个像素点&#xff0c;实时显示蜗牛的步数&#xff0c;后面要显示其他内容在此代码上修改即可&#xff0c;如…

flask和fastapi的区别以及demo实现

flask和fastapi的区别以及demo实现 flask和fastapi的区别fastapi简单demoFastAPI包括全局异常捕捉和参数验证的demoflask和fastapi的区别 Flask:Flask是一个轻量级的Web框架,它提供了最基本的工具,可以自由选择其他库和组件来构建应用。灵活性:Flask允许用户自由选择数据库、…

NLP之BM25:BM25算法的简介、相关库、案例应用之详细攻略

NLP之BM25:BM25算法的简介、相关库、案例应用之详细攻略 目录 相关文章 NLP之BM25:BM25算法的简介、相关库、案例应用之详细攻略 Py之rank_bm25:rank_bm25的简介、安装、使用方法 BM25算法的简介

智慧农业:农林牧数据可视化监控平台

数字农业是一种现代农业方式&#xff0c;它将信息作为农业生产的重要元素&#xff0c;并利用现代信息技术进行农业生产过程的实时可视化、数字化设计和信息化管理。能将信息技术与农业生产的各个环节有机融合&#xff0c;对于改造传统农业和改变农业生产方式具有重要意义。 图扑…

Android Studio(项目收获)

取消按钮默认背景色 像按钮默认背景色为深蓝色&#xff0c;即使使用了background属性指定颜色也不能生效。 参考如下的解决方法&#xff1a; 修改/res/values/themes.xml中的指定内容如下&#xff1a; <style name"Theme.TianziBarbecue" parent"Theme.Mater…

OSCP系列靶场-Esay-Dawn

总结 getwebshell → SMB共享无密码 → SMB存在上传功能 → 存在周期执行任务 → SMB上传反弹shell → 被执行获得webshell 提 权 思 路 → suid发现zsh → -p容器提权 准备工作 启动VPN 获取攻击机IP > 192.168.45.163 启动靶机 获取目标机器IP > 192.168.242.11 信…

51单片机-定时计数器

文章目录 前言1 原理2.编程 前言 1 原理 2.编程 定时计算&#xff1a; 50ms501000us 一个机器周期&#xff1a;1.085us 65535 - 501000/1.08546082 故 40082*1.08549998.97 /*定时器1&#xff0c;定时模式 工作模式1 16位计数器&#xff0c; 定时20秒后使能蜂鸣器*/ #include…

luckysheet的使用——13.开启表格非编辑模式(指定单元格可编辑,除此以外其他单元格全部不可编辑)

对指定单元格进行设置为可编辑&#xff0c;在开启非编辑模式后&#xff0c;只有指定的单元格才可以进行编辑&#xff0c;其余单元格全部无法编辑。 1.修改系统&#xff0c;在对应的前端页面代码中对右键菜单新增功能&#xff1a; {title: 设置可编辑,onClick: function (click…

5 Tensorflow图像识别(下)模型构建

上一篇&#xff1a;4 Tensorflow图像识别模型——数据预处理-CSDN博客 1、数据集标签 上一篇介绍了图像识别的数据预处理&#xff0c;下面是完整的代码&#xff1a; import os import tensorflow as tf# 获取训练集和验证集目录 train_dir os.path.join(cats_and_dogs_filter…

Elasticsearch 8.9 服务端接收创建索引和查询索引信息源码

一、创建索引1、接收创建索引的RestCreateIndexAction2、Master执行创建索引的类TransportCreateIndexAction3、创建一个任务(创建索引的)&#xff0c;放入一个队列4、执行创建索引时会先搜索模版5、创建索引的build&#xff0c;更新集群状态(1) initializeEmpty初始化索引的分…

AI+BI行业数字化转型研讨会 - 总结精华回顾

带您一起观看研讨会精彩内容回顾&#xff01; || 导语 AIBI行业数字化转型研讨会—引领未来&#xff0c;智慧转型 德昂信息技术(北京)有限公司于2023年10月26日成功举办了AIBI行业数字化转型研讨会。此次盛会汇聚了产业精英、企业领袖以及技术专家&#xff0c;共同探讨在快速…

Python的编码规范:PEP 8介绍及基本遵循原则

文章目录 PEP 8简介基本遵循原则1. 缩进2. 行宽3. 空行4. 导入5. 空格6. 命名约定7. 表达式和语句中的空格8. 注释9. 编码声明10. 文档字符串PEP 8简介 PEP 8,或Python Enhancement Proposal 8,是一个官方文档,发布于2001年。它由Guido van Rossum,Python语言的创始人,以…