如何保护GKE中的只读端口10255?

Ami*_*dav 5 google-cloud-platform kubernetes google-kubernetes-engine kubelet

我使用以下命令创建了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
Run Code Online (Sandbox Code Playgroud)

我可以看到在上述集群中创建的两个节点(或可以说GCP计算实例)中的端口(10255)是打开的。

如果我创建一个简单的GCP计算实例(因此我总共有3个VM实例)并尝试从此VM访问10255端口上GKE节点的内部IP,则无需任何身份验证或授权就可以访问它。以下是用于创建GCP计算实例的命令:

gcloud compute instances create vm-name \
 --network vpc-name \
 --subnetwork subnet-name    \
 --zone asia-south1-a
Run Code Online (Sandbox Code Playgroud)

如果我向(xxx.xx.xx.xx:10255 / pods)发送一个简单的CURL GET请求,我将获得大量有关Pod和应用程序的信息。我可以Kubernetes的文档中看到这里,应提到的是:

--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)
Run Code Online (Sandbox Code Playgroud)

我尝试通过kube-config.yaml在节点上编辑文件来禁用端口,ssh然后重新启动kubelet,我成功了。但这是一个好方法吗?我相信禁用xxx.xx.xx.xx:10255 / metrics时可能会出现多个问题。有没有办法保护端口?而不是禁用它?

我看到了这个github问题,并且可以肯定有一种方法可以保护此端口。我不确定该怎么做。

我看到Kubernetes文档总体上为我们提供了多种保护端口的方法。如何在Google Kubernetes Engine中做到这一点?

Ank*_*nde 2

正如 Yahir Hern\xc3\xa1ndez 在他的回答中建议的那样,该端口用于公开与确保平稳运行的系统相关的指标。禁用此端口可能不是一个好主意。

\n\n

我们需要做的是阻止VPC外部访问该端口。

\n\n

由于您在 GCP 上使用 GKE。如果您使用的是 VPC,则可以向端口 (10255) 添加防火墙规则,以仅允许来自 VPC 上的资源的传入流量。禁止从互联网访问此端口。

\n