【K8S 】K8S配置资源管理

news/2024/2/24 7:03:40/文章来源:https://blog.csdn.net/koeda1/article/details/135623808

一、Secret:

1、概念

用来保存密码。token,敏感的K8S资源

这类数据可以直接存放在镜像中,但是放在Secret中可以更方便的控制,减少暴露的风险

Secret:保存加密的信息

2、Secret类型:

docker-registry:存储docker仓库的认证信息,以及docker的组件认证信息(私有)

generic:是Secret的默认模式,类型Opaque,base64加密编码的Secret,存储用户自定义的米密码、秘钥等

tls:用于存储证书和私钥(保存http信息)

系统自建的:kubernetes.io/service-account-token用来访问系统的apiserver,pod会默认使用这个kubernetes.io/service-account-token创建的Secret和apiserver通信。自动挂载到pod的/run/Secret/kubernetes.io/serviceaccount

3、pod如何来引用Secret:

三种方式:

  1. 挂载的方式,Secret挂载到pod中的一个或者多个容器上的卷里面
  2. 把Secret作为容器的环境变量
  3. 集群拉取镜像时使用docker-registry。使用Secret可以实现免密登录

4、创建Secret的方式:

4.1、陈述式创建:
#创建Secret,指定文件提取信息
kubectl create secret generic mysecret --from-file=/opt/username.txt --from-file=/opt/passwd.txt
generic默认类型,Opequel加密类型
--from-file=/opt/username.txt
从指定获取需要加密的信息

4.2、声明式创建:

要先将资源转换格式

apiVersion: v1
kind: Secret
metadata:name: mysecret1
type:Opaque
data:username: dXNlcm5hbWUudHh0Cg==passwd: cGFzc3dkLnR4dAo=

5、Secret使用:

apiVersion: v1
kind: Pod
metadata:name: mypod
spec:containers:- name: nginximage: nginx:1.22volumeMounts:- name: secretsmountPath: "/etc/secret"readOnly: falsevolumes:- name: secretssecret:secretName: mysecret1

 kubectl create secret generic mysecret2 --from-file=/etc/passwd --from-file=/etc/shadow

保存的内容是加密的内容,但是容器内部可以直接解密引用

作为环境变量传参到容器内部:
 

apiVersion: v1
kind: Pod
metadata:name: mypod1
spec:containers:- name: nginximage: nginx:1.22env:- name: USERvalueFrom:secretKeyRef:name: mysecret1key: passwd- name: USER1valueFrom:secretKeyRef:name: mysecret1key: username
#我给nginx1.22这个容器里面传了两个环境变量USRE和USER1,这两个变量的值从Secret来,分别是两条mysecret1中的加密信息

docker-registry

存储docker仓库的认证信息,以及docker的组件认证信息(私有)

kubectl create secret docker-registry myharbor --docker-server=20.0.0.66 --docker-username=admin --docker-password=123456

apiVersion: v1
kind: Pod
metadata:name: mypod2
spec:containers:- name: nginximage: hub.test.com/library/nginx:v1imagePullSecrets:- name: myharbor

6、总结

Secret的三种方式:

创建可以时陈述式创建也可以时声明式创建

引用方式:

挂载使用(最常用)

设定环境变量

docker-Registry

二、configmap:

1、概述

保存的是不需要加密的信息。configmap是1.2之后引入的功能,应用程序会从配置文件,命令参数,以及环境变量中读取配置信息

将保存的信息传给容器内部

configmap在创建容器中,给他注入我们需要的配置信息。既可以是单个的属性也可以是整个容器的配置文件

2、configmap的创建方式:

陈述式和声明式

#从指定文件创建,可以是一个也可以是多个文件
kubectl create configmap game  --from-file=/opt/configmap/aa.txt --from-file=/opt/configmap/bb.txtkubectl get cm
kubectl describe cm game

使用字面值创建:

#直接在命令行定义好值和变量
kubectl create configmap game1 --from-literal=koeda=shuai --from-literal=kang=nb

声明式:

apiVersion: v1
kind: ConfigMap
metadata:name: game
data:koeda: shuaikang: niubi

configmap是以键值对的形式保存

3、pod中如何使用configmap

apiVersion: v1
kind: Pod
metadata:name: mypod2
spec:containers:- name: nginx1image: nginx:1.22env:- name: USER1valueFrom:configMapKeyRef:name: game1key: kang- name: USER2valueFrom:configMapKeyRef:name: game1key: koeda

数据卷使用configmap:

kubectl create configmap nginx-con --from-file=/opt/nginx-configmap/nginx.conf

vim nginx.conf

worker_processes  2;
events {worker_connections  1024;
}
http {default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       8081;server_name  localhost;charset utf-8;location / {root   html;index  index.html index.php;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}
}

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx1labels:app: nginx1spec:replicas: 3selector:matchLabels:app: nginx1template:metadata:labels:app: nginx1spec:containers:- name: nginx1image: nginx:1.22ports:- containerPort: 8081volumeMounts:- name: nginx-configmountPath: /etc/nginx/- name: nginx-mountmountPath: /usr/share/nginx/htmlvolumes:- name: nginx-configconfigMap:name: nginx-con- name: nginx-mounthostPath:path: /opt/htmltype: DirectoryOrCreate

我们通过数据卷的形式,将文件传到pod容器内部

去对应节点上,将html下创建index.html

访问测试404

因为是yum安装的所以访问目录时/usr/share/nginx/html,而不是默认的root

想要在容器运行的情况下更改配置文件,就要用到configmap的热备份

configmap的热更新:

在pod运行的情况下对configmap的配置信息进行修改,直接生效(反映到容器当中)

#热更新就是进去给nginx-con的配置文件

kubectl edit cm nginx-con

因为挂载,所以更改之后容器内的文件会自动更改

文件更新之后,需要重启服务才能能生效

configmap的热更新是不会触发pod的滚动更新机制(deployment)

热更新之后,容器中的配置文件改变,但是生效要重启服务

version/config来触发滚动更新机制

kubectl patch deployments.apps nginx1 --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20240116"}}}}}'

重启之后再访问:

4、总结:

Secret:主要作用就是保存加密文件,主要的使用方式就是挂载方式

configmapMap:把配置信息传给容器,主要方式也是挂载方式

configmap的热更新,热更新可以直接反应到容器的内部,也不会触发pod的更新机制,如果不是需要重启的配置,都可以直接生效

需要重启的,可以通过version/config来触发滚动更新机制

所谓的更新就是把配置信息重新传到容器内,重启也是一样

configmap在工作中在工作中经常是把配置文件传给容器

configmap是以键值对形式保存的非加密的信息

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

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

相关文章

第十二章 Java内存模型与线程(二)

文章目录 12.4 Java与线程12.4.1 线程的实现12.4.2 Java线程调度12.4.3 状态转换 12.5 Java与协程12.5.1 内核线程的局限12.5.2 协程的复苏12.5.3 Java的解决方案 12.4 Java与线程 12.4.1 线程的实现 实现线程主要有三种方式:使用内核线程实现(1&#…

算法通关村第十六关—滑动窗口与堆结合(黄金)

滑动窗口与堆结合 堆与滑动窗口问题的结合 LeetCode239给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位,返回滑动窗口中的最大值。  对于最大值、K个最大这种场…

【教3妹学编程-算法题】最大频率元素计数

2哥 : 3妹,最近有个电视剧《繁花》非常火🔥,你听说了吗? 3妹:没有,最近一直在忙着找工作,哪有时间看电视啊 2哥 : 啊?大周末还不休息一下啊,这么辛苦。 3妹:当…

压力测试JMeter

一、JMeter概述 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务…

k8s node节点加入集群,token过期

1、master01节点执行 kubeadm token create --print-join-command 2、执行命令 kubeadm join 192.168.0.236:16443 --token qucd8q.hsfq4a1afluzaky3 --discovery-token-ca-cert-hash sha256:92175a356db070deb2ddd3823e288e3005a4baeec9b68580dcc11ce4d3767195 3、查看node02…

FPGA节省资源篇------正确处理设计优先级

声明:以下文章来源于孤独的单刀,仅供学习用途 概述 假如现在有一种方法–可以在不怎么需要修改已有设计的情况下,就可以帮您节省50%的设计资源,那你会试试看吗? 当前市场环境下,更低廉的成本却可获得同等…

steam游戏搬砖项目还能火多久?

最近放假回到老家,见了不少亲戚朋友,大家不约而同都在感叹今年大环境不好,工作不顺,生意效益不好,公司状况不佳,反问我们生意如何?为了让他们心里好受一点,我也假装附和道:也不咋地&…

3000多个厂商默认帐号、默认密码

做网工这行,多少都会遇上各种各样的厂商设备,遇上一些新设备,虽然没有更改密码,但不知道初始默认账号和密码是啥。 今天就给你整理了一波,三千多个厂商默认帐号、默认密码,方便你查阅。 不过,…

自创C++题目——风扇

预估难度 简单 题目描述 有一个风扇,它有个旋转叶片,每个旋转叶片的编号是,请输出它旋转后,中心点与地面的直线距离哪个叶片最近,输出此旋转叶片的编号。默认以“”的形式。 当时: 当或时,…

MATLAB二维与三维绘图实验

本文MATLAB源码,下载后直接打开运行即可[点击跳转下载]-附实验报告https://download.csdn.net/download/Coin_Collecter/88740747 一、实验目的 掌握图形对象属性的基本操作。掌握利用图形对象进行绘图操作的方法。 二、实验内容 利用图形对象绘制曲线&#xff…

Java基础 - 黑马

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 知…

最佳实践分享:SQL性能调优

SQL性能调优是一个需要不断探索和实践的过程,旨在确保数据库查询的高效运行。本文将分享一些SQL性能调优的最佳实践,帮助您提升数据库性能,减少查询响应时间。 一、索引优化 索引是提高查询性能的关键。以下是一些关于索引优化的建议&#…

完全备份、增量备份、差异备份、binlog日志

1 案例1:完全备份与恢复 1.1 问题 练习物理备份与恢复练习mysqldump备份与恢复 1.2 方案 在数据库服务器192.168.88.50 练习数据的备份与恢复 1.3 步骤 实现此案例需要按照如下步骤进行。 步骤一:练习物理备份与恢复 冷备份,需停止数…

数据结构第十四弹---链式二叉树基本操作(下)

链式二叉树 1、翻转二叉树2、判断两棵树是否相同3、判断二叉树是否是单值二叉树4、对称二叉树5、判断二叉树是否是平衡二叉树6、判断二叉树是否是另一棵二叉树的子树7、二叉树的销毁8、二叉树的深度遍历8.1、前序遍历8.2、中序遍历8.3、后序遍历 9、二叉树的构造和遍历总结 1、…

Java中的JVM指令和Arthas以及Dump文件(jvisualvm和MemoryAnalyzer工具)整体分析

前言 前天线上服务器突然内存和CPU都爆掉了,两者都处于一种高负载的状态,而且还是周末的情况下,起初运维同事怀疑是用户数量暴增,但是数据面板上并没有出现很大的暴增现象,之前的服务器4G的内存都跑不满后面升到8G还是…

NFS网络共享服务存储

目录 一、NFS简介 1、NFS定义: 2、NFS的特点 3、NFS的优缺点 4、NFS的原理图示 二、服务端NFS配置文件:/etc/exports 三、实验:NFS共享存储服务配置 1、服务端安装nfs-utils与rpcbind软件包 2、服务端新建共享文件夹目录并赋予权限 …

【数据库】sql优化有哪些?从query层面和数据库层面分析

目录 归纳sql本身的优化数据库层面的优化 归纳 这类型问题可以称为:Query Optimization,从清华AI4DB的paper list中,该类问题大致可以分为: Query RewriterCardinality EstimationCost EstimationPlan Optimization 从中文的角…

排序算法9----计数排序(C)

计数排序是一种非比较排序,不比较大小 。 1、思想 计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 2、步骤 1、统计数据:统计每个数据出现了多少次。(建立一个count数组,范围从[MIN,MAX],MAX代表arr中…

网页屏幕适配通透了

一,如果设计尺寸固定 那就按照固定尺寸开发 一般都是1920*1080 二,需要适配多种像素屏幕(大屏可视化) 可使用媒体查询设置多套css样式或者使用自适应单位,%,vw,vh 最好解决方案rem&#xff…

Unity Shader 的模板测试效果

模板测试是渲染管线中逐片元操作的一环,它的作用是筛选出指定模板的片元,而不符合模板的片元会被舍弃,从而做到一个遮罩的效果。 以下是Unity中实践的一个效果: 场景中可以看出,熊模型和茶壶模型都在差不多的位置&am…