Files
awesome-kubernetes/docs/kubernetes.md
2020-05-15 10:24:10 +02:00

58 KiB
Raw Blame History

Kubernetes

Certified Kubernetes Offerings

The State of Cloud-Native Development. Details data on the use of Kubernetes, serverless computing and more

Kubernetes open-source container-orchestation

Kubernetes architecture

Kubernetes Limits

Kubectl commands

Kubectl Cheat Sheets

List all resources and sub resources that you can constrain with RBAC

  • kind of a handy way to see all thing things you can affect with Kubernetes RBAC. This will list all resources and sub resources that you can constrain with RBAC. If you want to see just subresources append "| grep {name}/":
kubectl get --raw /openapi/v2  | jq '.paths | keys[]'

Copy a configMap in kubernetes between namespaces

  • Copy a configMap in kubernetes between namespaces with deprecated "--export" flag:
kubectl get configmap --namespace=<source> <configmap> --export -o yaml | sed "s/<source>/<dest>/" | kubectl apply --namespace=<dest> -f -
kubectl get configmap <configmap-name> --namespace=<source-namespace> -o yaml | sed s/namespace: <from-namespace>/namespace: <to-namespace>/ | kubectl create -f

Copy secrets in kubernetes between namespaces

kubectl get secret <secret-name> --namespace=<source>-o yaml | sed s/namespace: <from-namespace>/namespace: <to-namespace>/ | kubectl create -f

Export resources with kubectl and python

Kubectl Alternatives

Manage Kubernetes (K8s) objects with Ansible Kubernetes Module

Jenkins Kubernetes Plugins

Helm Kubernetes Tool

Cluster Autoscaler Kubernetes Tool

HPA and VPA

Cluster Autoscaler and Helm

Cluster Autoscaler and DockerHub

Cluster Autoscaler in GKE, EKS, AKS and DOKS

Cluster Autoscaler in OpenShift

Other kubernetes tools

Kubernetes Troubleshooting

Kubernetes Tutorials

Famous Kubernetes resources of 2019

Famous Kubernetes resources of 2020

Kubernetes Patterns

Top 10 Kubernetes patterns

e-Books

Famous Kubernetes resources of 2019

Kubernetes Patterns eBooks

Kubernetes Operators

Flux. The GitOps Operator for Kubernetes

Writing Kubernetes Operators

Kubernetes Networking

CNI Container Networking Interface

Project Calico

Kubernetes Sidecars

Kubernetes Security

Pod Security Policies (SCCs - Security Context Constraints in OpenShift)

EKS Security

Kubernetes Scheduling and Scheduling Profiles

Assigning Pods to Nodes. Pod Affinity and Anti-Affinity

Pod Topology Spread Constraints and PodTopologySpread Scheduling Plugin

Kubernetes Storage

Non-production Kubernetes Local Installers

Kubernetes in Public Cloud

GKE vs EKS vs AKS

AWS EKS (Hosted/Managed Kubernetes on AWS)

Tools for multi-cloud Kubernetes management

On-Premise Production Kubernetes Cluster Installers

Comparative Analysis of Kubernetes Deployment Tools

Deploying Kubernetes Cluster with Kops

  • GitHub: Kubernetes Cluster with Kops
  • Kubernetes.io: Installing Kubernetes with kops
  • Minikube and docker client are great for local setups, but not for real clusters. Kops and kubeadm are tools to spin up a production cluster. You don't need both tools, just one of them.
  • On AWS, the best tool is kops. Since AWS EKS (hosted kubernetes) is currently available, this is the preferred option (you don't need to maintain the masters).
  • For other installs, or if you can't get kops to work, you can use kubeadm.
  • Setup kops in your windows with virtualbox.org and vagrantup.com . Once downloaded, to type a new linux VM, just spin up ubuntu via vagrant in cmd/powershell and run kops installer:
C:\ubuntu> vagrant init ubuntu/xenial64
C:\ubuntu> vagrant up
C:\ubuntu> vagrant ssh-config
C:\ubuntu> vagrant ssh
$ curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-linux-amd64
$ chmod +x kops-linux-amd64
$ sudo mv kops-linux-amd64 /usr/local/bin/kops

Deploying Kubernetes Cluster with Kubeadm

Deploying Kubernetes Cluster with Ansible

Kubespray

Conjure up

WKSctl

Terraform (kubernetes the hard way)

Caravan

linecorp.com: Building Large Kubernetes Clusters with Caravan

ClusterAPI

Microk8s

k8s-tew

  • k8s-tew Kubernetes is a fairly complex project. For a newbie it is hard to understand and also to use. While Kelsey Hightowers Kubernetes The Hard Way, on which this project is based, helps a lot to understand Kubernetes, it is optimized for the use with Google Cloud Platform.

Kubernetes Distributions

Red Hat OpenShift

Weave Kubernetes Platform

VMware Kubernetes Tanzu and Project Pacific

Rancher: Enterprise management for Kubernetes

Rancher 2
Rancher 2 RKE
  • Rancher 2 RKE Rancher 2 that runs in docker containers. RKE is a CNCF-certified Kubernetes distribution that runs entirely within Docker containers. It solves the common frustration of installation complexity with Kubernetes by removing most host dependencies and presenting a stable path for deployment, upgrades, and rollbacks.
K3S
  • k3s Basic kubernetes with automated installer. Lightweight Kubernetes Distribution.
  • K8s vs k3s "K3s is designed to be a single binary of less than 40MB that completely implements the Kubernetes API. In order to achieve this, they removed a lot of extra drivers that didn't need to be part of the core and are easily replaced with add-ons. K3s is a fully CNCF (Cloud Native Computing Foundation) certified Kubernetes offering. This means that you can write your YAML to operate against a regular "full-fat" Kubernetes and they'll also apply against a k3s cluster. Due to its low resource requirements, it's possible to run a cluster on anything from 512MB of RAM machines upwards. This means that we can allow pods to run on the master, as well as nodes. And of course, because it's a tiny binary, it means we can install it in a fraction of the time it takes to launch a regular Kubernetes cluster! We generally achieve sub-two minutes to launch a k3s cluster with a handful of nodes, meaning you can be deploying apps to learn/test at the drop of a hat."
  • k3sup (said 'ketchup') is a light-weight utility to get from zero to KUBECONFIG with k3s on any local or remote VM. All you need is ssh access and the k3sup binary to get kubectl access immediately.
  • Install Kubernetes with k3sup and k3s
K3S in Public Clouds
K3D
  • k3d k3s that runs in docker containers.
K3OS
  • k3OS k3OS is a Linux distribution designed to remove as much OS maintenance as possible in a Kubernetes cluster. It is specifically designed to only have what is needed to run k3s. Additionally the OS is designed to be managed by kubectl once a cluster is bootstrapped. Nodes only need to join a cluster and then all aspects of the OS can be managed from Kubernetes. Both k3OS and k3s upgrades are handled by the k3OS operator.
K3C
  • K3C Lightweight local container engine for container development. K3C is a local container engine designed to fill the same gap Docker does in the Kubernetes ecosystem. Specifically k3c focuses on developing and running local containers, basically docker run/build. Currently k3s, the lightweight Kubernetes distribution, provides a great solution for Kubernetes from dev to production. While k3s satisifies the Kubernetes runtime needs, one still needs to run docker (or a docker-like tool) to actually develop and build the container images. k3c is intended to replace docker for just the functionality needed for the Kubernetes ecosystem.
Hosted Rancher
Rancher on Microsoft Azure
Rancher RKE on vSphere
Rancher Kubernetes on Oracle Cloud
Rancher Software Defined Storage with Longhorn
Rancher Fleet to manage multiple kubernetes clusters
k3s use cases kOS value add
rancher architecture

SpringBoot with Docker

Docker in Docker

Serverless with OpenFaas and Knative

Serverless

Container Ecosystem

Kubernetes components

Container Flowchart

Container flowchart

Videos