NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/flask-deployment 2/2 2 2 88s
NAME DESIRED CURRENT READY AGE
replicaset.apps/flask-deployment-576496558b 2 2 2 89s
我们看到存在两个 Pods、一个 Deployment、一个带有外部 IP 的 LoadBalancer 效劳和一个 ReplicaSet。
让我们拜访运用顺序:
$ curl
Hello World!
我们失掉了 Hello World!。这表明 Flask 运用顺序在正常任务。
运用 Shell 对运用顺序停止拜访正如我在引言中所描画的,Disroless 容器中没有 shell,因此不能够进入到容器内。但是,让我们试着在容器中执行 exec:
$ kubectl exec -it flask-deployment-576496558b-hnbxt /bin/bash
OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory": unknown
command terminated with exit code 126
我们无法衔接到容器上。
容器日志呢?假设拿不到容器日志,我们就失掉了调试运用顺序的办法。
让我们试着去拿日志:
$ kubectl logs flask-deployment-576496558b-hnbxt
* Running on :5000/
* Restarting with reloader
10.128.0.4 - - [31/May/2020 13:40:27] "GET / HTTP/1.1" 200 -
10.128.0.3 - - [31/May/2020 13:42:01] "GET / HTTP/1.1" 200 -
所以容器日志是可以被获取到的!
结论运用 Distroless 作为基础镜像是一种令人兴奋的保护容器安全的方式。由于镜像小并且仅包含运用顺序和依赖项,因此它为运用顺序提供了最小的攻击面。它在更大水平上提高了运用顺序的安全性,所以它是保护容器安全的好办法。
(责任编辑:admin)