【K8S 】K8S配置资源管理

news2024/12/23 18:40:04

一、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: nginx
    image: nginx:1.22
    volumeMounts:
    - name: secrets
      mountPath: "/etc/secret"
      readOnly: false
  volumes:
  - name: secrets
    secret:
      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: nginx
    image: nginx:1.22
    env:
      - name: USER
        valueFrom:
          secretKeyRef:
            name: mysecret1
            key: passwd
      - name: USER1
        valueFrom:
          secretKeyRef:
            name: mysecret1
            key: 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: nginx
    image: hub.test.com/library/nginx:v1
  imagePullSecrets:
  - 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.txt



kubectl 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: shuai
  kang: niubi

configmap是以键值对的形式保存

3、pod中如何使用configmap

apiVersion: v1
kind: Pod
metadata:
  name: mypod2
spec:
  containers:
  - name: nginx1
    image: nginx:1.22
    env:
      - name: USER1
        valueFrom:
          configMapKeyRef:
            name: game1
            key: kang
      - name: USER2
        valueFrom:
          configMapKeyRef:
            name: game1
            key: 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: nginx1
  labels:
    app: nginx1

spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx1

  template:
    metadata:
      labels:
        app: nginx1

    spec:
      containers:
      - name: nginx1
        image: nginx:1.22
        ports:
        - containerPort: 8081
        volumeMounts:
          - name: nginx-config
            mountPath: /etc/nginx/
          - name: nginx-mount
            mountPath: /usr/share/nginx/html

      volumes:
      - name: nginx-config
        configMap:
          name: nginx-con
      - name: nginx-mount
        hostPath:
          path: /opt/html
          type: 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.coloradmin.cn/o/1389176.html

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

相关文章

如何有效构建进攻性的网络安全防护策略

文章目录 前言一、进攻性安全策略的价值(一)进攻性安全和防御性安全的区别(二)进攻性安全带来一种新的测试和防御的方法(三)进攻性安全策略也比防御性安全策略更具前瞻性 二、进攻性安全策略的类型&#xf…

Transformer 位置编码

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

LeetCode刷题---随机链表的复制

解题思路: 使用哈希表来解决该问题 因为题中要求是深拷贝 首先对原链表遍历,将原链表每个节点和新链表每个节点形成对应关系,存入到哈希表中,key为原链表的节点,value为新链表的节点。 之后重置辅助链表指向原链表头节…

Jmemter

一、背景 有时候需要自己观察某些接口在一定并发下处理能力如果,那么Jmeter是一个很好的工具。 我所需要测试的接口是http接口,通过postman就可以发起请求,但postman单笔请求太慢,需要持续给接口一定压力,那么需要用J…

Docker登录MySQL,密码正确却提示密码错误

当我输入了正确的MySQL密码的时候确提示我密码错误: ERROR 1045 (28000): Access denied for user rootlocalhost (using password: YES) docker run --name mysql_master \ -e MYSQL_ROOT_PASSWORD123123 \ -v /root/mysql_master/data:/var/lib/mysql \ -v /root…

【电商API】DIY网络爬虫收集电商数据

DIY网络爬虫收集电商数据 网络爬虫是最常见和使用最广泛的数据收集方法。DIY网络爬虫确实需要一些编程知识,但整个过程比一开始看起来要简单得多。 当然,爬虫的有效性取决于许多因素,例如目标的难度、网站方的反爬虫措施等。如果将网络抓取用…

Spring IOC 源码分析

​ 什么是 IoC IoC (Inversion of control )控制反转。它是一种思想不是一个技术实现。描述的是:Java开发领域对象的创建以及管理的问题。 例如:现有类A依赖于类B。传统的开发方式 :往往是在类A中手动通过new关键字…

华为埋头造车,躺赚的却是黄牛?

文 | AUTO芯球 作者 | 雷歌 华为和赛力斯正在重庆哼哧a哼哧建厂造车,黄牛却在网上倒卖订单躺着赚钱。 前两天雷歌刚去试驾了问界M9,现场一车难求。 今天回来一看,好家伙,咸鱼上,黄牛们大量倒卖M9的大定订单&#x…

2024年机器人和人工智能将通过4种方式改变行业

文 | BFT机器人 前言: 2023年是人工智能界充满创造性和突破性的一年,包括生成式人工智能在内的人工智能 (AI) 技术的出现引起了全球的关注并占据了头条新闻。然而,生成式人工智能在企业中的应用仍处于早期阶段,如何最好地利用这项…

Markdown 时序图绘制详解

✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向) 🐳博客主页: 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN 🔔如果文章对您有一定的帮助请&#x1f…

消费增值模式:从五折购物到利润共享的商业逻辑

在当今的商业环境中,消费者和商家之间的关系已经不再是简单的买卖。如何让消费者在购物的同时,也能享受到更多的价值,成为了各大平台争相探索的焦点。近日,一种名为“消费增值模式”的创新逻辑正在引起广泛的关注。这一模式以产品…

iOS UI掉帧和卡顿优化解决方案记录

UI卡顿原理 在 VSync 信号到来后,系统图形服务会通过 CADisplayLink 等机制通知 App,App 主线程开始在 CPU 中计算显示内容,比如视图的创建、布局计算、图片解码、文本绘制等。随后 CPU 会将计算好的内容提交到 GPU 去,由 GPU 进行…

postman 简单测试(一)

1.postman官网 Postman API Platform 2.研究了一下postman 一些简单的功能,自己做个记录,同时希望能节约点测试时间。 2.1新建一个 collections 长期测的话,最好注册一个账号,开放更多功能。 2.2新建一个请求 后端要先搭建起来…

怎么将文件上传到linux系统

1.在虚拟机VMware上设置–选项-共享文件夹-启用 2.添加,依次选择【下一步】,浏览时,选择本机要上传的文件夹 3.勾上【启用此共享】,完成即可 4.在linux输入命令找到共享文件,共享的目录默认是/mnt/hgfs&#xff0…

QT上位机开发(MFC vs QT)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 在qt之前,上位机开发的主要方法就是mfc。后来出现了c#语言之后,上位机的开发就有一部分人转成了c#。这些开发都是在windows…

Java Chassis 3技术解密:多种序列化方式支持

原文链接:Java Chassis 3技术解密:多种序列化方式支持-云社区-华为云 打开一个简单的 REST 接口: RestSchema(schemaId "ProviderController") RequestMapping(path "/") public class ProviderController {PostMapp…

想提高阅读代码的效率?试试这些工具吧!| 京东云技术团队

1.前言 程序员间有句名言——“Talk is cheap, show me the code!”源码的确相较于言语更接近程序真实的状态,包含了更多的一手信息。因此,无论是刚开始学习代码的小白还是久经沙场的代码大神,不管是学习优秀的开源项目还是做老项…

云服务器基于Centos创建个人云盘实践经验分享

文章目录 安装运行Cloudreve安装ossfscentos更换yum源 配置ossfs挂载oss存储配置开机启动 配置cloudreve推荐阅读 安装运行Cloudreve 执行如下命令,下载cloudreve安装包。 wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/cloudreve_3.3.1_linux_amd64.tar…

kkfileview Word文件预览乱码异常问题

kkfileview Word文件预览乱码异常问题 本篇文章以CentOS为例 这里处理的是服务器没有相关中文字体的解决方案 下载中文字体包 线上 http://kkfileview.keking.cn/fonts.zip上传服务器至目录/usr/share/fonts cd /usr/share/fonts将文件上传至该文件夹下,解压…

海康visionmaster-VM 嵌入:嵌入用户软件界面的方法

描述 环境:VM4.0.0 VS2015 及以上 现象:将 VM 整体嵌入到客户软件界面中? 解答 将 VM 软件整体嵌入到客户软件中,需要利用 Panel 控件,并且需要先启动 VM 软件,具 体代码如下: C# [DllImport(“…