You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
VMware Instances not able to reach to management server #10012
We could add a policy routing rule in VR to forward the traffic to the management server/ enpoint.url from instances via public interface. CC @vishesh92@weizhouapache
@rajujith ,
Why do we want VMs be able to reach the MS? they could go through the north net if needed. It does not seem like a good idea to route them directly. I understand that it would be convenient for CKS nodes, but it does not seem like a good idea to me.
cc @weizhouapache@vishesh92
@rajujith , Why do we want VMs be able to reach the MS? they could go through the north net if needed. It does not seem like a good idea to route them directly. I understand that it would be convenient for CKS nodes, but it does not seem like a good idea to me. cc @weizhouapache@vishesh92
@DaanHoogland
I agree we/users should have better network design.
the VM should reach the MS via public network, not private network.
I think we could consider it as a known limitation for CKS on vmware.
@rajujith , Why do we want VMs be able to reach the MS? they could go through the north net if needed. It does not seem like a good idea to route them directly. I understand that it would be convenient for CKS nodes, but it does not seem like a good idea to me. cc @weizhouapache@vishesh92
@DaanHoogland, consider the management server URL public/intranet. It is expected that all intended users, including guest instances, should be able to access it from their client devices. In this specific case, the client is CKS. If there is a use case to allow access only from the CKS nodes but not regular guest instances even that could be implemented. The traffic traversal is CKS node -> VR guest interface -> VR public interface -> other hopes in the path -> management server public interface directly or via LB. Since the guest instance traffic is not traversing the management networks I believe it is a regular traffic that can be allowed.
Once a Kubernetes cluster is deployed on the vmware by cloudstack
End user downloads the kubernetes config to interact with the kubernetes cluster via the kubectl tool
End user populates the kubeconfig file so that kubectl tool can interact with the cluster
vi .kube/config
Check the status of the cluster and nodes
kubectl get nodes
NAME STATUS ROLES AGE VERSION
test-control-19377251026 Ready control-plane 4d22h v1.28.4
test-node-19377261815 Ready <none> 4d22h v1.28.4
Deploy a sample application (example: nginx) on kubernetes cluster
kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-86dcfdf4c6-fvjxp 1/1 Running 0 66m
nginx-deployment-86dcfdf4c6-jqjxw 1/1 Running 0 66m
Now end user want to access the application via public IP ( public IP range ) which is provided by cloudstack
Now check the external public IP , it will be struck in pending state
k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d22h
nginx-deployment LoadBalancer 10.104.200.145 <pending> 80:32333/TCP 66m
This is because the controller pods( cloud-controller-manager and kube-controller-manager)
which are responsible for assigning a public IP address to the application fails
We will work on static routes improvement and policy-based routes for next release.
With it, user vms could reach the mgmt server by adding a new route via public network.
cc @rajujith@DaanHoogland@alexandremattioli
So, for now we need to tell vmware/cks users to create loadbalancer rules by hand. Would that work, @weizhouapache@vishesh92 ?
We can tell users to create the LB rules by hand. But, the user would also have to ensure that the list of VMs stays up to date in the load balancer rules.
IMO, for long term, solution is to allow connectivity between MS & nodes. As of now, this also prevents the user to run a VM which could runs some automation scripts to manage cloudstack resources.
So, for now we need to tell vmware/cks users to create loadbalancer rules by hand. Would that work, @weizhouapache@vishesh92 ?
We can tell users to create the LB rules by hand. But, the user would also have to ensure that the list of VMs stays up to date in the load balancer rules. IMO, for long term, solution is to allow connectivity between MS & nodes. As of now, this also prevents the user to run a VM which could runs some automation scripts to manage cloudstack resources.
How about setting a rule on the VR, only in the case the VM is a CKS control node?
So, for now we need to tell vmware/cks users to create loadbalancer rules by hand. Would that work, @weizhouapache@vishesh92 ?
We can tell users to create the LB rules by hand. But, the user would also have to ensure that the list of VMs stays up to date in the load balancer rules. IMO, for long term, solution is to allow connectivity between MS & nodes. As of now, this also prevents the user to run a VM which could runs some automation scripts to manage cloudstack resources.
How about setting a rule on the VR, only in the case the VM is a CKS control node?
@DaanHoogland
technically it is feasible, there are multiple options to achieve it.
however, from security concern, I would suggest not to enable it. The control IP of VR on VMware is private, uservm should not be able to use it.
ok, for 4.19.2 we will put the text in #10012 (comment) in the documentation and after that, convert this issue to a discussion on how to address it in the end.
Activity
[-]Instances not able to reach to management server[/-][+]VMware Instances not able to reach to management server[/+]weizhouapache commentedon Nov 29, 2024
@vishesh92
I have updated the title to emphysize this issue happens with VMware only
as Vishesh said, this causes CKS control nodes are not able to create lb rules as they cannot connect to cloudstack management server
rajujith commentedon Dec 3, 2024
We could add a policy routing rule in VR to forward the traffic to the management server/ enpoint.url from instances via public interface. CC @vishesh92 @weizhouapache
DaanHoogland commentedon Dec 3, 2024
@rajujith ,
Why do we want VMs be able to reach the MS? they could go through the north net if needed. It does not seem like a good idea to route them directly. I understand that it would be convenient for CKS nodes, but it does not seem like a good idea to me.
cc @weizhouapache @vishesh92
weizhouapache commentedon Dec 3, 2024
@DaanHoogland
I agree we/users should have better network design.
the VM should reach the MS via public network, not private network.
I think we could consider it as a known limitation for CKS on vmware.
rajujith commentedon Dec 4, 2024
@DaanHoogland, consider the management server URL public/intranet. It is expected that all intended users, including guest instances, should be able to access it from their client devices. In this specific case, the client is CKS. If there is a use case to allow access only from the CKS nodes but not regular guest instances even that could be implemented. The traffic traversal is CKS node -> VR guest interface -> VR public interface -> other hopes in the path -> management server public interface directly or via LB. Since the guest instance traffic is not traversing the management networks I believe it is a regular traffic that can be allowed.
kiranchavala commentedon Dec 4, 2024
@DaanHoogland
To provide further context on this
Once a Kubernetes cluster is deployed on the vmware by cloudstack
End user downloads the kubernetes config to interact with the kubernetes cluster via the kubectl tool
vi .kube/config
kubectl apply -f nginx.yaml
kubectl expose deploy/nginx-deployment --port=80 --type=LoadBalancerwhich are responsible for assigning a public IP address to the application fails
k logs -f cloud-controller-manager-574bcb86c-9fcgd -n kube-system
So basically a user on a vmware is unable to access the Kubernetes application via the kubernetes loadbalancer service
The workaround is expose the application via NodePort service
Follow steps 1 to 6
I think for now we can document this workaround for CKS deployments on vmware and mention the loadbalancer service is not supported on vmware
cc @rajujith @vishesh92 @weizhouapache
Ref
https://kubernetes.io/docs/tutorials/kubernetes-basics/expose/expose-intro/
https://kubernetes.io/docs/concepts/services-networking/
weizhouapache commentedon Dec 4, 2024
thanks @kiranchavala providing the workaround
I agree we could document it for now.
We will work on static routes improvement and policy-based routes for next release.
With it, user vms could reach the mgmt server by adding a new route via public network.
cc @rajujith @DaanHoogland @alexandremattioli
DaanHoogland commentedon Dec 10, 2024
So, for now we need to tell vmware/cks users to create loadbalancer rules by hand. Would that work, @weizhouapache @vishesh92 ?
vishesh92 commentedon Dec 16, 2024
We can tell users to create the LB rules by hand. But, the user would also have to ensure that the list of VMs stays up to date in the load balancer rules.
IMO, for long term, solution is to allow connectivity between MS & nodes. As of now, this also prevents the user to run a VM which could runs some automation scripts to manage cloudstack resources.
DaanHoogland commentedon Dec 16, 2024
How about setting a rule on the VR, only in the case the VM is a CKS control node?
weizhouapache commentedon Dec 16, 2024
@DaanHoogland
technically it is feasible, there are multiple options to achieve it.
however, from security concern, I would suggest not to enable it. The control IP of VR on VMware is
private, uservm should not be able to use it.DaanHoogland commentedon Dec 20, 2024
ok, for 4.19.2 we will put the text in #10012 (comment) in the documentation and after that, convert this issue to a discussion on how to address it in the end.
kiranchavala commentedon Jan 2, 2025
Created a doc pr
apache/cloudstack-documentation#466