合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
Kubernetes 是最流行的容器编排和部署平台。它的强大功能特性,可以保障在生产中可靠地运行容器化应用程序。
然而,有灵活性的同时也带来了复杂性,在本文中,我们将探讨许多团队遇到的 10个常见 Kubernetes 陷阱。能够识别并避免这些挑战将提高应用程序的可扩展性、可靠性和安全性,同时让你更好地控制集群及其部署。
可以说,Kubernetes 最常被违反的最佳实践之一就是在部署容器时使用latest标签。这将使我们面临无意中接受重大变更的风险,而这些变更可能影响系统稳定性。
每个人使用 latest 标签的方式各不相同,但大多数人都会将 latest 指向其项目的最新版本。例如,今天使用 helm:latest 将提供 Helm v3,但在v4版本发布后,重启就会更新到v4,但是我们可能还认为系统运行的是 v3 版本,从而引发不可预知的风险。
探针可以使我们的应用程序更具弹性。它们会告知 Kubernetes Pod 的健康状况。
当容器出现问题时,比如内存溢出,Liveness探针请求超时,那么Liveness探针会通知 Kubernetes 重启容器。
有时候应用会暂时性地无法为请求提供服务。例如,应用在启动时可能需要加载大量的数据或配置文件,或是启动后要依赖等待外部服务。在这种情况下,既不想杀死应用,也不想给它发送请求。Kubernetes 提供了Readiness探针来发现并缓解这些情况,容器所在 Pod 上报还未就绪的信息,并且不接受通过 Kubernetes Service 的流量。
下面是一个包含有效性和就绪性探针的简单 Pod:
apiVersion: v1
kind: Pod
metadata:
name: probes-demo
spec:
containers:
- name: probes-demo
image: nginx:latest
livenessProbe:
httpGet:
path: /
port: 80
readinessProbe:
httpGet:
path: /
port: 80
TOP