[英]Update Status for K8s Custom Resource
我正在嘗試更新自定義資源的狀態,但我無法弄清楚為什么它不起作用..
這是_types.go
:
// ScoringServerStatus defines the observed state of ScoringServer
type ScoringServerStatus struct {
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
// Important: Run "make" to regenerate code after modifying this file
Reason string `json:"reason"`
Message string `json:"message"`
Conditions []metav1.Condition `json:"conditions"`
}
//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
// ScoringServer is the Schema for the scoringservers API
type ScoringServer struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ScoringServerSpec `json:"spec,omitempty"`
Status ScoringServerStatus `json:"status,omitempty"`
}
我正在嘗試在此狀態下設置 Reason 和 Message 的值:
if !isProjectAvailable {
infoMessage = "Unable to find requested project, can't deploy scoring server"
log.Log.Info(infoMessage)
statusUpdate := scoringv1.ScoringServerStatus{Reason: "Unable to verify project in Machinify", Message: infoMessage}
log.Log.Info(statusUpdate.Reason)
scoringServer.Status = statusUpdate
if err := r.Status().Update(ctx, scoringServer); err != nil {
log.Log.Info(err.Error())
}
return ctrl.Result{Requeue: false, RequeueAfter: 0}, nil
}
但是當我運行它時沒有任何變化。 我沒有收到任何錯誤,如果我描述了資源,我沒有看到更新的狀態...
我只是遇到了同樣的問題並瀏覽了答案,不知何故你的代碼給了我一個提示。
對我來說這很好用:
err := r.Client.Status().Update(ctx, k8sproj)
if err != nil {
fmt.Printf("Could not update project id: \n%s\n ", err)
}
注意Client()
...
希望能幫助到你!
成功更新 CR 的狀態后,您應該通過返回reconcile.Result
以下列方式強制再次調用Reconcile
func:
if err := r.Status().Update(ctx, scoringServer); err != nil {
log.Log.Info(err.Error())
}
if err != nil {
return reconcile.Result{}, err
}
嘗試替換此代碼片段:
return ctrl.Result{Requeue: false, RequeueAfter: 0}, nil
和
if err != nil {
return reconcile.Result{}, err
}
為避免不必要的協調循環,您可以檢查狀態的變化:
if !reflect.DeepEqual(oldStatus, newStatus) {
if err := r.Status().Update(ctx, scoringServer); err != nil {
log.Log.Info(err.Error())
}
if err != nil {
return reconcile.Result{}, err
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.