Cloud computing is an extension of concepts introduced through Virtualization. A compute cloud is a setup in which a controller manages any number of Virtual Machines. These machines may act as independent machines, thus it appears to the user as if real hardware was being used, or can act together as a Compute Cluster. A cloud can be set up on one physical machine or many physical machines.
The most often used differentiation in cloud computing occurs between Public Clouds and Private Clouds. A public cloud is generally rather large in setup to provide sufficient resources to let everyone who chooses to access the cloud resources over the Internet. Private clouds are generally smaller in scale than public clouds, but can also be quite large in terms of physical servers. Private clouds are just that, private, i.e. accessible only within the confines of the company policies for he company operating the cloud.
The basic principals for cloud computing are the same, whether a cloud is public or private. The hardware consists of one or more physical servers running cloud infrastructure software. The cloud has one or multiple controllers. The controller is the part of the software stack that orchestrates the deployment of VMs (virtual machines) on the cloud infrastructure (the physical servers forming the compute cloud). The controller software runs on a machine generally referred to as head node or control node. The controller can generally also be a VM. Depending on the cloud software implementation it may be required to run software that is part of the cloud infrastructure stack on the cloud/compute nodes, the physical servers that make up the compute cloud. The cloud nodes run a Hypervisor and the hypervisor used generally determines the format of the VMs. The cloud stack also generally contains some type of storage controller as the VMs need to be stored somewhere and then get copied for launch. In some cases there may also be cloud infrastructure code running inside the VMs.
There are of course many details that go into making all of this work, but from a high level point of view this covers it.
There are a number of implementations of the cloud infrastructure stack. In the openSUSE Build Service we currently maintain 3 implementations that allow you to turn a running SUSE system into a controller or cloud node.