They’re both platform services for deploying cloud-native apps, and they both deal with containers, and the list goes on.
PCF is one example of an “application” PaaS, also called the Cloud Foundry Application Runtime, and Kubernetes is a “container” PaaS (sometimes called CaaS).
Pivotalis a high-level abstraction of cloud-native application development. You give PCF an application, and the platform does the rest. It does everything from understanding application dependencies to container building and scaling and wiring up networking and routing.
(source:) Pivotal Cloud Foundry architecture – open source and enterprise
Applications run on Cloud Foundry are deployed, scaled and maintained by BOSH (PCF’s infrastructure management component). It deploys versioned software and the VM for it to run on and then monitors the application after deployment. Although the learning curve for BOSH is considered to be fairly high, once mastered it adds considerable value by boosting team productivity.
- More basic features of Pivotal Cloud Foundry include:
- Cloud Controller to direct application deployment
- Deploy using Docker Images and Buildpacks
- Automated routing of all incoming traffic to appropriate component
- Instant (vertical or horizontal) application scaling
- Cf CLI (PCF command line interface)
- Cluster scheduler
- Load balancer and DNS
- “Loggregator” – Logging and metrics aggregation
Kubernetes is a container scheduler or orchestrator. With container orchestration tools, the user creates and maintains the container themselves. For many teams, having this flexibility and control over the application is preferred.
Instead of focusing only on the app, the developer needs to create the container and then maintain it in the future, for example, when anything on the stack has an update (a new JVM version, etc.).
(source:) Kubernetes architecture
Kubernetes is a mature container orchestrator that runs in the same market as Docker Swarm and Apache Mesos. In Kubernetes, containers are grouped together into pods based on logical dependencies which can then be easily scaled at runtime.
More basic features of Kubernetes include:
- Master node for global control (scheduling, API server, data center)
- Worker nodes (VM or physical machine) with services needed to run container pods
- Auto-scaling of containers and volume management
- Flexible architecture with replaceable components and 3rd party plugins
- Stateful persistence layer
- Kubectl (Kubernetes command line interface)
- Active OSS community