{"id":690,"date":"2022-01-13T22:18:26","date_gmt":"2022-01-13T20:18:26","guid":{"rendered":"https:\/\/blog.chloesoe.ch\/?p=690"},"modified":"2022-01-15T22:05:13","modified_gmt":"2022-01-15T20:05:13","slug":"k8s-at-hosttech","status":"publish","type":"post","link":"https:\/\/blog.chloesoe.ch\/?p=690","title":{"rendered":"K8s at Hosttech"},"content":{"rendered":"<p>This how-to documents how to set up a K8s cluster at hosttech.<\/p>\n<h1>Base setup Ubuntu VMs<\/h1>\n<p>There are two VMS:<\/p>\n<ul>\n<li>saanen.chloesoe.ch<\/li>\n<li>lauenen.chloesoe.ch<\/li>\n<\/ul>\n<p>Via <a href=\"https:\/\/www.myhosttech.eu\/user-products\/\">https:\/\/www.myhosttech.eu\/user-products\/<\/a> it's possible to re-install the operating system.<\/p>\n<p>Configure after re-install:<\/p>\n<ul>\n<li><code>vigr<\/code> and add user to sudo group<\/li>\n<li><code>visudo<\/code> and ensure\n<pre><code>%sudo   ALL=(ALL:ALL) NOPASSWD: ALL<\/code><\/pre>\n<\/li>\n<li>Set hostname\n<ul>\n<li>\/etc\/hosts <code>127.0.1.1\txyz.chloesoe.ch\txyz<\/code><\/li>\n<li><code>hostnamectl set-hostname xyz.chloesoe.ch<\/code><\/li>\n<\/ul>\n<\/li>\n<li><code>update-alternatives --config editor<\/code><\/li>\n<li>enable bash completion in interactive shells in <code>\/etc\/bash.bashrc<\/code><\/li>\n<li><code>~\/.vimrc<\/code>\n<pre><code>set laststatus=2\nset hlsearch\nset backup\nset backupdir=~\/.vim\/tmp,\/tmp,~\/\nset history=5000<\/code><\/pre>\n<\/li>\n<li><code>~\/.bashrc<\/code>\n<ul>\n<li><code>alias ls=&#039;ls --color --group-directories-first&#039;<\/code><\/li>\n<\/ul>\n<\/li>\n<li><code>\/etc\/ssh\/sshd_conf<\/code>\n<ul>\n<li><code>PasswordAuthentication no<\/code><\/li>\n<li><code>PermitRootLogin no<\/code><\/li>\n<\/ul>\n<\/li>\n<li>copy your key to <code>~\/.ssh\/authorized_keys<\/code><\/li>\n<li><code>echo &quot;source &lt;(kubectl completion bash)&quot; &gt;&gt; ~\/.bashrc<\/code><\/li>\n<\/ul>\n<h1>Install K8s<\/h1>\n<p>See <a href=\"https:\/\/kubernetes.io\/docs\/setup\/production-environment\/tools\/kubeadm\/install-kubeadm\/\">https:\/\/kubernetes.io\/docs\/setup\/production-environment\/tools\/kubeadm\/install-kubeadm\/<\/a><br \/>\nCommands from acould.guru course and adjusted where needed.<\/p>\n<p>On all nodes, set up containerd. You will need to load some kernel modules and modify some system settings as part of this<br \/>\nprocess:<\/p>\n<pre><code>cat &lt;&lt; EOF | sudo tee \/etc\/modules-load.d\/containerd.conf\noverlay\nbr_netfilter\nEOF\nsudo modprobe overlay\nsudo modprobe br_netfilter\ncat &lt;&lt;EOF | sudo tee \/etc\/sysctl.d\/99-kubernetes-cri.conf\nnet.bridge.bridge-nf-call-iptables = 1\nnet.ipv4.ip_forward\n= 1\nnet.bridge.bridge-nf-call-ip6tables = 1\nEOF\nsudo sysctl --system<\/code><\/pre>\n<p>Install and configure containerd.<\/p>\n<pre><code>sudo apt-get update &amp;&amp; sudo apt-get install -y containerd\nsudo mkdir -p \/etc\/containerd\nsudo containerd config default | sudo tee \/etc\/containerd\/config.toml\nsudo systemctl restart containerd<\/code><\/pre>\n<p>Disable swap on all nodes:<\/p>\n<pre><code>On all nodes, disable swap.\nsudo swapoff -a\nsudo sed -i &#039;\/ swap \/ s\/^\\(.*\\)$\/#\\1\/g&#039; \/etc\/fstab<\/code><\/pre>\n<p>On all nodes, install kubeadm, kubelet, and kubectl.<\/p>\n<pre><code>sudo apt-get update &amp;&amp; sudo apt-get install -y apt-transport-https curl gnupg2\n\ncurl -s https:\/\/packages.cloud.google.com\/apt\/doc\/apt-key.gpg | sudo apt-key add -\n\ncat &lt;&lt; EOF | sudo tee \/etc\/apt\/sources.list.d\/kubernetes.list\ndeb https:\/\/apt.kubernetes.io\/ kubernetes-xenial main\nEOF\n\nsudo apt-get update\n\nexport kversion=1.23.1-00\nsudo apt install -y kubelet=$kversion kubeadm=$kversion kubectl=$kversion\n\nsudo apt-mark hold kubelet kubeadm kubectl<\/code><\/pre>\n<h2>only control-plane<\/h2>\n<pre><code>sudo kubeadm init --pod-network-cidr 192.168.0.0\/16 --kubernetes-version 1.23.1\n\nmkdir -p $HOME\/.kube\n\nsudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config\n\nsudo chown $(id -u):$(id -g) $HOME\/.kube\/config<\/code><\/pre>\n<p>Verify the cluster is working.<\/p>\n<pre><code>kubectl get nodes<\/code><\/pre>\n<p>Install the Calico network add-on.<\/p>\n<pre><code>kubectl apply -f https:\/\/docs.projectcalico.org\/manifests\/calico.yaml<\/code><\/pre>\n<p>Get join command for worker node:<\/p>\n<pre><code>kubeadm token create --print-join-command<\/code><\/pre>\n<h2>Worker node<\/h2>\n<pre><code>sudo kubeadm join 213.xxx.yyy.zzz:6443 --token &lt;hash&gt; --discovery-token-ca-cert-hash sha256:&lt;shahash&gt; <\/code><\/pre>\n<h2>after joining<\/h2>\n<p>Label worker nodes:<\/p>\n<pre><code>kubectl label node lauenen.chloesoe.ch node-role.kubernetes.io\/worker=worker<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>This how-to documents how to set up a K8s cluster at hosttech. Base setup Ubuntu VMs There are two VMS: saanen.chloesoe.ch lauenen.chloesoe.ch Via https:\/\/www.myhosttech.eu\/user-products\/ it&#8217;s possible to re-install the operating system. Configure after re-install: vigr and add user to sudo group visudo and ensure %sudo ALL=(ALL:ALL) NOPASSWD: ALL Set hostname \/etc\/hosts 127.0.1.1 xyz.chloesoe.ch xyz hostnamectl&#8230; <a href=\"https:\/\/blog.chloesoe.ch\/?p=690\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">K8s at Hosttech<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20,7],"tags":[],"class_list":["post-690","post","type-post","status-publish","format-standard","hentry","category-k8s","category-linux"],"_links":{"self":[{"href":"https:\/\/blog.chloesoe.ch\/index.php?rest_route=\/wp\/v2\/posts\/690","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.chloesoe.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.chloesoe.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.chloesoe.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.chloesoe.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=690"}],"version-history":[{"count":2,"href":"https:\/\/blog.chloesoe.ch\/index.php?rest_route=\/wp\/v2\/posts\/690\/revisions"}],"predecessor-version":[{"id":694,"href":"https:\/\/blog.chloesoe.ch\/index.php?rest_route=\/wp\/v2\/posts\/690\/revisions\/694"}],"wp:attachment":[{"href":"https:\/\/blog.chloesoe.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=690"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.chloesoe.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=690"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.chloesoe.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=690"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}