Kubernetes on DigitalOcean¶
IMO, the easiest Kubernetes cloud provider to experiment with is DigitalOcean (this is a referral link). I've included instructions below to start a basic cluster.
- DigitalOcean account, either linked to a credit card or (my preference for a trial) topped up with $5 credit from PayPal. (yes, this is a referral link, making me some 💰 to buy 🍷)
- Geek-Fu required : 🐱 (easy - even has screenshots!)
Create DigitalOcean Account¶
Create a project, and then from your project page, click Manage -> Kubernetes (LTD) in the left-hand panel:
Until DigitalOcean considers their Kubernetes offering to be "production ready", you'll need the additional step of clicking on Enable Limited Access:
The Enable Limited Access button changes to read Create a Kubernetes Cluster . Cleeeek it:
When prompted, choose some defaults for your first node pool (your pool of "compute" resources for your cluster), and give it a name. In more complex deployments, you can use this concept of "node pools" to run certain applications (like an inconsequential nightly batch job) on a particular class of compute instance (such as cheap, preemptible instances)
That's it! Have a sip of your 🍷, a bite of your , and wait for your cluster to build. While you wait, follow the instructions to setup kubectl (if you don't already have it)
DigitalOcean will provide you with a "kubeconfig" file to use to access your cluster. It's at the bottom of the page (illustrated below), and easy to miss (in my experience).
Release the kubectl!¶
Save your kubeconfig file somewhere, and test it our by running
kubectl --kubeconfig=<PATH TO KUBECONFIG> get nodes
[davidy:~/Downloads] 130 % kubectl --kubeconfig=penguins-are-the-sexiest-geeks-kubeconfig.yaml get nodes NAME STATUS ROLES AGE VERSION festive-merkle-8n9e Ready <none> 20s v1.13.1 [davidy:~/Downloads] %
In the example above, my nodes were being deployed. Repeat the command to see your nodes spring into existence:
[davidy:~/Downloads] % kubectl --kubeconfig=penguins-are-the-sexiest-geeks-kubeconfig.yaml get nodes NAME STATUS ROLES AGE VERSION festive-merkle-8n96 Ready <none> 6s v1.13.1 festive-merkle-8n9e Ready <none> 34s v1.13.1 [davidy:~/Downloads] % [davidy:~/Downloads] % kubectl --kubeconfig=penguins-are-the-sexiest-geeks-kubeconfig.yaml get nodes NAME STATUS ROLES AGE VERSION festive-merkle-8n96 Ready <none> 30s v1.13.1 festive-merkle-8n9a Ready <none> 17s v1.13.1 festive-merkle-8n9e Ready <none> 58s v1.13.1 [davidy:~/Downloads] %
That's it. You have a beautiful new kubernetes cluster ready for some action!
Still with me? Good. Move on to creating your own external load balancer..
- Start - Why Kubernetes?
- Design - How does it fit together?
- Cluster (this page) - Setup a basic cluster
- Load Balancer - Setup inbound access
- Snapshots - Automatically backup your persistent data
- Helm - Uber-recipes from fellow geeks
- Traefik - Traefik Ingress via Helm
Chef's notes 📓¶
Ok, yes, there's not much you can do with your cluster yet. But stay tuned, more Kubernetes fun to come! ↩
Tip your waiter (sponsor) 👏¶
Did you receive excellent service? Want to make your waiter happy? (..and support development of current and future recipes!) Sponsor me on Github / Patreon, or see the contribute page for more (free or paid) ways to say thank you! 👏
Flirt with waiter (subscribe) 💌¶
Want to know now when this recipe gets updated, or when future recipes are added? Subscribe to the RSS feed, or leave your email address below, and we'll keep you updated. (*double-opt-in, no monkey business, no spam)