【发布时间】:2019-11-15 05:19:47
【问题描述】:
我使用以下命令创建了一个 GKE 私有集群(版本:1.13.6-gke.13):
gcloud container clusters create a-cluster-with-user-pass \
--network vpc-name \
--subnetwork subnet-name \
--enable-master-authorized-networks \
--username random \
--password averylongpassword \
--enable-ip-alias \
--enable-private-nodes \
--enable-private-endpoint \
--master-ipv4-cidr xxx.xx.xx.xx/28 \
--cluster-version 1.13.6-gke.13 \
--num-nodes 2 \
--zone asia-south1-a
我可以看到端口 (10255) 在上述集群中创建的两个节点(或者我们可以说是 GCP 计算实例)中都是打开的。
如果我创建一个简单的 GCP 计算实例(因此我总共有 3 个 VM 实例)并尝试从该 VM 访问 10255 端口上的 GKE 节点的内部 IP,我无需任何身份验证或授权即可访问它。 以下是用于创建 GCP 计算实例的命令:
gcloud compute instances create vm-name \
--network vpc-name \
--subnetwork subnet-name \
--zone asia-south1-a
如果我向 (xxx.xx.xx.xx:10255/pods) 发送一个简单的 CURL GET 请求,我会得到大量关于 pod 和应用程序的信息。 正如我在 Kubernetes here 的文档中看到的,提到:
--read-only-port int32
The read-only port for the Kubelet to serve on with no authentication/authorization (set to 0 to disable) (default 10255)
我尝试通过编辑节点中的kube-config.yaml 文件来禁用端口,方法是执行ssh 并重新启动kubelet,我成功了。但这是一个好方法吗?我相信当 xxx.xx.xx.xx:10255/metrics 被禁用时可能会出现多个问题。有没有办法保护港口?而不是禁用它?
我看到了这个github issue,我确信有办法保护这个端口。我不知道该怎么做。
我看到 Kubernetes 文档通常为我们提供了多种保护端口的方法。如何在 Google Kubernetes Engine 中做到这一点?
【问题讨论】:
标签: kubernetes google-cloud-platform google-kubernetes-engine kubelet