如何保护Google Kubernetes engine中的只读端口10255? [英] How to secure the read-only port 10255 in Google Kubernetes Engine (GKE)?

查看:22
本文介绍了如何保护Google Kubernetes engine中的只读端口10255?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经使用以下命令创建了一个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和应用程序的信息。 我在Kuberneteshere的文档中可以看到,提到:

--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)
我尝试通过执行ssh编辑节点中的kube-config.yaml文件并重新启动kubelet来禁用端口,但我成功了。但这是一个好方法吗?我相信当禁用xxx.xx.xx.xx:10255/metrics时可能会出现多个问题。有没有办法确保港口的安全?而不是禁用它?

我看到这个github issue,我确信有一种方法可以保护此端口。我不确定该怎么做。

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

推荐答案

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

我们需要做的是阻止私有网络外部访问此端口。

因为您在GCP上使用GKE。如果您使用的是私有网络,可以向端口(10255)添加防火墙规则,仅允许来自私有网络资源的传入流量。禁用从Internet访问此端口。

这篇关于如何保护Google Kubernetes engine中的只读端口10255?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆