pod配置资源管理

发布时间:2024年01月16日

?

secret

保存密码,token,敏感的k8s资源

configmap(重点)

1.2加入的新特征

这类数据可以存放在镜像当中,但是放在secret当中可以更方便的控制,减少暴露的风险,保存加密的信息

secret的类型

docker-registry

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

generic

是secret的默认模式,Opaque base64加密编码的secret.用户自定义的密码,密钥等等

tls

TLS/SSL 用于存储证书和私钥,https

还有一种系统自建的:kubernetes.io/service-account-token用来访问系统的apiserver.pod会默认使用这个kubernetes.io/service-account-token创建的secret和apiserver通信自动挂载到

pod的/run/secret/kubernets.io/serviceaccount.?? ? ? ? ? ??

[root@master01 k8s]# kubectl get secret
NAME                                 TYPE                                  DATA   AGE
default-token-zf8fj                  kubernetes.io/service-account-token   3      18d
nfs-client-provisioner-token-b5z8s   kubernetes.io/service-account-token   3      3d21h
#查看secret中的加密信息

pod引用secret:三种方式

1

挂载的方式,secret挂载到pod当中的一个或者多个容器上的卷里面

2

把secret作为容器的环境变量

3

Docker-registry 可以作为集群拉取镜像时的使用,使用secret可以实现免密登录

secret创建方式

陈述式
[root@master01 opt]# kubectl create secret generic mysecret --from-file=/opt/username.txt --from-file=/opt/password.txt
secret/mysecret created
#指定文件提取信息,generic:默认类型,opaque加密类型 ,--from-file=/opt/username.txt 从指定文件获取需要加密的信息
[root@master01 k8s]# kubectl get secrets
NAME                                 TYPE                                  DATA   AGE
default-token-zf8fj                  kubernetes.io/service-account-token   3      19d
mysecret                             Opaque                                2      80m
mysecret1                            Opaque                                2      7m22s
nfs-client-provisioner-token-b5z8s   kubernetes.io/service-account-token   3      4d1h
#查看有哪些secrets
[root@master01 k8s]# kubectl describe secrets mysecret
Name:         mysecret
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
password.txt:  4 bytes
username.txt:  3 bytes
#查看secret详细信息

[root@master01 k8s]# echo username.txt | base64
dXNlcm5hbWUudHh0Cg==
[root@master01 k8s]# echo password.txt | base64
cGFzc3dvcmQudHh0Cg==
#以64加密方式加密



声明式
[root@master01 opt]# echo passwd.txt | base64
cGFzc3dkLnR4dAo=
[root@master01 opt]# echo username.txt | base64
dXNlcm5hbWUudHh0Cg==
#将格式转换为64加密方式

[root@master01 k8s]# kubectl explain secret
KIND:     Secret
VERSION:  v1
#看一下secret的格式


apiVersion: v1
kind: Secret
metadata:
  name: mysecret1
type:
  Opaque
data:
  username: dXNlcm5hbWUudHh0Cg==
  password: cGFzc3dkLnR4dAo=
#先要创建secret

#挂载的方式实现
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: nginx
    image: nginx:1.22
    volumeMounts:
    - name: secrets
      mountPath: "/etc/secrets"
      readOnly: false
  volumes:
  - name: secrets
    secret:
      secretName: mysecret1

[root@master01 k8s]# kubectl exec -it mypod bash
root@mypod:/etc/secrets# cd /etc/secrets/
root@mypod:/etc/secrets# ls
password  username
root@mypod:/etc/secrets# cat password
passwd.txt
保存的内容是加密内容,容器内部可以解密直接引用

例2

[root@master01 k8s]# kubectl create secret generic mysecret2 --from-file=/etc/passwd --from-file=/etc/shadow

apiVersion: v1
kind: Secret
metadata:
  name: mysecret1
type:
  Opaque
data:
  username: MTIzCg==
  password: NDU2Cg==

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: nginx
    image: nginx:1.22
    volumeMounts:
    - name: secrets
      mountPath: "/etc/secrets"
      readOnly: false
  volumes:
  - name: secrets
    secret:
      secretName: mysecret2

[root@master01 k8s]# kubectl exec -it mypod bash
root@mypod:/# cd /etc/secrets/
root@mypod:/etc/secrets# ls
passwd  shadow
root@mypod:/etc/secrets# cat passwd

把secret作为容器的环境变量

[root@master01 k8s]# echo 123 | base64
MTIzCg==
[root@master01 k8s]# echo 456 | base64
NDU2Cg==

#创建secret
apiVersion: v1
kind: Secret
metadata:
  name: mysecret1
type:
  Opaque
data:
  username: MTIzCg==
  password: NDU2Cg==

创建pod

文章来源:https://blog.csdn.net/2301_79410672/article/details/135621037
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。