这是我在kubectl get events
输出中发现的内容
Warning FailedToUpdateEndpoint Endpoints Failed to update endpoint mynamespace/myservice: Operation cannot be fulfilled on endpoints "myservice": the object has been modified; please apply your changes to the latest version and try again
我知道this discussion,但是由于我没有通过Endpoint
显式创建yaml
资源,因此我认为这并不适用。
在图像更新过程中,我注意到一些次要的服务不可用,所以我试图检查是否与此有关。
在v1.12.7-gke.25
上,在主节点和节点上都使用版本为istio
的GKE。
答案 0 :(得分:1)
k8s 的常见行为是让k8s客户端(控制器)知道再试一次。
Kubernetes利用资源版本的概念来实现乐观并发。 concurrency-control-and-consistency
由系统填充。
要使客户端能够建立集群当前状态的模型,所有Kubernetes对象资源类型都必须支持一致的列表和称为监视的增量更改通知供稿。每个Kubernetes对象都有一个resourceVersion字段,表示存储在基础数据库中的该资源的版本。检索资源集合(命名空间或群集范围的资源)时,来自服务器的响应将包含resourceVersion值,该值可用于发起针对服务器的监视。服务器将返回在提供的resourceVersion之后发生的所有更改(创建,删除和更新)。这样,客户端可以获取当前状态,然后监视更改而不会丢失任何更新。如果客户端监视断开连接,他们可以从最后返回的resourceVersion重新启动新监视,或者执行新的收集请求并再次开始efficient-detection-of-changes