Bootstrap Kubernetes

the hard way & kubeadm

KaLUG 1809 @ Tady Coffee

Shawn Wang shawn111@gmail.com


k8s Components

   +------------------------------+  +--------------------+
   | master                       |  |node                |
   |   kube-apiserver             |  |   kubelet          |
   |   etcd                       |  |   kube-proxy       |
   |   kube-scheduler             |  |   Container Runtime|
   |   kube-controller-manager    |  +--------------------+
   |                              | ......................
   |   [cloud-controller-manager] | :AddOn               :
   +------------------------------+ :   DNS              :
                                    :   Dashboard        :
                                    :   monitor/log/...  :
    [drawn by textik.com]           ......................

k8s_arch


the hard way

Bootstrap k8s the hard way on GCP. No scripts.

  • Prepare cluster
    • resources / ssh
    • ca / keys
  • setup masters / k8s Control Plane
    • etcd, kube-apiserver, kube-controller-manager, kube-scheduler
  • setup nodes / k8s Worker Nodes
  • others: config kubectl, cni,

the easy way?

  1. minikube: supported VM drivers
    • none/virtualbox/vmwarefusion/kvm/
  2. kops: supported clouds
    • AWS, GCE or DigitalOcean
    • installation, reconfiguration of your cluster, upgrading kubernetes, and eventual cluster deletion.
  3. kubespray (ansible)
  4. magnum (openstack/heat): container orchestration engines (COE) k8s/swarm
  5. bootkube


kubeadm

  • v1.5 force on bootstrap as beginning
  • provide kubeadm config / kubeadm upgrade
  • kubernetes beta features
  • kubeadm init config (expr)

before kubeadm

  • prepare your cluster
    • nodes (cpu/memery > 2G)
    • kubelet, runctime (docker/containerd/cri-o) ready
    • swapoff
  • choice cni
    • network br_netfilter

kubeadm

  • init (master)
  • join (node)
  • reset
  • upgrade
  • config
    • kubeadm config images list
    • kubeadm config images pull

Network Plugins

  • Calico
  • Canal
  • Cilium
  • Flannel
  • Kube-router
  • Romana
  • Weave Net
  • JuniperContrail/TungstenFabric

kubeadm to create HA cluster

https://kubernetes.io/docs/setup/independent/high-availability/

  • masters
    • create kubeadm-config.yaml
      • apiServer
      • etcd
  • worker join (similar just change master host)

k8s terms

  - Pod           - ReplicaSet
  - Service       - Deployment
  - Volume        - Stateful
  - Namespace     - DaemonSet
                  - Job
Select a repo