Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions 00-installing-k8s/03-kubeadm-local-docker/Vagrantfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Vagrant.configure("2") do |config|
SHELL

config.vm.define "master" do |master|
master.vm.box = "bento/ubuntu-18.04"
master.vm.box = "bento/ubuntu-22.04"
master.vm.hostname = "master-node"
master.vm.network "private_network", ip: "10.0.0.10"
master.vm.provider "virtualbox" do |vb|
Expand All @@ -19,7 +19,7 @@ Vagrant.configure("2") do |config|

(1..2).each do |i|
config.vm.define "node0#{i}" do |node01|
node01.vm.box = "bento/ubuntu-18.04"
node01.vm.box = "bento/ubuntu-22.04"
node01.vm.hostname = "worker-node0#{i}"
node01.vm.network "private_network", ip: "10.0.0.1#{i}"
node01.vm.provider "virtualbox" do |vb|
Expand Down
61 changes: 42 additions & 19 deletions 00-installing-k8s/03-kubeadm-local-docker/scripts/master.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#! /bin/bash
#!/bin/bash

# disable swap
sudo swapoff -a
# keeps the swaf off during reboot
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo sed -i 's/^[^#].*none.*swap.*sw/#&/' /etc/fstab

sudo apt-get update -y
sudo apt-get update
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
Expand All @@ -19,8 +19,8 @@ echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Following configurations are recomended in the kubenetes documentation for Docker runtime. Please refer https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker

Expand All @@ -39,35 +39,58 @@ sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

echo "Docker Runtime Configured Successfully"
echo "Docker Engine Configured Successfully"

CRI_DOCKERD_VERSION=$(curl -s https://api.github.com/repos/Mirantis/cri-dockerd/releases/latest| grep tag_name | cut -d '"' -f 4 | sed 's/v//g')
curl -fsSLO https://github.com/Mirantis/cri-dockerd/releases/download/v${CRI_DOCKERD_VERSION}/cri-dockerd-${CRI_DOCKERD_VERSION}.amd64.tgz
tar xvf cri-dockerd-${CRI_DOCKERD_VERSION}.amd64.tgz
sudo mv cri-dockerd/cri-dockerd /usr/local/bin/

curl -fsSLO https://raw.githubusercontent.com/Mirantis/cri-dockerd/v${CRI_DOCKERD_VERSION}/packaging/systemd/cri-docker.service
curl -fsSLO https://raw.githubusercontent.com/Mirantis/cri-dockerd/v${CRI_DOCKERD_VERSION}/packaging/systemd/cri-docker.socket
sudo mv cri-docker.socket cri-docker.service /etc/systemd/system/
sudo sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
sudo systemctl daemon-reload
sudo systemctl enable cri-docker.service
sudo systemctl enable --now cri-docker.socket

echo "Docker Container Runtime Interface installed: $(cri-dockerd --version)"

sudo apt-get update
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt-get update -y
# sudo apt-get install -y kubelet kubeadm kubectl
VERSION=1.21.4-00
sudo apt-get install -y kubelet=$VERSION kubectl=$VERSION kubeadm=$VERSION
KUBERNETES_VERSION=1.25.4-00
sudo apt-get update
sudo apt-get install -y kubelet=$KUBERNETES_VERSION kubectl=$KUBERNETES_VERSION kubeadm=$KUBERNETES_VERSION
# reference https://stackoverflow.com/questions/49721708/how-to-install-specific-version-of-kubernetes


sudo apt-mark hold kubelet kubeadm kubectl


IPADDR="10.0.0.10"

NODENAME=$(hostname -s)

sudo kubeadm init --apiserver-advertise-address=$IPADDR --apiserver-cert-extra-sans=$IPADDR --pod-network-cidr=192.168.0.0/16 --node-name $NODENAME --ignore-preflight-errors Swap
kubeadm config print init-defaults > ClusterConfiguration.yaml

sed -ri "s|^(\s*advertiseAddress:).*|\1 ${IPADDR}|" ClusterConfiguration.yaml
sed -ri "s|^(\s*name:).*|\1 ${NODENAME}|" ClusterConfiguration.yaml
sed -ri "s|^(\s*kubernetesVersion:).*|\1 ${KUBERNETES_VERSION%-*}|" ClusterConfiguration.yaml
sed -ri "s|^(\s*criSocket:).*|\1 unix:///run/cri-dockerd.sock|" ClusterConfiguration.yaml
sed -ri 's|^(\s*)serviceSubnet:.*|&\n\1podSubnet: 192.168.0.0/16|' ClusterConfiguration.yaml

# Set the cgroupDriver to systemd...matching that of your container runtime, containerd
cat <<EOF >> ClusterConfiguration.yaml
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
EOF

sudo kubeadm init --config=ClusterConfiguration.yaml

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

curl https://docs.projectcalico.org/manifests/calico.yaml -O
curl -fsSLO https://docs.projectcalico.org/manifests/calico.yaml

kubectl apply -f calico.yaml
37 changes: 25 additions & 12 deletions 00-installing-k8s/03-kubeadm-local-docker/scripts/worker-node.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#! /bin/bash
#!/bin/bash

# disable swap
sudo swapoff -a
# keeps the swaf off during reboot
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo sed -i 's/^[^#].*none.*swap.*sw/#&/' /etc/fstab

sudo apt-get update -y
sudo apt-get update
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
Expand All @@ -19,8 +19,8 @@ echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Following configurations are recomended in the kubenetes documentation for Docker runtime. Please refer https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker

Expand All @@ -39,17 +39,30 @@ sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

echo "Docker Runtime Configured Successfully"
echo "Docker Engine Configured Successfully"

CRI_DOCKERD_VERSION=$(curl -s https://api.github.com/repos/Mirantis/cri-dockerd/releases/latest| grep tag_name | cut -d '"' -f 4 | sed 's/v//g')
curl -fsSLO https://github.com/Mirantis/cri-dockerd/releases/download/v${CRI_DOCKERD_VERSION}/cri-dockerd-${CRI_DOCKERD_VERSION}.amd64.tgz
tar xvf cri-dockerd-${CRI_DOCKERD_VERSION}.amd64.tgz
sudo mv cri-dockerd/cri-dockerd /usr/local/bin/

curl -fsSLO https://raw.githubusercontent.com/Mirantis/cri-dockerd/v${CRI_DOCKERD_VERSION}/packaging/systemd/cri-docker.service
curl -fsSLO https://raw.githubusercontent.com/Mirantis/cri-dockerd/v${CRI_DOCKERD_VERSION}/packaging/systemd/cri-docker.socket
sudo mv cri-docker.socket cri-docker.service /etc/systemd/system/
sudo sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
sudo systemctl daemon-reload
sudo systemctl enable cri-docker.service
sudo systemctl enable --now cri-docker.socket

echo "Docker Container Runtime Interface installed: $(cri-dockerd --version)"


sudo apt-get update
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt-get update -y
# sudo apt-get install -y kubelet kubeadm kubectl
VERSION=1.21.4-00
sudo apt-get install -y kubelet=$VERSION kubectl=$VERSION kubeadm=$VERSION

KUBERNETES_VERSION=1.25.4-00
sudo apt-get update
sudo apt-get install -y kubelet=$KUBERNETES_VERSION kubectl=$KUBERNETES_VERSION kubeadm=$KUBERNETES_VERSION
# reference https://stackoverflow.com/questions/49721708/how-to-install-specific-version-of-kubernetes
sudo apt-mark hold kubelet kubeadm kubectl
4 changes: 2 additions & 2 deletions 00-installing-k8s/04-automated-local-k8s-setup/Vagrantfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Vagrant.configure("2") do |config|
SHELL

config.vm.define "master" do |master|
master.vm.box = "bento/ubuntu-18.04"
master.vm.box = "bento/ubuntu-22.04"
master.vm.hostname = "master-node"
master.vm.network "private_network", ip: "10.0.0.10"
master.vm.provider "virtualbox" do |vb|
Expand All @@ -20,7 +20,7 @@ Vagrant.configure("2") do |config|

(1..2).each do |i|
config.vm.define "node0#{i}" do |node|
node.vm.box = "bento/ubuntu-18.04"
node.vm.box = "bento/ubuntu-22.04"
node.vm.hostname = "worker-node0#{i}"
node.vm.network "private_network", ip: "10.0.0.1#{i}"
node.vm.provider "virtualbox" do |vb|
Expand Down
6 changes: 3 additions & 3 deletions 00-installing-k8s/04-automated-local-k8s-setup/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ kubectl get nodes
```

```
master-node Ready control-plane,master 15m v1.21.4
worker-node01 Ready worker 12m v1.21.4
worker-node02 Ready worker 9m4s v1.21.4
master-node Ready control-plane,master 15m v1.25.4
worker-node01 Ready worker 12m v1.25.4
worker-node02 Ready worker 9m4s v1.25.4
```

We can find out the pods running in our system by
Expand Down
25 changes: 20 additions & 5 deletions 00-installing-k8s/04-automated-local-k8s-setup/scripts/common.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
#! /bin/bash
#!/bin/bash

# Variable Declaration

KUBERNETES_VERSION="1.21.4-00"
KUBERNETES_VERSION=1.25.4-00

# disable swap
sudo swapoff -a

# keeps the swaf off during reboot
sudo sed -i '/ swap / s/^/#/g' /etc/fstab
sudo sed -i 's/^[^#].*none.*swap.*sw/#&/' /etc/fstab

sudo apt-get update -y
sudo apt-get install -y \
Expand All @@ -25,7 +25,7 @@ echo \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Following configurations are recomended in the kubenetes documentation for Docker runtime. Please refer https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker

Expand All @@ -46,7 +46,22 @@ sudo systemctl restart docker

sudo gpasswd -a vagrant docker

echo "Docker Runtime Configured Successfully"
echo "Docker Engine Configured Successfully"

CRI_DOCKERD_VERSION=$(curl -s https://api.github.com/repos/Mirantis/cri-dockerd/releases/latest| grep tag_name | cut -d '"' -f 4 | sed 's/v//g')
curl -fsSLO https://github.com/Mirantis/cri-dockerd/releases/download/v${CRI_DOCKERD_VERSION}/cri-dockerd-${CRI_DOCKERD_VERSION}.amd64.tgz
tar xvf cri-dockerd-${CRI_DOCKERD_VERSION}.amd64.tgz
sudo mv cri-dockerd/cri-dockerd /usr/local/bin/

curl -fsSLO https://raw.githubusercontent.com/Mirantis/cri-dockerd/v${CRI_DOCKERD_VERSION}/packaging/systemd/cri-docker.service
curl -fsSLO https://raw.githubusercontent.com/Mirantis/cri-dockerd/v${CRI_DOCKERD_VERSION}/packaging/systemd/cri-docker.socket
sudo mv cri-docker.socket cri-docker.service /etc/systemd/system/
sudo sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
sudo systemctl daemon-reload
sudo systemctl enable cri-docker.service
sudo systemctl enable --now cri-docker.socket

echo "Docker Container Runtime Interface installed: $(cri-dockerd --version)"


sudo apt-get update
Expand Down
29 changes: 21 additions & 8 deletions 00-installing-k8s/04-automated-local-k8s-setup/scripts/master.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,26 @@
#! /bin/bash
#!/bin/bash

MASTER_IP="10.0.0.10"
IPADDR="10.0.0.10"
NODENAME=$(hostname -s)
POD_CIDR="192.168.0.0/16"

sudo kubeadm config images pull
kubeadm config print init-defaults > ClusterConfiguration.yaml

echo "Preflight Check Passed: Downloaded All Required Images"
sed -ri "s|^(\s*advertiseAddress:).*|\1 ${IPADDR}|" ClusterConfiguration.yaml
sed -ri "s|^(\s*name:).*|\1 ${NODENAME}|" ClusterConfiguration.yaml
sed -ri "s|^(\s*kubernetesVersion:).*|\1 ${KUBERNETES_VERSION%-*}|" ClusterConfiguration.yaml
sed -ri "s|^(\s*criSocket:).*|\1 unix:///run/cri-dockerd.sock|" ClusterConfiguration.yaml
sed -ri "s|^(\s*)serviceSubnet:.*|&\n\1podSubnet: ${POD_CIDR}|" ClusterConfiguration.yaml

sudo kubeadm init --apiserver-advertise-address=$MASTER_IP --apiserver-cert-extra-sans=$MASTER_IP --pod-network-cidr=$POD_CIDR --node-name $NODENAME --ignore-preflight-errors Swap
# Set the cgroupDriver to systemd...matching that of your container runtime, containerd
cat <<EOF >> ClusterConfiguration.yaml
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
EOF

sudo kubeadm init --config=ClusterConfiguration.yaml

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
Expand All @@ -30,7 +42,7 @@ cp /etc/kubernetes/admin.conf /vagrant/configs/config
touch /vagrant/configs/join.sh
chmod +x /vagrant/configs/join.sh

kubeadm token create --print-join-command > /vagrant/configs/join.sh
echo "$(kubeadm token create --print-join-command) --cri-socket unix:///run/cri-dockerd.sock" > /vagrant/configs/join.sh

# Install Calico Network Plugin

Expand All @@ -42,7 +54,8 @@ kubectl apply -f https://raw.githubusercontent.com/scriptcamp/kubeadm-scripts/ma

# Install Kubernetes Dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
KUBERNETES_DASHBOARD_VERSION=$(curl -s https://api.github.com/repos/kubernetes/dashboard/releases/latest | grep tag_name | cut -d '"' -f 4 | sed 's/v//g')
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v${KUBERNETES_DASHBOARD_VERSION}/aio/deploy/recommended.yaml

# Create Dashboard User

Expand All @@ -69,7 +82,7 @@ subjects:
namespace: kubernetes-dashboard
EOF

kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}" >> /vagrant/configs/token
kubectl -n kubernetes-dashboard create token admin-user > /vagrant/configs/token

sudo -i -u vagrant bash << 'EOF'
mkdir -p $HOME/.kube
Expand Down