Change:
Which jobs are failing: pull-kubernetes-e2e-gci-gce-ipvs Which test(s) are failing: Not all of these fail on every run: [sig-network] Networking Granular Checks: Services should function for endpoint-Service: http [sig-network] Services should allow pods to hairpin back to themselves through services [sig-storage] Flexvolumes should be mountable when non-attachable [sig-network] Networking Granular Checks: Services should function for endpoint-Service: udp [sig-network] Services should have session affinity timeout work for service with type clusterIP [LinuxOnly] [Conformance] [sig-network] Services should allow pods to hairpin back to themselves through services Since when has it been failing: Looking through job history, it looks like the last time any runs passed was on May 2. Testgrid link: N/A since testgrid filtered tests based on [sig-network] Anything else we need to know: This was discovered by in , it also appears to be affecting other PRs. /cc /sig network
This seems related to , but if I'm interpreting test results correctly pull-kubernetes-e2e-gci-gce-ipvs never stopped failing.
/triage unresolved Comment when the issue is assessed and confirmed. I am a bot run by vllry. ‍
/assign I'll try to fix those cases
May I ask why do you think this is related to ? Seems like first two flexvolumes related cases failed, then after some commit, service related cases start failing.
let me handle the services tests, I think I know the problem, will try to submit a fix today. Do you know what happen with the storage ones?
/assign I just submitted a PR to fix the failing tests
Thanks, seems like all cases fixed.

Discussion:
"-j", "ACCEPT", ) <ins> // Install the kubernetes-specific postrouting rules. We use a whole chain for // this so that it is easier to flush and change, for example if the mark // value should ever change. // NB: THIS MUST MATCH the corresponding code in the kubelet writeLine(proxier.natRules, []string{ "-A", string(kubePostroutingChain), "-m", "mark", "!", "--mark", fmt.Sprintf("%s/%s", proxier.masqueradeMark, proxier.masqueradeMark), "-j", "RETURN", }...) // Clear the mark to avoid re-masquerading if the packet re-traverses the network stack. writeLine(proxier.natRules, []string{ "-A", string(kubePostroutingChain), // XOR proxier.masqueradeMark to unset it "-j", "MARK", "--xor-mark", proxier.masqueradeMark, }...) masqRule := []string{ "-A", string(kubePostroutingChain), "-m", "comment", "--comment", `"kubernetes service traffic requiring SNAT"`, "-j", "MASQUERADE", } if proxier.iptables.HasRandomFully() { masqRule = append(masqRule, "--random-fully") } writeLine(proxier.natRules, masqRule...) // Install the kubernetes-specific masquerade mark rule. We use a whole chain for // this so that it is easier to flush and change, for example if the mark // value should ever change. writeLine(proxier.natRules, []string{ "-A", string(KubeMarkMasqChain), "-j", "MARK", "--or-mark", proxier.masqueradeMark, }...) </ins> // Write the end-of-table markers. writeLine(proxier.filterRules, "COMMIT") writeLine(proxier.natRules, "COMMIT")

} } <del> // Install the kubernetes-specific postrouting rules. We use a whole chain for // this so that it is easier to flush and change, for example if the mark // value should ever change. // NB: THIS MUST MATCH the corresponding code in the kubelet writeLine(proxier.natRules, []string{ "-A", string(kubePostroutingChain), "-m", "mark", "!", "--mark", fmt.Sprintf("%s/%s", proxier.masqueradeMark, proxier.masqueradeMark), "-j", "RETURN", }...) // Clear the mark to avoid re-masquerading if the packet re-traverses the network stack. writeLine(proxier.natRules, []string{ "-A", string(kubePostroutingChain), // XOR proxier.masqueradeMark to unset it "-j", "MARK", "--xor-mark", proxier.masqueradeMark, }...) masqRule := []string{ "-A", string(kubePostroutingChain), "-m", "comment", "--comment", `"kubernetes service traffic requiring SNAT"`, "-j", "MASQUERADE", } if proxier.iptables.HasRandomFully() { masqRule = append(masqRule, "--random-fully") } writeLine(proxier.natRules, masqRule...) // Install the kubernetes-specific masquerade mark rule. We use a whole chain for // this so that it is easier to flush and change, for example if the mark // value should ever change. writeLine(proxier.natRules, []string{ "-A", string(KubeMarkMasqChain), "-j", "MARK", "--or-mark", proxier.masqueradeMark, }...) </del> } // getExistingChains get iptables-save output so we can check for existing chains and rules.