kubernetes: Change node.status.addresses to "atomic" (Dual-stack; log errors for multiple InternalIP items in Node objects)

What happened:

When upgrading from v1.20.x->v1.20.y or -> v1.21.0 with multiple InternalIP items for dual-stack as;

# kubectl get node vm-001 -o json | jq .status.addresses
[
  {
    "address": "192.168.1.1",
    "type": "InternalIP"
  },
  {
    "address": "1000::1:c0a8:101",
    "type": "InternalIP"
  },
  {
    "address": "vm-001",
    "type": "Hostname"
  }
]

these entries shows up in the kube-apiserver logs;

E0412 12:58:28.787842    3558 fieldmanager.go:186] [SHOULD NOT HAPPEN] failed to update managedFields for /, Kind=: failed to convert new object (/v1, Kind=Node) to smd typed: .status.addresses: duplicate entries for key [type="InternalIP"]

The upgrade seems to be succesful beside the error log items.

What you expected to happen:

There shall be no SHOULD NOT HAPPEN log entries.

How to reproduce it (as minimally and precisely as possible):

  • Start kubelet with multiple node-ip’s --node-ip=192.168.1.1,1000::1:192.168.1.1.
  • Upgrade from v1.20.x (perhaps other versions. I have only tested from v1.20.x and v1.21.0->master)

Anything else we need to know?:

Unsure what sig but I set; /sig/network

Environment:

  • Kubernetes version (use kubectl version): v1.20.x
  • Cloud provider or hardware configuration: No Cloud provider.
  • OS (e.g: cat /etc/os-release): own setup
  • Kernel (e.g. uname -a): linux-5.11.1
  • Install tools: from scratch
  • Network plugin and version (if this is a network-related bug): bridge
  • Others:

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Reactions: 2
  • Comments: 25 (22 by maintainers)

Most upvoted comments

Yes - I am confused now on all the tags. If I wanted to switch Ports []ServicePort from merge to atomic, is that a “safe” change?

On Fri, Apr 16, 2021 at 9:29 AM Antoine Pelisse @.***> wrote:

Updating SMP is always complicated and has been generally abandoned. In that specific case, I don’t think we would benefit a lot to be honest. The list is mostly small, it can easily be replaced, no?

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/kubernetes/kubernetes/issues/101029#issuecomment-821294636, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABKWAVCTBIJLAGSGJMYGZKLTJBQWDANCNFSM42ZIZQCA .

// Note: This field is declared as mergeable, but the merge key is not sufficiently

To be clear, we don’t have any corruption here. The “not sufficiently unique” throws SSA off and prevents it from doing its job.