ibook
search
Ctrlk
  • README
  • cheatsheetchevron-right
  • vimchevron-right
  • devopschevron-right
  • jenkinschevron-right
  • virtualizationchevron-right
    • kuberneteschevron-right
      • initchevron-right
        • kubespray
        • kubeadmchevron-right
          • environment
          • crio v1.30.4
          • docker v1.15.3
          • HA
        • addons
        • etcd
      • kubectlchevron-right
      • node
      • certificates
      • events
      • kubeconfig
      • kubelet
      • troubleshooting
      • cheatsheet
      • auth
      • api
      • toolschevron-right
    • dockerchevron-right
    • crio
    • podman
  • aichevron-right
  • osxchevron-right
  • linuxchevron-right
  • programmingchevron-right
  • toolschevron-right
  • quotes
  • english
gitbookPowered by GitBook
block-quoteOn this pagechevron-down
  1. virtualizationchevron-right
  2. kuberneteschevron-right
  3. initchevron-right
  4. kubeadm

HA

  • tools

    • cfssl & cfssljson

    • etcd

    • keepalived

    • haproxy

    • helm

  • external etcd

kubernetes high availability

[!TIP|label:references]

  • extenal etcd topologyarrow-up-right certificates located in : /etc/etcd/ssl

  • stacked etcd topologyarrow-up-right certificates located in : /etc/kubernetes/pki/etcd

  • Proposal for a highly available control plane configuration for ‘kubeadm’ deploymentsarrow-up-right

  • Proposal for kubeadm self-hosted HA deploymentarrow-up-right

  • kubeadm upgrades / self-hosting / HA v1.8 implementation working grouparrow-up-right

  • Ansible Tutorial: Setup HAProxy and HTTPS from Let’s Encrypt with Ansiblearrow-up-right

  • * Kubernetes High Availabilityarrow-up-right

hashtag
tools

hashtag
cfssl & cfssljson

hashtag
etcd

hashtag
keepalived

circle-info

references:

  • Step 26 - KeepAliveDarrow-up-right

hashtag
haproxy

hashtag
helm

  • configuration

hashtag
external etcd

external etcd topology
Previousdocker v1.15.3chevron-leftNextaddonschevron-right

Last updated 1 year ago

  • tools
  • external etcd
$ sudo bash -c "curl -o /usr/local/bin/cfssl https://pkg.cfssl.org/R1.2/cfssl_linux-amd64"
$ sudo bash -c "curl -o /usr/local/bin/cfssljson https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64"
$ sudo chmod +x /usr/local/bin/cfssl*
$ curl -fsSL https://github.com/etcd-io/etcd/releases/download/v3.3.15/etcd-v3.3.15-linux-amd64.tar.gz |
       sudo tar -xzv --strip-components=1 -C /usr/local/bin/
$ mkdir -p ~/temp
$ sudo mkdir -p /etc/keepalived/

$ curl -fsSL ${keepaliveDownloadUrl}/keepalived-2.0.18.tar.gz | tar xzf - -C ~/temp

$ pushd .
$ cd ~/temp/keepalived-2.0.18
$ ./configure && make
$ sudo make install
$ sudo cp keepalived/keepalived.service /etc/systemd/system/
$ popd
$ rm -rf ~/temp
$ curl -fsSL http://www.haproxy.org/download/2.0/src/haproxy-2.0.6.tar.gz | tar xzf - -C ~

$ pushd .
$ cd ~/haproxy-2.0.6
$ make TARGET=linux-glibc \
       USE_LINUX_TPROXY=1 \
       USE_ZLIB=1 \
       USE_REGPARM=1 \
       USE_PCRE=1 \
       USE_PCRE_JIT=1 \
       USE_OPENSSL=1 \
       SSL_INC=/usr/include \
       SSL_LIB=/usr/lib \
       ADDLIB=-ldl \
       USE_SYSTEMD=1
$ sudo make install
$ sudo cp haproxy /usr/sbin/
$ sudo cp examples/haproxy.init /etc/init.d/haproxy && sudo chmod +x $_
$ popd
$ rm -rf ~/haproxy-2.0.6
$ curl -fsSL \
       https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz |
       sudo tar -xzv --strip-components=1 -C /usr/local/bin/

$ while read -r _i; do
    sudo chmod +x "/usr/local/bin/${_i}"
done < <(echo helm tiller)
$ helm init
$ helm init --client-only

$ kubectl -n kube-system create serviceaccount tiller
$ kubectl create clusterrolebinding tiller-cluster-rule \
                 --clusterrole=cluster-admin \
                 --serviceaccount=kube-system:tiller
$ kubectl -n kube-system patch deploy \
                tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

$ helm repo add jetstack https://charts.jetstack.io