k8s之Secret

kill 指令的执行原理

导读

上一篇说了ServiceAccount,这一篇就来看一下Secret。

Secret

Secret的主要作用是保管私密数据,比如密码、OAuth Tokens、SSH Keys等信息。

上一篇说到,默认的Secret主要包含三个东西,分别是token、ca.crt、namespace

 

当然,也可以包含其他信息,

例如:创建一个Secret

apiVersion: v1
kind: Secret
metadata:
  name: secret
type: Opaque
data:
  password: base64
  username: base64

  

在data域中的各子域的值必须是BASE64编码值。

Secret被创建之后,可以通过下列三种方式使用它:

(1)为Pod指定Service Account来自动使用该Secret

apiVersion: v1
kind: Pod
metadata:
  name: pod
spec:
  containers:
  - name: pod
    image: image
  serviceAccountName: serviceaccount

  

(2)通过挂载该Secret到Pod来使用它

apiVersion: v1
kind: Pod
metadata:
  name: pod
spec:
  containers:
  - name: pod
    image: image
    volumeMounts:
    - name: foo
      mountPath: "/data"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: secretname

  

 

(3)在Docker镜像下载时使用,通过设置spec.imagePullSecrets来引用

1、docker登陆私有仓库

docker login localhost:5000

  

MoChat – 国内首款完全开源的 PHP 企业微信管理系统正式发布

输入用户名和密码,如果是第一次登陆,则会创建用户,相关信息会被写入~/.docker/config.json文件中

 

 

2、用BASE64编码~/.docker/config.json的内容

cat ~/.docker/config.json | base64

  

 

3、将第二步的输出结果作为secret的data.dockercfg域的内容,由此创建一个Secret

apiVersion: v1
kind: Secret
metadata:
  name: base64secret
data:
  .dockercfg: ewoJImF1dGhzIjogewoJCSJsb2NhbGhvc3Q6NTAwMCI6IHsKCQkJImF1dGgiOiAiYkdsMWMzazZNVEl6TkRVMiIKCQl9Cgl9LAoJIkh0dHBIZWFkZXJzIjogewoJCSJVc2VyLUFnZW50IjogIkRvY2tlci1DbGllbnQvMTkuMDMuMTIgKGxpbnV4KSIKCX0KfQ==
type: kubernetes.io/dockercfg

  

4、在创建Pod时引用该Secret

apiVersion: v1
kind: Pod
metadata:
  name: k8sdemo
spec:
  containers:
  - name: k8sdemo
    image: cnode-1:5000/k8sdemo:v1.3
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 8080
  imagePullSecrets:
  - name: base64secret

  

 

在使用Mount方式挂载Secret时,Container中Secret的data域的各个域的key值作为目录的文件,Value值被BASE64编码后存在相应的文件中

该Container中可通过相应的查询命令查看所生成的文件和文件中的内容,如下所示:

 

可以通过Secret保管敏感信息,并以Mount方式将Secret挂载到Container中,然后通过访问目录中文件的方式获取信息。

当Pod被API Server创建时,API Server不会检验该Pod引用的Secret是否存在,一旦这个Pod被调度,则kubelet将试着去获取Secret的值,如果Secret不存在或暂时无法连接到API Server,则kubelet将按时间间隔定期重试获取该Secret,并发送一个Event来解释Pod没有启动的原因,一旦Secret被Pod获取,则kubelet将创建并挂载包含Secret的Volume。只有所有Volume都挂载成功,Pod中的Container才会被启动,在kubelet启动Pod中的Container后,Container中和Secret相关的Volume将不会被改变,即使Secret本身被修改。为了使用更新后的Secret,必须删除旧Pod,并重新创建一个新Pod

 

 

机器学习3-分类算法

给TA买糖
共{{data.count}}人
人已赞赏
经验教程

MySQL为什么要使用B+树索引

2021-1-18 21:49:00

经验教程

kill 指令的执行原理

2021-1-18 22:28:00

⚠️
免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。 本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途,网站会员捐赠是您喜欢本站而产生的赞助支持行为,仅为维持服务器的开支与维护,全凭自愿无任何强求。本站部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。
无意侵害您的权益,请发送邮件至 momeis6@qq.com 或点击右侧 私信:momeis 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索