安全
Kubernetes 安全注意事项 ¶
SSH 访问 ¶
默认情况下,允许从任何地方访问主节点和节点的 SSH。但是,不会安装任何公钥。您可以改用 ec2 实例连接,它安装在默认 AMI 中。
如果您想为集群使用固定密钥,则必须在 kops create cluster 命令中指定 --ssh-public-key <公钥文件>,或使用 kops create sshpublickey。您也可以在集群规范中设置以下内容
spec:
sshKeyName: <ssh key pair>
名为 <ssh 密钥对> 的 EC2 密钥对必须已经存在。
默认情况下,允许来自任何地址的 SSH 访问。您可以通过在集群规范中设置 spec.sshAccess 或使用 kops create cluster --ssh-access 来限制来自何处可以进行 SSH 连接。
要更改现有集群的 SSH 公钥
kops delete sshpublickey --name <集群名称> sshpublickeykops create sshpublickey --name <集群名称> -i ~/.ssh/newkey.pubkops update cluster <集群名称> --yes重新配置启动模板。kops rolling-update cluster --name <集群名称> --yes滚动所有机器,以便它们具有新密钥。
Docker 配置 ¶
如果您使用的是私有注册表,例如 quay.io,您可能熟悉管理每个命名空间的 imagePullSecrets 的不便之处。使用 kOps 挂钩 与私有镜像一起使用也可能很痛苦。要将所有节点上的 Docker 配置为访问一个或多个私有注册表
kops create secret --name <集群名称> dockerconfig -f ~/.docker/config.jsonkops rolling-update cluster --name <集群名称> --yes立即滚动所有机器,以便它们具有新密钥(可选)
这将 config.json 存储在所有节点(包括主节点)上的 /root/.docker/config.json 中,以便 Kubernetes 和系统容器都可以使用其中定义的注册表。
请注意,这在使用 containerd 时也适用。
实例 IAM 角色 ¶
在您的集群上运行的所有 Pod 都可以访问底层实例 IAM 角色。目前,权限范围相当广泛。有关详细信息以及缓解措施,请参阅 iam_roles.md。