-
Bug
-
Resolution: Done-Errata
-
Major
-
4.16
-
No
-
SDN Sprint 253
-
1
-
Rejected
-
False
-
Description of problem:
Apply egressqos on OCP, the status of egressqos is empty. Check ovnkube-pod logs, it shows error like below:
I0429 09:39:19.013461 4771 egressqos.go:460] Processing sync for EgressQoS abc/default I0429 09:39:19.022635 4771 egressqos.go:463] Finished syncing EgressQoS default on namespace abc : 9.174361ms E0429 09:39:19.028426 4771 egressqos.go:368] failed to update EgressQoS object abc/default with status: Apply failed with 1 conflict: conflict with "ip-10-0-62-24.us-east-2.compute.internal" with subresource "status": .status.conditions I0429 09:39:19.031526 4771 egressqos.go:460] Processing sync for EgressQoS default/default I0429 09:39:19.039827 4771 egressqos.go:463] Finished syncing EgressQoS default on namespace default : 8.322774ms E0429 09:39:19.044060 4771 egressqos.go:368] failed to update EgressQoS object default/default with status: Apply failed with 1 conflict: conflict with "ip-10-0-70-102.us-east-2.compute.internal" with subresource "status": .status.conditions I0429 09:39:19.052877 4771 egressqos.go:460] Processing sync for EgressQoS abc/default I0429 09:39:19.055945 4771 egressqos.go:463] Finished syncing EgressQoS default on namespace abc : 3.182828ms E0429 09:39:19.060563 4771 egressqos.go:368] failed to update EgressQoS object abc/default with status: Apply failed with 1 conflict: conflict with "ip-10-0-62-24.us-east-2.compute.internal" with subresource "status": .status.conditions I0429 09:39:19.072238 4771 egressqos.go:460] Processing sync for EgressQoS default/default
Version-Release number of selected component (if applicable):
4.16
How reproducible:
always
Steps to Reproduce:
1. create egressqos in ns abc
% cat egress_qos.yaml
kind: EgressQoS
apiVersion: k8s.ovn.org/v1
metadata:
name: default
namespace: abc
spec:
egress:
- dscp: 46
dstCIDR: 3.16.78.227/32
- dscp: 30
dstCIDR: 0.0.0.0/0
2. check egressqos
% oc get egressqos default -o yaml apiVersion: k8s.ovn.org/v1 kind: EgressQoS metadata: creationTimestamp: "2024-04-29T09:24:55Z" generation: 1 name: default namespace: abc resourceVersion: "376134" uid: f9dfe380-81ee-4edd-845d-49ba2c856e81 spec: egress: - dscp: 46 dstCIDR: 3.16.78.227/32 - dscp: 30 dstCIDR: 0.0.0.0/0 status: {}
3. check crd egressqos
% oc get crd egressqoses.k8s.ovn.org -o yaml apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: "2024-04-29T05:23:12Z" generation: 1 name: egressqoses.k8s.ovn.org ownerReferences: - apiVersion: operator.openshift.io/v1 blockOwnerDeletion: true controller: true kind: Network name: cluster uid: 3bfac7ab-ca29-477f-a97f-27592b7e176d resourceVersion: "3642" uid: 25dabf13-611f-4c29-bf22-4a0b56e4b7f7 spec: conversion: strategy: None group: k8s.ovn.org names: kind: EgressQoS listKind: EgressQoSList plural: egressqoses singular: egressqos scope: Namespaced versions: - name: v1 schema: openAPIV3Schema: description: EgressQoS is a CRD that allows the user to define a DSCP value for pods egress traffic on its namespace to specified CIDRs. Traffic from these pods will be checked against each EgressQoSRule in the namespace's EgressQoS, and if there is a match the traffic is marked with the relevant DSCP value. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: properties: name: pattern: ^default$ type: string type: object spec: description: EgressQoSSpec defines the desired state of EgressQoS properties: egress: description: a collection of Egress QoS rule objects items: properties: dscp: description: DSCP marking value for matching pods' traffic. maximum: 63 minimum: 0 type: integer dstCIDR: description: DstCIDR specifies the destination's CIDR. Only traffic heading to this CIDR will be marked with the DSCP value. This field is optional, and in case it is not set the rule is applied to all egress traffic regardless of the destination. format: cidr type: string podSelector: description: PodSelector applies the QoS rule only to the pods in the namespace whose label matches this definition. This field is optional, and in case it is not set results in the rule being applied to all pods in the namespace. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchLabels: additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object required: - dscp type: object type: array required: - egress type: object status: description: EgressQoSStatus defines the observed state of EgressQoS type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: EgressQoS listKind: EgressQoSList plural: egressqoses singular: egressqos conditions: - lastTransitionTime: "2024-04-29T05:23:12Z" message: no conflicts found reason: NoConflicts status: "True" type: NamesAccepted - lastTransitionTime: "2024-04-29T05:23:12Z" message: the initial names have been accepted reason: InitialNamesAccepted status: "True" type: Established storedVersions: - v1
Actual results:
egressqos status is not updated correctly
Expected results:
egressqos status should be updated once applied.
Additional info:
% oc version Client Version: 4.16.0-0.nightly-2024-04-26-145258 Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3 Server Version: 4.16.0-0.nightly-2024-04-26-145258 Kubernetes Version: v1.29.4+d1ec84a
- links to
-
RHEA-2024:0041 OpenShift Container Platform 4.16.z bug fix update