如何保护Google Kubernetes engine中的只读端口10255? [英] How to secure the read-only port 10255 in Google Kubernetes Engine (GKE)?
本文介绍了如何保护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屋!
查看全文