spectrocloud / cluster-api-provider-vsphere-static-ip Goto Github PK
View Code? Open in Web Editor NEWStatic IP support for CAPV
License: Apache License 2.0
Static IP support for CAPV
License: Apache License 2.0
How is Spectrocloud static IP controller project reclaiming IP addresses when CAPV deletes machines.
From the code it seems like the delete ipclaim isn't called.
// releases static ip back to the ip pool
DeallocateIP(name string, pool IPPool, ownerObj runtime.Object) error
func (m Metal3IPAM) DeallocateIP(name string, pool ipam.IPPool, ownerObj runtime.Object) error {
return nil
}
Can you please share your thoughts on this.
During deployment of a CAPV cluster, cluster-api-provider-vsphere-static-ip
consistently associates control plane machine IPClaims with the specified cluster.x-k8s.io/ip-pool-name
. Worker node MachineDeployments, however are associated with seemingly random IPPools that happen to exist within the same management cluster namespace default
.
Example of incorrect IPClaim to IPPool association for a MachineDeployment VSphereMachineTemplate below:
IPPool for cluster: ts-kubeflow-sac-prod
(target of machine template)
apiVersion: ipam.metal3.io/v1alpha1
kind: IPPool
metadata:
name: ip-pool-ts-kubeflow-sac-prod
namespace: default
spec:
clusterName: ts-kubeflow-sac-prod
...
IPPool for cluster: ts-kubeflow-rck-dev
(different cluster and not the desired target)
apiVersion: ipam.metal3.io/v1alpha1
kind: IPPool
metadata:
name: ip-pool-ts-kubeflow-rck-dev
namespace: default
spec:
clusterName: ts-kubeflow-rck-dev
...
vSphereMachineTemplate used within cluster: ts-kubeflow-sac-prod
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3
kind: VSphereMachineTemplate
metadata:
name: ts-kubeflow-sac-prod-md1-v1
namespace: default
labels:
cluster.x-k8s.io/ip-pool-name: ip-pool-ts-kubeflow-sac-prod
...
IPClaim associated with incorrect IPPool at spec/pool/name:
apiVersion: ipam.metal3.io/v1alpha1
kind: IPClaim
metadata:
name: ts-kubeflow-sac-prod-md1-v1-srxbl-0
namespace: default
spec:
pool:
apiVersion: ipam.metal3.io/v1alpha1
kind: IPPool
name: ip-pool-ts-kubeflow-rck-dev
namespace: default
status:
address:
name: ts-kubeflow-rck-dev-10-7-5-155
namespace: default
capv-static-ip-controller-manager output:
I1231 01:04:34.235684 1 vspheremachine_controller.go:84] controllers/VSphereMachine "msg"="waiting for machine controller to set ownerRef on VSphereMachine" "vspheremachine"={"Namespace":"default","Name":"ts-kubeflow-sac-prod-md1-v1-srxbl"}
I1231 01:04:34.381432 1 vspheremachine_controller.go:115] controllers/VSphereMachine "msg"="reconcile IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.482634 1 metal3io_ipam.go:116] controllers/VSphereMachine "msg"="IPPool ip-pool-ts-kubeflow-rck-dev is available" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.482814 1 metal3io_ipam.go:34] controllers/VSphereMachine "msg"="get IPAddress ts-kubeflow-sac-prod-md1-v1-srxbl-0" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.583548 1 metal3io_ipam.go:138] controllers/VSphereMachine "msg"="waiting for IPClaim ts-kubeflow-sac-prod-md1-v1-srxbl-0" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.583633 1 metal3io_ipam.go:46] controllers/VSphereMachine "msg"="allocate IP ts-kubeflow-sac-prod-md1-v1-srxbl-0" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.583675 1 metal3io_ipam.go:168] controllers/VSphereMachine "msg"="create IPClaim ts-kubeflow-sac-prod-md1-v1-srxbl-0" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.598704 1 metal3io_ipam.go:207] controllers/VSphereMachine "msg"="created IPClaim ts-kubeflow-sac-prod-md1-v1-srxbl-0, waiting for IPAddress to be available" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.599510 1 vspheremachine_controller.go:162] controllers/VSphereMachine "msg"="waiting for IP address to be available for the VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.599743 1 vspheremachine_controller.go:115] controllers/VSphereMachine "msg"="reconcile IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.601003 1 metal3io_ipam.go:116] controllers/VSphereMachine "msg"="IPPool ip-pool-ts-kubeflow-sac-prod is available" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.601322 1 metal3io_ipam.go:34] controllers/VSphereMachine "msg"="get IPAddress ts-kubeflow-sac-prod-md1-v1-srxbl-0" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.601396 1 metal3io_ipam.go:138] controllers/VSphereMachine "msg"="waiting for IPClaim ts-kubeflow-sac-prod-md1-v1-srxbl-0" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.601431 1 metal3io_ipam.go:46] controllers/VSphereMachine "msg"="allocate IP ts-kubeflow-sac-prod-md1-v1-srxbl-0" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.601472 1 metal3io_ipam.go:168] controllers/VSphereMachine "msg"="create IPClaim ts-kubeflow-sac-prod-md1-v1-srxbl-0" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.636264 1 metal3io_ipam.go:207] controllers/VSphereMachine "msg"="created IPClaim ts-kubeflow-sac-prod-md1-v1-srxbl-0, waiting for IPAddress to be available" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:04:34.636385 1 vspheremachine_controller.go:162] controllers/VSphereMachine "msg"="waiting for IP address to be available for the VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:05:04.603433 1 vspheremachine_controller.go:115] controllers/VSphereMachine "msg"="reconcile IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:05:04.603535 1 metal3io_ipam.go:116] controllers/VSphereMachine "msg"="IPPool ip-pool-rck-nonprod-corp-nonpci-1 is available" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:05:04.603548 1 metal3io_ipam.go:34] controllers/VSphereMachine "msg"="get IPAddress ts-kubeflow-sac-prod-md1-v1-srxbl-0" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:05:04.703930 1 vspheremachine_controller.go:170] controllers/VSphereMachine "msg"="static IP for VSphereMachine is ts-kubeflow-rck-dev-10-7-5-155" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:05:04.703966 1 vspheremachine_controller.go:174] controllers/VSphereMachine "msg"="assigning IP address 10.7.5.155 to VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:05:04.713373 1 vspheremachine_controller.go:198] controllers/VSphereMachine "msg"="successfully reconciled IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:05:04.714026 1 vspheremachine_controller.go:115] controllers/VSphereMachine "msg"="reconcile IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:05:04.723723 1 vspheremachine_controller.go:198] controllers/VSphereMachine "msg"="successfully reconciled IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:05:06.445087 1 vspheremachine_controller.go:115] controllers/VSphereMachine "msg"="reconcile IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:05:06.464530 1 vspheremachine_controller.go:198] controllers/VSphereMachine "msg"="successfully reconciled IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:05:29.796114 1 vspheremachine_controller.go:115] controllers/VSphereMachine "msg"="reconcile IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:05:29.812420 1 vspheremachine_controller.go:198] controllers/VSphereMachine "msg"="successfully reconciled IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:06:18.317444 1 vspheremachine_controller.go:115] controllers/VSphereMachine "msg"="reconcile IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:06:18.326339 1 vspheremachine_controller.go:198] controllers/VSphereMachine "msg"="successfully reconciled IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:06:18.334197 1 vspheremachine_controller.go:115] controllers/VSphereMachine "msg"="reconcile IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:06:18.348064 1 vspheremachine_controller.go:198] controllers/VSphereMachine "msg"="successfully reconciled IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:06:18.350894 1 vspheremachine_controller.go:115] controllers/VSphereMachine "msg"="reconcile IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
I1231 01:06:18.378199 1 vspheremachine_controller.go:198] controllers/VSphereMachine "msg"="successfully reconciled IP address for VSphereMachine" "namespace"="default" "vsphereMachine"="ts-kubeflow-sac-prod-md1-v1-srxbl"
Is there perhaps some issue with cluster.x-k8s.io/ip-pool-name
label matching amongst multiple IPPools within the same namespace?
The "cluster.x-k8s.io/dns-search-domains" annotation with the DNS search domain list, is currently expected from capi.Cluster. This is incorrect and should instead be retrieved from ipamv1.IPPool.
We have issues with WaitingForStaticIPAllocation
state if new VM is Provision state. Probably of bad API versions in CAPI 1.5.1, CAPV 1.8.1
Do you plan update the provider to support new API versions?
Thank you
when metal3-io/ip-address-manager#16 is merged, we should do the same here.
For a VSphereMachine, by default, the list of Nameservers and SearchDomains should be retrieved from the VSphereMachineTemplate (VSphereMachineTemplate.spec.template.spec.network[*].devices[0].searchDomains).
If an IPAM solution also provides a value for the same, that should override the default.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.