不是真正的编程问题,但很想知道Kubernetes或Minikube如何管理秘密&在多个节点/ pod上使用它?
假设我创建了一个秘密来使用kubectl
拉取图像,如下所示 -
$ kubectl create secret docker-registry regsecret --docker-server=https://index.docker.io/v1/ --docker-username=$USERNM --docker-password=$PASSWD --docker-email=vivekyad4v@gmail.com
后端会发生什么过程?k8s或Minikube将如何在多个节点/ pod上使用这些进程?
答案 0 :(得分:4)
Kubernetes中的所有数据都由API Server
组件管理,该组件对数据存储执行CRUD操作(仅限当前选项为etcd
)。
当您向secret
提交kubectl
API Server
时,它会将资源和数据存储在etcd
中。建议在API服务器中为秘密启用加密(通过设置正确的标志),以便数据在静止时加密,否则任何有etcd
访问权限的人都可以读取您的secrets
用纯文本。
当secret
或您的示例中需要Pod
来从私有注册表中提取Docker镜像时,需要API Server
来自节点的kubelet
- 本地tmpfs
并保留在kubelet
中,因此它永远不会触及任何未加密的硬盘。
这里有另一个安全建议,称为节点授权(再次通过设置正确的标志并将证书分发到API服务器和Kubelet来设置)。启用节点授权后,您可以确保secrets
只能请求要在该特定节点上运行的资源(包括!
),因此被黑客入侵的节点只会公开该节点上的资源节点,而不是一切。
答案 1 :(得分:0)
Secrets
存储在kubernetes群集中唯一的数据存储区中:etcd
。
与其他所有资源一样,kubelet
可执行文件(在每个节点中运行)通过查询k8s'来检索它们。 API server
答案 2 :(得分:0)
如果您正在徘徊如何真正访问机密(存储的文件),
kubectl -n kube-system exec -it <etcd-pod-name> ls -l /etc/kubernetes/pki/etcd
您将获得所有键(系统默认键)的列表。您只需使用cat
命令即可查看它们(如果它们已加密,您将看不到太多内容)