feat: kubelet dualstack support

Enable cloud Dual-Stack with --node-ip support since Kubernetes 1.29 release.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
This commit is contained in:
Serge Logvinov
2024-02-16 14:40:29 +02:00
committed by Serge
parent de5598648f
commit a752d1056d
2 changed files with 37 additions and 1 deletions

View File

@@ -138,7 +138,12 @@ func (i *instances) InstanceMetadata(_ context.Context, node *v1.Node) (*cloudpr
} }
} }
addresses := []v1.NodeAddress{{Type: v1.NodeInternalIP, Address: providedIP}} addresses := []v1.NodeAddress{}
for _, ip := range strings.Split(providedIP, ",") {
addresses = append(addresses, v1.NodeAddress{Type: v1.NodeInternalIP, Address: ip})
}
addresses = append(addresses, v1.NodeAddress{Type: v1.NodeHostName, Address: node.Name}) addresses = append(addresses, v1.NodeAddress{Type: v1.NodeHostName, Address: node.Name})
instanceType, err := i.getInstanceType(vmRef, region) instanceType, err := i.getInstanceType(vmRef, region)

View File

@@ -416,6 +416,37 @@ func (ts *ccmTestSuite) TestInstanceMetadata() {
Zone: "pve-1", Zone: "pve-1",
}, },
}, },
{
msg: "NodeExistsDualstack",
node: &v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "cluster-1-node-1",
Annotations: map[string]string{
cloudproviderapi.AnnotationAlphaProvidedIPAddr: "1.2.3.4,2001::1",
},
},
},
expected: &cloudprovider.InstanceMetadata{
ProviderID: "proxmox://cluster-1/100",
NodeAddresses: []v1.NodeAddress{
{
Type: v1.NodeInternalIP,
Address: "1.2.3.4",
},
{
Type: v1.NodeInternalIP,
Address: "2001::1",
},
{
Type: v1.NodeHostName,
Address: "cluster-1-node-1",
},
},
InstanceType: "4VCPU-10GB",
Region: "cluster-1",
Zone: "pve-1",
},
},
{ {
msg: "NodeExistsCluster2", msg: "NodeExistsCluster2",
node: &v1.Node{ node: &v1.Node{