kubectl exec 与 ssh 使用堡垒

kubectl exec vs ssh using bastion

KOPS 让我们创建一个 Kubernetes 集群以及一个可以通过 ssh 访问集群节点的堡垒

使用此设置,使用 kubectl 与 Kubernetes API 服务器交互是否仍被认为是安全的?

kubectl 也可以用来在 pods 上与 shell 互动?这个需要什么限制吗?

如果有需要采取什么预防措施? 是否也只能通过堡垒访问 Kubernetes API 服务器?

Kops 提供了合理的默认值,所以简单的答案是:在配置后按原样使用 kops 配置的基础设施是相当安全的。

使用默认的 Kops 设置部署 Kubernetes 集群根本不安全,因此不应在生产中使用。使用 kops edit 命令可以完成多个配置设置。通过 Kops 创建 Kubnertes 集群后应考虑以下几点:
  • 私有子网中的集群节点(可以使用 --subnets 和最新版本的 kops 指定现有的私有子网)
  • 私有 API 负载均衡器(--api-内部负载均衡器类型)
  • 限制 API 负载均衡器到特定的私有 IP 范围 (--admin-access 10.xx.xx.xx/24)
  • 将对群集节点的 SSH 访问限制为特定 IP (--ssh-access xx.xx.xx.xx/32)
  • 强化映像也可以配置为集群节点 (--image)
  • 授权级别必须是RBAC。使用最新的 Kubernetes 版本,默认情况下启用 RBAC。
  • 可以通过 Kops 编辑集群中的配置启用审计日志。 kubeAPIServer: auditLogMaxAge: 10 auditLogMaxBackups: 1 auditLogMaxSize: 100 auditLogPath: /var/log/kube-apiserver-audit.log auditPolicyFile: /srv/kubernetes/audit.yaml