文章目录
1. secret配置管理的作用和类型
该卷主要是用来存储pod的一些敏感信息的
-
Secret 对象类型用来保存敏感信息,例如密码、OAuth 令牌和 ssh key。
-
敏感信息放在 secret 中比放在 Pod 的定义或者容器镜像中来说更加安全和灵活。
-
Pod 可以用两种方式使用 secret:
作为 volume 中的文件被挂载到 pod 中的一个或者多个容器里;
当 kubelet 为 pod 拉取镜像时使用。 -
Secret的类型:
Service Account
:Kubernetes 自动创建包含访问 API 凭据的 secret,并自动修改
pod 以使用此类型的 secret。Opaque
:使用base64编码存储信息,可以通过base64 --decode解码获得原始数据,因此安全性弱。kubernetes.io/dockerconfigjson
:用于存储docker registry的认证信息。
serviceaccout 创建时 Kubernetes 会默认创建对应的 secret。对应的 secret 会自动挂载到 Pod 的 /run/secrets/kubernetes.io/serviceaccount
目录中。
[kubeadm@server1 configmap]$ kubectl get secrets
NAME TYPE DATA AGE
default-token-jhnhn kubernetes.io/service-account-token 3 6d1h
[kubeadm@server1 configmap]$
2. 查看卷的挂载
[kubeadm@server2 cm]$ kubectl run test --image=busybox --restart=Never
pod/test created
[kubeadm@server2 cm]$ kubectl describe pod test
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-64lq2 (ro)
Volumes:
default-token-64lq2:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-64lq2
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
[kubeadm@server2 cm]$ kubectl get sa
NAME SECRETS AGE
default 1 7d21h
[kubeadm@server2 cm]$ kubectl describe sa default
Name: default
Namespace: default
Labels: <none>
Annotations: <none>
Image pull secrets: <none>
Mountable secrets: default-token-64lq2
Tokens: default-token-64lq2
Events: <none>
[kubeadm@server2 cm]$ kubectl run test --image=busybox -it
If you don't see a command prompt, try pressing enter.
/ # ls
bin dev etc home proc root sys tmp usr var
/ # cd /var/run/secrets/kubernetes.io/serviceaccount
/var/run