5.0 KiB
Set Up The Jumpbox
In this lab you will set up one of the four machines to be a jumpbox
. This
machine will be used to run commands throughout this tutorial. While a dedicated
machine is being used to ensure consistency, these commands can also be run from
just about any machine including your personal workstation running macOS or
Linux.
Think of the jumpbox
as the administration machine that you will use as a
home base when setting up your Kubernetes cluster from the ground up. Before
we get started we need to install a few command line utilities and clone the
Kubernetes The Hard Way git repository, which contains some additional
configuration files that will be used to configure various Kubernetes
components throughout this tutorial.
Log in to the jumpbox
:
ssh vagrant@jumpbox
All commands will be run as the vagrant
user. This is being done for the sake
of convenience, and will help reduce the number of commands required to set
everything up.
Install Command Line Utilities
Now that you are logged into the jumpbox
machine as the vagrant
user, you will
install the command line utilities that will be used to preform various tasks
throughout the tutorial.
{
sudo apt-get update
sudo apt-get -y install wget curl vim openssl git
}
Sync GitHub Repository
Now it's time to download a copy of this tutorial which contains the
configuration files and templates that will be used to build your Kubernetes
cluster from the ground up. Clone the Kubernetes The Hard Way git repository
using the git
command:
git clone --depth 1 \
https://github.com/b01/kubernetes-the-hard-way.git
Change into the kubernetes-the-hard-way
directory:
cd kubernetes-the-hard-way
This will be the working directory for the rest of the tutorial. If you ever
get lost run the pwd
command to verify you are in the right directory when
running commands on the jumpbox
:
pwd
/home/vagrant/kubernetes-the-hard-way
Download Binaries
In this section you will download the binaries for the various Kubernetes
components. The binaries will be stored in the downloads
directory on the
jumpbox
, which will reduce the amount of internet bandwidth required to
complete this tutorial as we avoid downloading the binaries multiple times
for each machine in our Kubernetes cluster.
The binaries that will be downloaded are listed in either the
downloads-amd64.txt
or downloads-arm64.txt
file depending on your hardware
architecture, which you can review using the cat
command:
cat downloads-$(dpkg --print-architecture).txt
Download the binaries into a directory called downloads
using the wget
command:
wget -q --show-progress \
--https-only \
--timestamping \
-P downloads \
-i downloads-$(dpkg --print-architecture).txt
Depending on your internet connection speed it may take a while to download
over 500
megabytes of binaries, and once the download is complete, you can
list them using the ls
command:
ls -oh downloads
Extract the component binaries from the release archives and organize them
under the downloads
directory.
{
KUBE_VER=v1.33.1
CRI_VER=v1.33.0
RUNC_VER=v1.3.0
CNI_VER=v1.7.1
CONTAINERD_VER=2.1.1
ETCD_VER=v3.6.0
ARCH=$(dpkg --print-architecture)
mkdir -p downloads/{client,cni-plugins,controller,worker}
tar -xvf downloads/crictl-${CRI_VER}-linux-${ARCH}.tar.gz \
-C downloads/worker/
tar -xvf downloads/containerd-${CONTAINERD_VER}-linux-${ARCH}.tar.gz \
--strip-components 1 \
-C downloads/worker/
tar -xvf downloads/cni-plugins-linux-${ARCH}-${CNI_VER}.tgz \
-C downloads/cni-plugins/
tar -xvf downloads/etcd-${ETCD_VER}-linux-${ARCH}.tar.gz \
-C downloads/ \
--strip-components 1 \
etcd-${ETCD_VER}-linux-${ARCH}/etcdctl \
etcd-${ETCD_VER}-linux-${ARCH}/etcd
mv downloads/{etcdctl,kubectl} downloads/client/
mv downloads/{etcd,kube-apiserver,kube-controller-manager,kube-scheduler} \
downloads/controller/
mv downloads/{kubelet,kube-proxy} downloads/worker/
mv downloads/runc.${ARCH} downloads/worker/runc
}
rm -rf downloads/*gz
Make the binaries executable.
{
chmod +x -R downloads
}
Install kubectl
In this section you will install the kubectl
, the official Kubernetes client
command line tool, on the jumpbox
machine. kubectl
will be used to interact
with the Kubernetes control plane once your cluster is provisioned later in
this tutorial.
Use the chmod
command to make the kubectl
binary executable and move it to
the /usr/local/bin/
directory:
{
sudo cp downloads/client/kubectl /usr/local/bin/
}
At this point kubectl
is installed and can be verified by running the
kubectl
command:
kubectl version --client
Client Version: v1.33.1
Kustomize Version: v5.6.0
At this point the jumpbox
has been set up with all the command line tools
and utilities necessary to complete the labs in this tutorial.