首页 > 其他分享 >Secret,configmap的定义及使用,探针

Secret,configmap的定义及使用,探针

时间:2024-02-15 09:44:43浏览次数:21  
标签:configmap name kubectl 探针 secret Secret master k8s root

目录

Secret,configmap的定义及使用

其实这两者是差不多的,只要搞懂了secret,那么configmap也是很好理解的。这两个是干什么的呢?有什么作用呢?
我们在创建有些容器的时候,比如mysql,你在创建的时候他就要求你给他配置密码,你如果直接在命令行或者yaml文件里面把密码给写上,密码就是明文的,别人可以随意看到,非常的不安全,secret就可以将你要传给容器的隐私内容做一个加密,没那么容易被别人知道,当然,我说的是没那么容易,也就是说是可以通过一些方法查看的

secret

secret的定义

secret的定义很容易,有3种方式

  1. 来自于文件 --from-file
    来自于文件的这种方式,你的文件名就是你的键,文件内的内容就是你的值,我们现在来编写一个文件test,内容是aaa
[root@master k8s]# cat test
aaa

然后我们通过这个文件来创建secret

[root@master k8s]# kubectl create secret generic test1 --from-file=./test
[root@master k8s]# kubectl get secret
NAME    TYPE     DATA   AGE
test1   Opaque   1      1m48s

我们可以看到,有一个叫做test1的secret了,然后我们来看看它里面的内容

[root@master k8s]# kubectl get secret/test1 -o yaml
apiVersion: v1
data:
  test: YWFhCg==
kind: Secret
metadata:
  creationTimestamp: "2024-01-17T03:02:45Z"
  name: test1
  namespace: default
  resourceVersion: "273551"
  uid: 5d2bb0c1-61d2-42fb-983d-70a112a11f49
type: Opaque

我们可以看到,data那里有一个叫做test的键,但是值是YWFhCg==,他是被加密过的内容
2. 来自于键值对 --from-literal
这种方式相对来说简单一点,学习的时候比较常用一点

[root@master k8s]# kubectl create secret generic test2 --from-literal=test2=bbb
secret/test2 created
[root@master k8s]# kubectl get secret
NAME    TYPE     DATA   AGE
test1   Opaque   1      10m
test2   Opaque   1      8s

这样test2就被创建出来了,同样可以查看内容

[root@master k8s]# kubectl get secret/test2 -o yaml
apiVersion: v1
data:
  test2: YmJi
kind: Secret
metadata:
  creationTimestamp: "2024-01-17T03:12:44Z"
  name: test2
  namespace: default
  resourceVersion: "274751"
  uid: 38158752-697d-4d7a-9991-a5ce791ca503
type: Opaque
  1. 来自于env文件 --from-env-file
    这样的方式其实就是把键值对全都写到文件内,然后一次性创建出来
    我们先创建一个文件
[root@master k8s]# cat test2
test3=ccc

我们再来查看一下

[root@master k8s]# kubectl create secret generic test3 --from-env-file=./test2
[root@master k8s]# kubectl get secrets/test3 -o yaml
apiVersion: v1
data:
  test3: Y2Nj
kind: Secret
metadata:
  creationTimestamp: "2024-01-17T03:16:59Z"
  name: test3
  namespace: default
  resourceVersion: "275263"
  uid: 9337e8d4-8818-4a12-9db4-f88d0110b900
type: Opaque

secret的使用

刚刚我们已经学会了如何去定义secret,那么我们定义好了该如何去使用呢?

  1. 挂载使用
    这种方式多适用于配置文件,比如传入一个index.html文件进去这样的做法
    我们直接来看看yaml文件
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: web
  name: web
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: web
    resources: {}
# 容器挂载卷,挂载到容器内的/data
    volumeMounts:
    - name: secret
      mountPath: /data
  dnsPolicy: ClusterFirst
  restartPolicy: Always
# 定义一个卷,卷名叫做secret
  volumes:
  - name: secret
    secret:
            secretName: test3
status: {}

我们进入容器查看/data目录

[root@master k8s]# kubectl exec -it pods/web -- bash
root@web:/# cat /data/test3 
cccroot@web:/# 

进入容器的/data目录之后,我们看见目录下有个test3,并且文件内容是ccc,跟我们之前定义的一样,没有问题,这种就是通过卷挂载的方式
2. 当作环境变量使用
我们也可以直接把secret当作环境变量传递给容器,这样我们在启动mysql容器的时候就不用明文显示密码了
先创建一个secret

[root@master k8s]# kubectl create secret generic pass1 --from-literal=MYSQL_ROOT_PASSWORD=123
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: db1
  name: db1
spec:
  containers:
  - image: mysql
    name: db1
    resources: {}
# 定义容器的环境变量
    env:
# 变量名是MYSQL_ROOT_PASSWORD
    - name: MYSQL_ROOT_PASSWORD
# 值来自于secret
      valueFrom:
          secretKeyRef:
            key: MYSQL_ROOT_PASSWORD
            name: pass1
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

我们来使用这个yaml文件来创建pod,看看能否直接创建成功

[root@master k8s]# kubectl apply -f secret_mysql.yaml 
pod/db1 created
[root@master k8s]# kubectl get pods
NAME   READY   STATUS    RESTARTS   AGE
db1    1/1     Running   0          62s

我们可以看到,他就直接变成running了,我们来尝试登录一下这个mysql

# 先查看ip
[root@master k8s]# kubectl get pods -o wide
NAME   READY   STATUS    RESTARTS   AGE   IP               NODE    NOMINATED NODE   READINESS GATES
db1    1/1     Running   0          65s   10.244.104.46    node2   <none>           <none>
# 登录mysql
[root@master k8s]# mysql -uroot -p123 -h10.244.104.46
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.2.0 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 

我们可以看到,他确实是可以登录的,说明我们是可以通过这样的方式去传递环境变量的

configmap

configmap与secret的区别是,secret你去查看的时候他是加密过的,而configmap是明文的,比如aaa=111 configmap里面他就直接这样显示,其他的内容都与secret差别不大,包括定义啊,使用啊,只需要将secret的地方修改成configmap就可以了

探针

标签:configmap,name,kubectl,探针,secret,Secret,master,k8s,root
From: https://www.cnblogs.com/fsdstudy/p/17969725

相关文章

  • 在k8S中,Secret 有哪些使用方式?
    在Kubernetes(k8s)中,Secret是一种资源对象,用于存储敏感信息(如密码、密钥、凭证等),并以安全的方式将其注入到Pod中的容器。以下是KubernetesSecret的几种主要使用方式:通过--from-literal创建Secret:在命令行中创建Secret时,可以使用kubectlcreatesecret命令结合......
  • 在k8S中,Kubernetes Secret 作用是什么?
    在Kubernetes(k8S)中,Secret是一种用于存储和管理敏感信息的对象资源类型。它的主要作用是:安全存储:将密码、API密钥、TLS证书、SSH密钥等敏感数据以加密形式存储在集群内部,而不是直接暴露在配置文件或容器镜像中。保密传输:当Secret被挂载到Pod时,虽然数据是以明文形式存在于Pod......
  • UVA12467 Secret Word 题解
    题目传送门前置知识前缀函数与KMP算法解法考虑将\(S\)翻转后得到\(S'\),然后就转化为求\(S'\)的一个最长子串使得其是\(S\)的前缀。使用KMP求解即可。代码#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#defineullunsignedlonglong#d......
  • 在k8S中,Pod中的LivenessProbe探针常见方式有哪些?
    在Kubernetes(k8s)中,Pod的LivenessProbe探针常见的方式有以下三种:Exec:通过在容器内部执行一个命令来检查应用是否正常运行。如果命令的退出状态码为0,则认为应用程序是健康的;非0状态码则视为不健康。例如:livenessProbe:exec:command:-cat-/t......
  • liveness-probe探针和readness-probe
    目录探针liveness-probe存活探针探针的3种方式1.exec2.httpGet3.tcpSocketreadness-probe就绪探针1.exec2.httpGet3.tcpSocket探针在我们之前提到过的deploy控制器里面,他是对pod的状态进行管理,只有当pod的状态不是running的时候他才会重构pod,但是如果我们启动了一个ngin......
  • 第16天:信息打点-CDN绕过&业务部署&漏洞回链&接口探针&全网扫描&反向邮件
    #CDN配置:配置1:加速域名-需要启用加速的域名配置2:加速区域-需要启用加速的地区配置3:加速类型-需要启用加速的资源 #参考知识:超级Ping:http://www.17ce.com/超级Ping:https://ping.chinaz.com/接口查询:https://get-site-ip.com/接口查询:https://fofa.info/extensions/source......
  • tomcat启动时报错:Caused by: java.lang.IllegalArgumentException: AJP连接器配置secr
    31-Jan-202414:01:13.812信息[main]org.apache.coyote.AbstractProtocol.start开始协议处理句柄["http-nio-8080"]31-Jan-202414:01:13.818严重[main]org.apache.catalina.core.StandardService.startInternalFailedtostartconnector[Connector[AJP/1.3-8009]]......
  • 阿里云推出 3.x Java 探针,解锁应用观测与治理的全新姿势
    作者:张铭辉、泮圣伟前言随着春节大促即将到来,为了确保线上业务高效稳定地运行,电商企业大多会对旗下关键业务应用进行多轮测试。通过模拟线上较高流量的请求,来观察服务性能的实际表现。以某企业的业务测试报告举例:图1压测报告显示,成功率非常低,且全局接口成功率都很低通过报......
  • k8s之configmap应用
    一、创建configmap1、基于命令创建configmaproot@k8s-master01:~#kubectlcreateconfigmapdemoapp-cfg--from-literal=listen.port=8080--from-literal=listen.address='127.0.0.1'configmap/demoapp-cfgcreatedroot@k8s-master01:~#kubectlgetcmNAME......
  • k8s探针详解
    一、探针类型Kubernetes(k8s)中的探针是一种健康检查机制,用于监测Pod内容器的运行状况。主要包括以下三种类型的探针:1、存活探针(LivenessProbe)2、就绪探针(ReadinessProbe)3、启动探针(StartupProbe)(自1.16版本引入)二、探针功能1、启动探针(StartupProbe)Kubernetes......