前言
首先我们要清楚,Pod 中的容器很可能因为各种原因故障而死掉,如果真的发生故障,那 Deployment 等 Controller 会通过动态创建和销毁 Pod 来保证应用整体的健壮性。而每个 Pod 都有自己的 IP 地址,当 Controller 用新的 Pod 代替已发生故障的 Pod 时,新的 Pod 就会分配到新的 IP 地址。那这样就产生了一个问题:如果一组 Pod 对外提供服务,那它的 IP 是很有可能发生变化的,那客户端如何找到并访问这个服务呢?K8s 官方给出的解决方案是:Service。
Service 在 K8s 中是一个 REST 对象,和 Pod 类似。Service 从逻辑上代表了一组 Pod,具体是哪些 Pod 则是由 label 标签来挑选的。Service 有自己的 IP,而且这个 IP 是不变的。K8s 建立和维护了 Service 与 Pod 的映射关系,客户端只需要访问 Service 的 IP 即可,无论后端 Pod 如何变化,对客户端都不会有任何影响,因为 Service 是不会变的。
一、创建 Deployment
vim nginx.yml