如果您一直在试用Kubernetes,就知道这有多难。不仅有许多活动组件,pod和容器配置文件也会相当复杂。这些清单文件变庞大后,您可能很容易忽略某个重要的配置选项。
这么说吧:配置错误的Kubernetes清单文件可能会导致安全问题,甚至可能害您多花钱,尤其是将pod部署在像AWS或谷歌云这些云托管服务上时,您需要为使用的服务付费。如果pod配置不当,会过多地使用一种或多种资源,因而耗用您的每月预算。
何不花时间检查一下配置文件?因为那很耗时。
不过有一种较简单的方法。借助kube-score工具,您可以测试YAML文件,检查以下方面:
- 入站针对服务
- CronJobs有已配置的截止日期
- 所有pod都已设置资源限制和请求
- 所有pod都已设置与资源限制同样的资源请求
- 所有pod都已设置与限制同样的CPU请求
- 使用显式的非最新标签
- pullPolicy被设置为Always
- 所有StatefulSet都由PDB规定了指标
完整的检查列表可以在这里找到:https://github.com/zegl/kube-...。
这款工具非常易于使用,输出将帮助您加强YAML文件的规范,以便没有明显的安全漏洞或畸形的资源。
您如何使用这个方便的工具?下面介绍一下。
您需要什么?
- Kubernetes的运行中实例
- 拥有sudo特权的用户
如何安装kube-score?
这很容易,因为kube-score是个简单的二进制文件。我将在Ubuntu Server 20.04上进行演示。要在该平台上安装kube-score,请登录进入到服务器,使用以下命令下载必要的文件:
注意:请确保检查kube-score版本页面,确保下载的是最新版本。
使用以下命令解压缩tar文件:
- tar xvzf kube-score_1.10.1_linux_amd64.tar.gz
现在,您应该在当前工作目录中看到kube-score文件。不妨用以下命令移动它:
- sudo mv kube-score / usr / local / bin
您已准备好检查清单文件了。
如何使用kube-score?
使用kube-score异常简单。假设您想要检查文件test.yaml。转入到含有test.yaml文件的目录,然后执行以下命令:
- kube-score test.yaml
对于发现的任何问题,输出结果会列出WARNING或CRITICAL(图A)。
图A. 检查测试YAML文件的kube-score输出
这时,您可以清楚地看到YAML文件中哪些配置需要注意。确保部署之前解决了那些问题。
如果您有运行中的容器或pod,可以使用以下命令对它们运行kube-score:
- kubectl api-resources --verbs=list --namespaced -o name | xargs -n1 -I{} bash -c "kubectl get {} --all-namespaces -oyaml && echo ---" | kube-score score -
这样一来,您可能会发现内容多得多的输出(图B)。
图B. 对Kubernetes集群内的运行中容器使用kube-score
当然,kube-score并非完美,它可能无法运行您需要的特定检查——确保查看完整的检查列表,看看它的检查对您来说是否足够完整。即使它无法检查您需要的内容,kube-score在验证YAML文件方面也要比手动检查好得多,尤其是在您有众多复杂清单文件的情况下。
试一下kube-score,看看它是不是使您部署的Kubernetes更安全可靠一点。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。