mirror of
https://github.com/jpetazzo/container.training.git
synced 2026-07-22 06:16:31 +00:00
95 lines
2.8 KiB
Markdown
95 lines
2.8 KiB
Markdown
# Setting up Kubernetes
|
|
|
|
- How did we set up these Kubernetes clusters that we're using?
|
|
|
|
--
|
|
|
|
<!-- ##VERSION## -->
|
|
|
|
- We used `kubeadm` on freshly installed VM instances running Ubuntu LTS
|
|
|
|
1. Install Docker
|
|
|
|
2. Install Kubernetes packages
|
|
|
|
3. Run `kubeadm init` on the first node (it deploys the control plane on that node)
|
|
|
|
4. Set up Weave (the overlay network)
|
|
<br/>
|
|
(that step is just one `kubectl apply` command; discussed later)
|
|
|
|
5. Run `kubeadm join` on the other nodes (with the token produced by `kubeadm init`)
|
|
|
|
6. Copy the configuration file generated by `kubeadm init`
|
|
|
|
- Check the [prepare VMs README](https://@@GITREPO@@/blob/master/prepare-vms/README.md) for more details
|
|
|
|
---
|
|
|
|
## `kubeadm` drawbacks
|
|
|
|
- Doesn't set up Docker or any other container engine
|
|
|
|
- Doesn't set up the overlay network
|
|
|
|
- Doesn't set up multi-master (no high availability)
|
|
|
|
--
|
|
|
|
(At least ... not yet! Though it's [experimental in 1.12](https://kubernetes.io/docs/setup/independent/high-availability/).)
|
|
|
|
--
|
|
|
|
- "It's still twice as many steps as setting up a Swarm cluster 😕" -- Jérôme
|
|
|
|
---
|
|
|
|
## Other deployment options
|
|
|
|
- [AKS](https://azure.microsoft.com/services/kubernetes-service/):
|
|
managed Kubernetes on Azure
|
|
|
|
- [GKE](https://cloud.google.com/kubernetes-engine/):
|
|
managed Kubernetes on Google Cloud
|
|
|
|
- [EKS](https://aws.amazon.com/eks/),
|
|
[eksctl](https://eksctl.io/):
|
|
managed Kubernetes on AWS
|
|
|
|
- [kops](https://github.com/kubernetes/kops):
|
|
customizable deployments on AWS, Digital Ocean, GCE (beta), vSphere (alpha)
|
|
|
|
- [minikube](https://kubernetes.io/docs/setup/minikube/),
|
|
[kubespawn](https://github.com/kinvolk/kube-spawn),
|
|
[Docker Desktop](https://docs.docker.com/docker-for-mac/kubernetes/),
|
|
[kind](https://kind.sigs.k8s.io):
|
|
for local development
|
|
|
|
- [kubicorn](https://github.com/kubicorn/kubicorn),
|
|
the [Cluster API](https://blogs.vmware.com/cloudnative/2019/03/14/what-and-why-of-cluster-api/):
|
|
deploy your clusters declaratively, "the Kubernetes way"
|
|
|
|
---
|
|
|
|
## Even more deployment options
|
|
|
|
- If you like Ansible:
|
|
[kubespray](https://github.com/kubernetes-incubator/kubespray)
|
|
|
|
- If you like Terraform:
|
|
[typhoon](https://github.com/poseidon/typhoon)
|
|
|
|
- If you like Terraform and Puppet:
|
|
[tarmak](https://github.com/jetstack/tarmak)
|
|
|
|
- You can also learn how to install every component manually, with
|
|
the excellent tutorial [Kubernetes The Hard Way](https://github.com/kelseyhightower/kubernetes-the-hard-way)
|
|
|
|
*Kubernetes The Hard Way is optimized for learning, which means taking the long route to ensure you understand each task required to bootstrap a Kubernetes cluster.*
|
|
|
|
- There are also many commercial options available!
|
|
|
|
- For a longer list, check the Kubernetes documentation:
|
|
<br/>
|
|
it has a great guide to [pick the right solution](https://kubernetes.io/docs/setup/#production-environment) to set up Kubernetes.
|