{"id":20285462,"url":"https://github.com/mramshaw/kubernetes","last_synced_at":"2026-04-11T06:44:24.750Z","repository":{"id":92905266,"uuid":"92788746","full_name":"mramshaw/Kubernetes","owner":"mramshaw","description":"Kubernetes scripts","archived":false,"fork":false,"pushed_at":"2020-11-11T17:43:19.000Z","size":472,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-14T08:12:11.429Z","etag":null,"topics":["aws","azure","cloud-providers","cncf","digitalocean","gcp","gke","helm","kubectl","kubernetes","minikube"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mramshaw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-30T01:36:25.000Z","updated_at":"2020-11-11T17:43:21.000Z","dependencies_parsed_at":"2023-04-29T00:56:09.967Z","dependency_job_id":null,"html_url":"https://github.com/mramshaw/Kubernetes","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mramshaw%2FKubernetes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mramshaw%2FKubernetes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mramshaw%2FKubernetes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mramshaw%2FKubernetes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mramshaw","download_url":"https://codeload.github.com/mramshaw/Kubernetes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241780512,"owners_count":20019061,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","azure","cloud-providers","cncf","digitalocean","gcp","gke","helm","kubectl","kubernetes","minikube"],"created_at":"2024-11-14T14:26:52.155Z","updated_at":"2025-12-31T01:02:59.679Z","avatar_url":"https://github.com/mramshaw.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Getting familiar with Kubernetes\n\n## Introduction\n\n[Kubernetes](https://kubernetes.io/) is probably the premiere ___Orchestration framework___ for the __Cloud__.\n\n[For a short overview, the [Wikipedia article on Kubernetes](http://en.wikipedia.org/wiki/Kubernetes) is pretty good.]\n\nAs of August, 2017 all of the major cloud providers belong to the [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/)\nwhich supports Kubernetes. In fact, Kubernetes was the first project to _graduate_ from the CNCF, in March 2018.\n\nThe main cloud providers (AWS, Azure, GCP) all support Kubernetes (generally as a premium offering).\n\n[As Google had already used GCE for their compute engine, their container TLA is __GKE__.]\n\n[For those who like such terms, Kubernetes is a ___PaaS___ (Platform as a Service).]\n\n## Thoughts on the best cloud provider\n\nThere's an old photography joke about what the best camera is: \"the one you have with you\" (the one at home is no use).\n\nLikewise, the best cloud provider is whichever one you know best.\n\nThey _all_ have huge eco-systems so learning each providers set of offerings is definitely a non-trivial exercise.\n\nMy read on things is that __AWS__ is the leader and likely to stay that way; __Azure__ is the corporate choice for\nthe MS world; and __GCP__ is a late-comer (in terms of commercial offerings) but cannot be discounted (or ignored).\nFor one thing, the presence of GCP has led everyone to discount their prices (which is probably not a bad thing).\n\nSo in the end overall cost is probably not a good criterion as charges are likely to continue to go down.\n\n[UPDATE: For probably much the same reasons as Amazon (their customers were already running it on their hardware),\n Digital Ocean are getting into the Kubernetes market. DO announced their upcoming Early Access Program im May, 2018\n with clusters free through September 2018. DO also upgraded their CNCF membership from Silver to Gold.]\n\n#### AWS\n\nIt does not seem to be that easy to create a __Kubernetes__ cluster with AWS. While there are [kops](https://github.com/kubernetes/kops)\nand [kube-aws](https://github.com/kubernetes-incubator/kube-aws), which seem to be actively supported and full-featured, it is a concern\nthat there is no AWS-native tooling. This situation may improve now that Amazon has joined the\n[Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/) - or it may not. Amazon's intentions are not clear but their Adrian Cockcroft\nhas expressed interest in [Containerd](https://containerd.io/) and [Linkerd](https://linkerd.io/) (Linkerd is a _service mesh_, much like\n[Istio](https://istio.io/)). Plus they seem to be experimenting with [kops](https://aws.amazon.com/blogs/compute/kubernetes-clusters-aws-kops/).\n\nAmazon of course have their own [ECS (EC2 Container Service)](https://aws.amazon.com/ecs/) which uses different terminology than Kubernetes\n(for instance I believe a __task__ approximates to a __pod__) but largely offers the same sorts of services.\n\nHowever according to the CNCF the bulk of AWS customers appear to have opted for Kubernetes over ECS:\n\n    http://www.cncf.io/blog/2017/06/28/survey-shows-kubernetes-leading-orchestration-platform/\n\nAdrian Cockcroft on Cloud Native Computing and AWS:\n\n    http://www.linuxfoundation.org/blog/2018/02/adrian-cockcroft-convergence-cloud-native-computing-aws/\n\n[Apparently 63 percent of Kubernetes workloads run on AWS.]\n\nAdrian Cockcroft on Cloud Native Computing and the CNCF:\n\n\u003e For customers who are trying to track a fast-moving and confusing world, it’s helpful to regard CNCF\n\u003e as a brand endorsement for a loose collection of interesting, sometimes competing projects, rather\n\u003e than a single, integrated cloud native architecture. There’s no particular endorsement of any one\n\u003e project over another for members of CNCF, or for users of projects.\n\nFrom:\n\n    http://aws.amazon.com/blogs/opensource/cloud-native-computing/\n\nWhile the Amazon ECS offering can be expected to continue to evolve, they also seem to be hedging their bets with Kubernetes.\n\nUPDATE: As of November 29, 2017 Amazon announced their new Containers-as-a-Service service\n[Fargate](https://aws.amazon.com/about-aws/whats-new/2017/11/introducing-aws-fargate-a-technology-to-run-containers-without-managing-infrastructure/)\nas well as their new managed Kubernetes offering\n[Amazon Elastic Container Service for Kubernetes](https://aws.amazon.com/eks/) (for which the TLA is EKS).\nIt's probably too early to say what these services offer over and above what was previously offered, but it\ndoes seem to be proof that Amazon Marketing likes the Kubernetes brand. Fargate, at least, looks like a product\nthat will really appeal to the ML (Machine learning) crowd.\n\n#### Azure and Firefox\n\nIf you use __firefox__ as your browser, you will need to add a popup exception for __portal.azure.com__ to allow it to open pop-up windows,\notherwise Azure's Cloud Shell window will not open (I have left feedback so perhaps this will be fixed). It does not seem to be possible\nto paste into the Cloud Shell window either, which is annoying.\n\n## Running in the Cloud versus running locally\n\nThe cloud providers listed all provide either free credits or free services (presumably for evaluation purposes).\nThe charges for cloud services are likely to continue to go down.\n\nThey all require a valid credit card too (presumably for identification/authentication/idemnification purposes).\n\nSo tread carefully: some of the allocation settings are not set __by default__ to the free tier offerings.\n\n[Generally the ___free___ offerings are limited to the 'micro' or 'small' machine images.]\n\nPremium products (such as Google's Cloud Spanner - which is pretty cool) are generally not free.\n\nUsing these will eat into your free credits, so remember to tear everything down when finished.\n\nAs with __Docker__ it is possible to run __Kubernetes__ locally, which definitely has some advantages.\n\nFor one thing, all of the cloud providers have extensive (and very cluttered) dashboards whereas the command \u003ckbd\u003eminikube dashboard\u003c/kbd\u003e\nwill pop open a browser populated with a much less cluttered dashboard (making it much easier to see what is going on).\n\n## Tools\n\n![minikube logo with name](./minikube_logo_with_name.svg)\n\nThere are 3 main tools: `kubeadm`, `kubectl`, and `minikube`.\n\nFor setting up local clusters or for provisioning VMs, `kubeadm` is probably useful.\n\n[If you go this route, make sure to use your *best* machine for the __master__ node,\nas it is a single point of failure (multi-master clusters *may* be in the works but\nare not yet a reality as of Kubernetes 1.8). If the `etcd` on the master node\nbreaks, not much else will work properly either. You should probably back up this\n`etcd` on a regular basis too. Maybe with a Kubernetes cronjob.]\n\nHowever, for most purposes - including dealing with cloud providers (such as AWS, Azure,\nGCP, etc) - `kubeadm` is probably not necessary. It seems to be more of an installation\nand administration tool.\n\nHaving dabbled with all 3 of the listed providers, I can confirm that it is not necessary to install `kubectl` locally either.\n\n[Each of the cloud providers recommends that you install their CLI (or command-line toolset),\nwhich definitely makes a lot of things simpler, however it ___should___ be possible to perform\nall needed functions from a web interface (navigating said dashboard is generally non-trivial\nhowever). When operating in the cloud you will use a provided `kubectl`, so generally no need\nto have it installed locally.]\n\nFor local familiarization, `minikube` is the way to go - and it requires `kubectl`.\n\n[`minikube` is really the local equivalent of a cloud provider's command-line toolset.]\n\n#### minikube options\n\nThere are three options for [deploying minikube](https://minikube.sigs.k8s.io/docs/drivers/):\n\n1. as a VM (virtual machine)\n2. as a container\n3. bare-metal\n\nThe third option (bare-metal) is considered risky.\n\nThe second option is the recommended one; it can use [Docker](http://github.com/mramshaw/Docker).\n\nChoosing the first option requires installing some form of virtualization; for linux either __VirtualBox__ or __KVM2__.\n\nUsing either of these probably requires enabling either __VT-x__ or __AMD-v__ hardware virtualization in your __BIOS__.\n\n[Don't worry, the minikube startup process will tell you if this setting needs to be enabled or not. Hopefully not.]\n\n[In my BIOS this was __Advanced__ -\u003e __CPU Configuration__ -\u003e __Intel Virtualization Technology__]\n\n[While I previously used the VirtualBox option, the Docker option is now the recommended one - so that is what I use.]\n\n#### minikube configuration\n\nWhich option is chosen above may affect how easy it is to configure minikube's limits.\n\nVirtualBox provides a nice GUI:\n\n* [Increase minikube's working memory](http://github.com/mramshaw/Kubernetes/tree/master/Replicated%20Cassandra%20Database#increase-minikubes-working-memory)\n* [Increase minikube's processors](http://github.com/mramshaw/Kubernetes/tree/master/Replicated%20Cassandra%20Database#increase-minikubes-processors)\n\nIf using Docker, the command line must be used:\n\n* [Increase minikube's working memory](http://github.com/mramshaw/replicouchcluster#increase-minikubes-working-memory)\n* [Increase minikube's processors](http://github.com/mramshaw/replicouchcluster#increase-minikubes-processors)\n\nIn the end both get the job done so it boils down to personal preference.\n\n## My Projects\n\nThese are not in the same order that I went through them, as I progressed I had to backtrack from time to time (when I needed a\nbetter grounding on basic concepts) but the order below corresponds to what I think is the difficulty level; in other words the\norder presented is the order to follow.\n\nThese all require `kubectl` and `minikube`.\n\n#### Persistent Volume (Local)\n\nhttps://github.com/mramshaw/Kubernetes/tree/master/Persistent%20Volume%20(Local)\n\nMost of the following also require a __cloud provider__ account with its __CLI tools__ installed.\n\n#### Single MySQL (Persistent Volume)\n\nhttps://github.com/mramshaw/Kubernetes/tree/master/Single%20MySQL%20(Persistent%20Volume)\n\n#### Replicated MySQL (Dynamic Volumes)\n\nhttps://github.com/mramshaw/Kubernetes/tree/master/Replicated%20MySQL%20(Dynamic%20Volumes)\n\n#### Replicated Cassandra Database\n\nhttps://github.com/mramshaw/Kubernetes/tree/master/Replicated%20Cassandra%20Database\n\n[This example is run entirely locally with `minikube`.]\n\n#### Replicated Couchbase Cluster\n\nhttps://github.com/mramshaw/replicouchcluster\n\n[This example is run entirely locally with `minikube`.]\n\n#### Nomad on Kubernetes (Combining Kubernetes with Hashicorp's Nomad and Vault)\n\nhttps://github.com/mramshaw/nomad-on-kubernetes\n\n#### How to run the Istio Ingress Controller on Kubernetes\n\nhttps://github.com/mramshaw/istio-ingress-tutorial\n\nThese last projects can be run locally.\n\n#### Cloud Django (Running Python and Django in the cloud with gunicorn)\n\nhttps://github.com/mramshaw/Cloud_Django\n\n#### Fun with Istio\n\nhttps://github.com/mramshaw/Fun-with-Istio\n\n#### Getting Familiar with Helm\n\nhttps://github.com/mramshaw/helm-test\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmramshaw%2Fkubernetes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmramshaw%2Fkubernetes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmramshaw%2Fkubernetes/lists"}