5.3.1.2. Software Installation
This section describes the installation process for the components required on Kubernetes worker nodes. The installation is performed manually and prepares the environment for subsequent node joining to the cluster.
- runc
- containerd
- kubelet
- kubectl
- crictl
- kubeadm
Installation of runc
● Required
Installation of runc
● Required
Component installation steps
- Creating working directories.
- Environment variables.
- Download instructions.
- Permissions setup.
- Download service.
- Starting the download service.
- Bash
- Cloud-init
Creating working directories
mkdir -p /etc/default/runc
Environment variables
cat <<EOF > /etc/default/runc/download.env
COMPONENT_VERSION="v1.1.12"
REPOSITORY="https://github.com/opencontainers/runc/releases/download"
EOF
Download instructions
cat <<"EOF" > /etc/default/runc/download-script.sh
#!/bin/bash
set -Eeuo pipefail
COMPONENT_VERSION="${COMPONENT_VERSION:-v1.1.12}"
REPOSITORY="${REPOSITORY:-https://github.com/opencontainers/runc/releases/download}"
PATH_BIN="${REPOSITORY}/${COMPONENT_VERSION}/runc.amd64"
PATH_SHA256="${REPOSITORY}/${COMPONENT_VERSION}/runc.sha256sum"
INSTALL_PATH="/usr/local/bin/runc"
LOG_TAG="runc-installer"
TMP_DIR="$(mktemp -d)"
logger -t "$LOG_TAG" "[INFO] Checking current runc version..."
CURRENT_VERSION=$($INSTALL_PATH --version 2>/dev/null | head -n1 | awk '{print $NF}') || CURRENT_VERSION="none"
COMPONENT_VERSION_CLEAN=$(echo "$COMPONENT_VERSION" | sed 's/^v//')
logger -t "$LOG_TAG" "[INFO] Current: $CURRENT_VERSION, Target: $COMPONENT_VERSION_CLEAN"
if [[ "$CURRENT_VERSION" != "$COMPONENT_VERSION_CLEAN" ]]; then
logger -t "$LOG_TAG" "[INFO] Download URL: $PATH_BIN"
logger -t "$LOG_TAG" "[INFO] Updating runc to version $COMPONENT_VERSION..."
cd "$TMP_DIR"
logger -t "$LOG_TAG" "[INFO] Working directory: $PWD"
logger -t "$LOG_TAG" "[INFO] Downloading runc..."
curl -fsSL -o runc.amd64 "$PATH_BIN" || { logger -t "$LOG_TAG" "[ERROR] Failed to download runc"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Downloading checksum file..."
curl -fsSL -o runc.sha256sum "$PATH_SHA256" || { logger -t "$LOG_TAG" "[ERROR] Failed to download checksum file"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Verifying checksum..."
grep "runc.amd64" runc.sha256sum | sha256sum -c - || { logger -t "$LOG_TAG" "[ERROR] Checksum verification failed!"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Installing runc..."
install -m 755 runc.amd64 "$INSTALL_PATH"
logger -t "$LOG_TAG" "[INFO] runc successfully updated to $COMPONENT_VERSION."
rm -rf "$TMP_DIR"
else
logger -t "$LOG_TAG" "[INFO] runc is already up to date. Skipping installation."
fi
EOF
Permissions setup
chmod +x /etc/default/runc/download-script.sh
Download service
cat <<EOF > /usr/lib/systemd/system/runc-install.service
[Unit]
Description=Install and update in-cloud component runc
After=network.target
Wants=network-online.target
[Service]
Type=oneshot
EnvironmentFile=-/etc/default/runc/download.env
ExecStart=/bin/bash -c "/etc/default/runc/download-script.sh"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
Download
systemctl enable runc-install.service
systemctl start runc-install.service
Environment variables
- path: /etc/default/runc/download.env
owner: root:root
permissions: '0644'
content: |
COMPONENT_VERSION="v1.1.12"
REPOSITORY="https://github.com/opencontainers/runc/releases/download"
Download instructions/Permissions setup
- path: /etc/default/runc/download-script.sh
owner: root:root
permissions: '0755'
content: |
#!/bin/bash
set -Eeuo pipefail
COMPONENT_VERSION="${COMPONENT_VERSION:-v1.1.12}"
REPOSITORY="${REPOSITORY:-https://github.com/opencontainers/runc/releases/download}"
PATH_BIN="${REPOSITORY}/${COMPONENT_VERSION}/runc.amd64"
PATH_SHA256="${REPOSITORY}/${COMPONENT_VERSION}/runc.sha256sum"
INSTALL_PATH="/usr/local/bin/runc"
LOG_TAG="runc-installer"
TMP_DIR="$(mktemp -d)"
logger -t "$LOG_TAG" "[INFO] Checking current runc version..."
CURRENT_VERSION=$($INSTALL_PATH --version 2>/dev/null | head -n1 | awk '{print $NF}') || CURRENT_VERSION="none"
COMPONENT_VERSION_CLEAN=$(echo "$COMPONENT_VERSION" | sed 's/^v//')
logger -t "$LOG_TAG" "[INFO] Current: $CURRENT_VERSION, Target: $COMPONENT_VERSION_CLEAN"
if [[ "$CURRENT_VERSION" != "$COMPONENT_VERSION_CLEAN" ]]; then
logger -t "$LOG_TAG" "[INFO] Download URL: $PATH_BIN"
logger -t "$LOG_TAG" "[INFO] Updating runc to version $COMPONENT_VERSION..."
cd "$TMP_DIR"
logger -t "$LOG_TAG" "[INFO] Working directory: $PWD"
logger -t "$LOG_TAG" "[INFO] Downloading runc..."
curl -fsSL -o runc.amd64 "$PATH_BIN" || { logger -t "$LOG_TAG" "[ERROR] Failed to download runc"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Downloading checksum file..."
curl -fsSL -o runc.sha256sum "$PATH_SHA256" || { logger -t "$LOG_TAG" "[ERROR] Failed to download checksum file"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Verifying checksum..."
grep "runc.amd64" runc.sha256sum | sha256sum -c - || { logger -t "$LOG_TAG" "[ERROR] Checksum verification failed!"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Installing runc..."
install -m 755 runc.amd64 "$INSTALL_PATH"
logger -t "$LOG_TAG" "[INFO] runc successfully updated to $COMPONENT_VERSION."
rm -rf "$TMP_DIR"
else
logger -t "$LOG_TAG" "[INFO] runc is already up to date. Skipping installation."
fi
Download service
- path: /usr/lib/systemd/system/runc-install.service
owner: root:root
permissions: '0644'
content: |
[Unit]
Description=Install and update in-cloud component runc
After=network.target
Wants=network-online.target
[Service]
Type=oneshot
EnvironmentFile=-/etc/default/runc/download.env
ExecStart=/bin/bash -c "/etc/default/runc/download-script.sh"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Download
- systemctl enable runc-install.service
- systemctl start runc-install.service
Installation check
Installation check
Executable files
journalctl -t runc-installer
Command output
***** [INFO] Checking current runc version...
***** [INFO] Current: none, Target: v1.1.12
***** [INFO] Download URL: https://*******
***** [INFO] Updating runc to version v1.1.12...
***** [INFO] Working directory: /tmp/tmp.*****
***** [INFO] Downloading runc...
***** [INFO] Downloading checksum file...
***** [INFO] Verifying checksum...
***** [INFO] Installing runc...
***** [INFO] runc successfully updated to v1.1.12.
ls -la /usr/local/bin/ | grep 'runc$'
Command output
-rwxr-xr-x 1 root root 10709696 Jan 23 2024 runc
Executable file version
runc --version
Command output
runc version 1.1.12
commit: v1.1.12-0-g51d5e946
spec: 1.0.2-dev
go: go1.20.13
libseccomp: 2.5.4
Installation of containerd
● Required
Installation of containerd
● Required
Component installation steps
- Creating working directories.
- Environment variables.
- Download instructions.
- Permission setup.
- Download service.
- Starting the download service.
- Bash
- Cloud-init
Creating working directories
mkdir -p /etc/default/containerd
Environment variables
cat <<EOF > /etc/default/containerd/download.env
COMPONENT_VERSION="1.7.19"
REPOSITORY="https://github.com/containerd/containerd/releases/download"
EOF
Download instructions
cat <<"EOF" > /etc/default/containerd/download-script.sh
#!/bin/bash
set -Eeuo pipefail
COMPONENT_VERSION="${COMPONENT_VERSION:-1.7.19}"
REPOSITORY="${REPOSITORY:-https://github.com/containerd/containerd/releases/download}"
PATH_BIN="${REPOSITORY}/v${COMPONENT_VERSION}/containerd-${COMPONENT_VERSION}-linux-amd64.tar.gz"
PATH_SHA256="${REPOSITORY}/v${COMPONENT_VERSION}/containerd-${COMPONENT_VERSION}-linux-amd64.tar.gz.sha256sum"
INSTALL_PATH="/usr/local/bin/"
LOG_TAG="containerd-installer"
TMP_DIR="$(mktemp -d)"
logger -t "$LOG_TAG" "[INFO] Checking current containerd version..."
CURRENT_VERSION=$($INSTALL_PATH/containerd --version 2>/dev/null | awk '{print $3}' | sed 's/v//') || CURRENT_VERSION="none"
COMPONENT_VERSION_CLEAN=$(echo "$COMPONENT_VERSION" | sed 's/^v//')
logger -t "$LOG_TAG" "[INFO] Current: $CURRENT_VERSION, Target: $COMPONENT_VERSION_CLEAN"
if [[ "$CURRENT_VERSION" != "$COMPONENT_VERSION_CLEAN" ]]; then
logger -t "$LOG_TAG" "[INFO] Download URL: $PATH_BIN"
logger -t "$LOG_TAG" "[INFO] Updating containerd to version $COMPONENT_VERSION_CLEAN..."
cd "$TMP_DIR"
logger -t "$LOG_TAG" "[INFO] Working directory: $PWD"
logger -t "$LOG_TAG" "[INFO] Downloading containerd..."
curl -fsSL -o "containerd-${COMPONENT_VERSION}-linux-amd64.tar.gz" "$PATH_BIN" || { logger -t "$LOG_TAG" "[ERROR] Failed to download containerd"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Downloading checksum file..."
curl -fsSL -o "containerd.sha256sum" "$PATH_SHA256" || { logger -t "$LOG_TAG" "[ERROR] Failed to download checksum file"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Verifying checksum..."
sha256sum -c containerd.sha256sum | grep 'OK' || { logger -t "$LOG_TAG" "[ERROR] Checksum verification failed!"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Extracting files..."
tar -C "$TMP_DIR" -xvf "containerd-${COMPONENT_VERSION}-linux-amd64.tar.gz"
logger -t "$LOG_TAG" "[INFO] Installing binaries..."
install -m 755 "$TMP_DIR/bin/containerd" $INSTALL_PATH
install -m 755 "$TMP_DIR/bin/containerd-shim"* $INSTALL_PATH
install -m 755 "$TMP_DIR/bin/ctr" $INSTALL_PATH
logger -t "$LOG_TAG" "[INFO] Containerd successfully updated to $COMPONENT_VERSION."
rm -rf "$TMP_DIR"
else
logger -t "$LOG_TAG" "[INFO] Containerd is already up to date. Skipping installation."
fi
EOF
Permission setup
chmod +x /etc/default/containerd/download-script.sh
Download service
cat <<EOF > /usr/lib/systemd/system/containerd-install.service
[Unit]
Description=Install and update in-cloud component containerd
After=network.target
Wants=network-online.target
[Service]
Type=oneshot
EnvironmentFile=-/etc/default/containerd/download.env
ExecStart=/bin/bash -c "/etc/default/containerd/download-script.sh"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
Starting the download service
systemctl enable containerd-install.service
systemctl start containerd-install.service
Environment variables
- path: /etc/default/containerd/download.env
owner: root:root
permissions: '0644'
content: |
COMPONENT_VERSION="1.7.19"
REPOSITORY="https://github.com/containerd/containerd/releases/download"
Download instructions/Permission setup
- path: /etc/default/containerd/download-script.sh
owner: root:root
permissions: '0755'
content: |
#!/bin/bash
set -Eeuo pipefail
COMPONENT_VERSION="${COMPONENT_VERSION:-1.7.19}"
REPOSITORY="${REPOSITORY:-https://github.com/containerd/containerd/releases/download}"
PATH_BIN="${REPOSITORY}/v${COMPONENT_VERSION}/containerd-${COMPONENT_VERSION}-linux-amd64.tar.gz"
PATH_SHA256="${REPOSITORY}/v${COMPONENT_VERSION}/containerd-${COMPONENT_VERSION}-linux-amd64.tar.gz.sha256sum"
INSTALL_PATH="/usr/local/bin/"
LOG_TAG="containerd-installer"
TMP_DIR="$(mktemp -d)"
logger -t "$LOG_TAG" "[INFO] Checking current containerd version..."
CURRENT_VERSION=$($INSTALL_PATH/containerd --version 2>/dev/null | awk '{print $3}' | sed 's/v//') || CURRENT_VERSION="none"
COMPONENT_VERSION_CLEAN=$(echo "$COMPONENT_VERSION" | sed 's/^v//')
logger -t "$LOG_TAG" "[INFO] Current: $CURRENT_VERSION, Target: $COMPONENT_VERSION_CLEAN"
if [[ "$CURRENT_VERSION" != "$COMPONENT_VERSION_CLEAN" ]]; then
logger -t "$LOG_TAG" "[INFO] Download URL: $PATH_BIN"
logger -t "$LOG_TAG" "[INFO] Updating containerd to version $COMPONENT_VERSION_CLEAN..."
cd "$TMP_DIR"
logger -t "$LOG_TAG" "[INFO] Working directory: $PWD"
logger -t "$LOG_TAG" "[INFO] Downloading containerd..."
curl -fsSL -o "containerd-${COMPONENT_VERSION}-linux-amd64.tar.gz" "$PATH_BIN" || { logger -t "$LOG_TAG" "[ERROR] Failed to download containerd"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Downloading checksum file..."
curl -fsSL -o "containerd.sha256sum" "$PATH_SHA256" || { logger -t "$LOG_TAG" "[ERROR] Failed to download checksum file"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Verifying checksum..."
sha256sum -c containerd.sha256sum | grep 'OK' || { logger -t "$LOG_TAG" "[ERROR] Checksum verification failed!"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Extracting files..."
tar -C "$TMP_DIR" -xvf "containerd-${COMPONENT_VERSION}-linux-amd64.tar.gz"
logger -t "$LOG_TAG" "[INFO] Installing binaries..."
install -m 755 "$TMP_DIR/bin/containerd" $INSTALL_PATH
install -m 755 "$TMP_DIR/bin/containerd-shim"* $INSTALL_PATH
install -m 755 "$TMP_DIR/bin/ctr" $INSTALL_PATH
logger -t "$LOG_TAG" "[INFO] Containerd successfully updated to $COMPONENT_VERSION."
rm -rf "$TMP_DIR"
else
logger -t "$LOG_TAG" "[INFO] Containerd is already up to date. Skipping installation."
fi
Download service
- path: /usr/lib/systemd/system/containerd-install.service
owner: root:root
permissions: '0644'
content: |
[Unit]
Description=Install and update in-cloud component containerd
After=network.target
Wants=network-online.target
[Service]
Type=oneshot
EnvironmentFile=-/etc/default/containerd/download.env
ExecStart=/bin/bash -c "/etc/default/containerd/download-script.sh"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Starting the download service
- systemctl enable containerd-install.service
- systemctl start containerd-install.service
Installation verification
Installation verification
Executable files
journalctl -t containerd-installer
Command output
***** [INFO] Checking current containerd version...
***** [INFO] Current: none, Target: 1.7.19
***** [INFO] Download URL: https://*******
***** [INFO] Updating containerd to version 1.7.19...
***** [INFO] Working directory: /tmp/tmp.*****
***** [INFO] Downloading containerd...
***** [INFO] Downloading checksum file...
***** [INFO] Verifying checksum...
***** [INFO] Extracting files...
***** [INFO] Installing binaries...
***** [INFO] Containerd successfully updated to 1.7.19.
ls -la /usr/local/bin/ | grep -E "containerd|ctr"
Command output
-rwxr-xr-x 1 root root 54855296 Feb 18 15:12 containerd
-rwxr-xr-x 1 root root 7176192 Feb 18 15:12 containerd-shim
-rwxr-xr-x 1 root root 8884224 Feb 18 15:12 containerd-shim-containerd-v1
-rwxr-xr-x 1 root root 12169216 Feb 18 15:12 containerd-shim-containerd-v2
-rwxr-xr-x 1 root root 12169216 Feb 18 15:12 ctr
Executable file version
containerd --version
Command output
containerd github.com/containerd/containerd v1.7.19 2bf793ef6dc9a18e00cb12efb64355c2c9d5eb41
Installation of kubelet
● Required
Installation of kubelet
● Required
Component installation steps
- Creating working directories.
- Environment variables.
- Download instructions.
- Permissions setup.
- Download service.
- Starting the download service.
- Bash
- Cloud-init
Creating working directories
mkdir -p /etc/default/kubelet
Environment variables
cat <<EOF > /etc/default/kubelet/download.env
COMPONENT_VERSION="v1.30.4"
REPOSITORY="https://dl.k8s.io"
EOF
Download instructions
cat <<"EOF" > /etc/default/kubelet/download-script.sh
#!/bin/bash
set -Eeuo pipefail
COMPONENT_VERSION="${COMPONENT_VERSION:-v1.30.4}"
REPOSITORY="${REPOSITORY:-https://dl.k8s.io}"
PATH_BIN="${REPOSITORY}/${COMPONENT_VERSION}/bin/linux/amd64/kubelet"
PATH_SHA256="${REPOSITORY}/${COMPONENT_VERSION}/bin/linux/amd64/kubelet.sha256"
INSTALL_PATH="/usr/local/bin/kubelet"
LOG_TAG="kubelet-installer"
TMP_DIR="$(mktemp -d)"
logger -t "$LOG_TAG" "[INFO] Checking current kubelet version..."
CURRENT_VERSION=$($INSTALL_PATH --version 2>/dev/null | awk '{print $2}' | sed 's/v//') || CURRENT_VERSION="none"
COMPONENT_VERSION_CLEAN=$(echo "$COMPONENT_VERSION" | sed 's/^v//')
logger -t "$LOG_TAG" "[INFO] Current: $CURRENT_VERSION, Target: $COMPONENT_VERSION_CLEAN"
if [[ "$CURRENT_VERSION" != "$COMPONENT_VERSION_CLEAN" ]]; then
logger -t "$LOG_TAG" "[INFO] Download URL: $PATH_BIN"
logger -t "$LOG_TAG" "[INFO] Updating kubelet to version $COMPONENT_VERSION_CLEAN..."
cd "$TMP_DIR"
logger -t "$LOG_TAG" "[INFO] Working directory: $PWD"
logger -t "$LOG_TAG" "[INFO] Downloading kubelet..."
curl -fsSL -o kubelet "$PATH_BIN" || { logger -t "$LOG_TAG" "[ERROR] Failed to download kubelet"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Downloading checksum file..."
curl -fsSL -o kubelet.sha256sum "$PATH_SHA256" || { logger -t "$LOG_TAG" "[ERROR] Failed to download checksum file"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Verifying checksum..."
awk '{print $1" kubelet"}' kubelet.sha256sum | sha256sum -c - || { logger -t "$LOG_TAG" "[ERROR] Checksum verification failed!"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Installing kubelet..."
install -m 755 kubelet "$INSTALL_PATH"
logger -t "$LOG_TAG" "[INFO] kubelet successfully updated to $COMPONENT_VERSION_CLEAN."
rm -rf "$TMP_DIR"
else
logger -t "$LOG_TAG" "[INFO] kubelet is already up to date. Skipping installation."
fi
EOF
Permissions setup
chmod +x /etc/default/kubelet/download-script.sh
Download service
cat <<EOF > /usr/lib/systemd/system/kubelet-install.service
[Unit]
Description=Install and update kubelet
After=network.target
Wants=network-online.target
[Service]
Type=oneshot
EnvironmentFile=-/etc/default/kubelet/download.env
ExecStart=/bin/bash -c "/etc/default/kubelet/download-script.sh"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
Download
systemctl enable kubelet-install.service
systemctl start kubelet-install.service
Environment variables
- path: /etc/default/kubelet/download.env
owner: root:root
permissions: '0644'
content: |
COMPONENT_VERSION="v1.30.4"
REPOSITORY="https://dl.k8s.io"
Download instructions/Permissions setup
- path: /etc/default/kubelet/download-script.sh
owner: root:root
permissions: '0755'
content: |
#!/bin/bash
set -Eeuo pipefail
COMPONENT_VERSION="${COMPONENT_VERSION:-v1.30.4}"
REPOSITORY="${REPOSITORY:-https://dl.k8s.io}"
PATH_BIN="${REPOSITORY}/${COMPONENT_VERSION}/bin/linux/amd64/kubelet"
PATH_SHA256="${REPOSITORY}/${COMPONENT_VERSION}/bin/linux/amd64/kubelet.sha256"
INSTALL_PATH="/usr/local/bin/kubelet"
LOG_TAG="kubelet-installer"
TMP_DIR="$(mktemp -d)"
logger -t "$LOG_TAG" "[INFO] Checking current kubelet version..."
CURRENT_VERSION=$($INSTALL_PATH --version 2>/dev/null | awk '{print $2}' | sed 's/v//') || CURRENT_VERSION="none"
COMPONENT_VERSION_CLEAN=$(echo "$COMPONENT_VERSION" | sed 's/^v//')
logger -t "$LOG_TAG" "[INFO] Current: $CURRENT_VERSION, Target: $COMPONENT_VERSION_CLEAN"
if [[ "$CURRENT_VERSION" != "$COMPONENT_VERSION_CLEAN" ]]; then
logger -t "$LOG_TAG" "[INFO] Download URL: $PATH_BIN"
logger -t "$LOG_TAG" "[INFO] Updating kubelet to version $COMPONENT_VERSION_CLEAN..."
cd "$TMP_DIR"
logger -t "$LOG_TAG" "[INFO] Working directory: $PWD"
logger -t "$LOG_TAG" "[INFO] Downloading kubelet..."
curl -fsSL -o kubelet "$PATH_BIN" || { logger -t "$LOG_TAG" "[ERROR] Failed to download kubelet"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Downloading checksum file..."
curl -fsSL -o kubelet.sha256sum "$PATH_SHA256" || { logger -t "$LOG_TAG" "[ERROR] Failed to download checksum file"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Verifying checksum..."
awk '{print $1" kubelet"}' kubelet.sha256sum | sha256sum -c - || { logger -t "$LOG_TAG" "[ERROR] Checksum verification failed!"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Installing kubelet..."
install -m 755 kubelet "$INSTALL_PATH"
logger -t "$LOG_TAG" "[INFO] kubelet successfully updated to $COMPONENT_VERSION_CLEAN."
rm -rf "$TMP_DIR"
else
logger -t "$LOG_TAG" "[INFO] kubelet is already up to date. Skipping installation."
fi
Download service
- path: /usr/lib/systemd/system/kubelet-install.service
owner: root:root
permissions: '0644'
content: |
[Unit]
Description=Install and update kubelet
After=network.target
Wants=network-online.target
[Service]
Type=oneshot
EnvironmentFile=-/etc/default/kubelet/download.env
ExecStart=/bin/bash -c "/etc/default/kubelet/download-script.sh"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Download
- systemctl enable kubelet-install.service
- systemctl start kubelet-install.service
Installation check
Installation check
journalctl -t kubelet-installer
Command output
***** [INFO] Checking current kubelet version...
***** [INFO] Current: none, Target: v1.30.4
***** [INFO] Download URL: https://*******
***** [INFO] Updating kubelet to version v1.30.4...
***** [INFO] Working directory: /tmp/tmp.*****
***** [INFO] Downloading kubelet...
***** [INFO] Downloading checksum file...
***** [INFO] Verifying checksum...
***** [INFO] Installing kubelet...
***** [INFO] kubelet successfully updated to v1.30.4.
ls -la /usr/local/bin/ | grep 'kubelet$'
Command output
-rwxr-xr-x 1 root root 100125080 Aug 14 2024 kubelet
kubelet --version
Command output
Kubernetes v1.30.4
Installation of kubectl
● Optional
Installation of kubectl
● Optional
Component installation steps
- Creating working directories.
- Environment variables.
- Download instructions.
- Permission setup.
- Download service.
- Starting the download service.
- Bash
- Cloud-init
Creating working directories
mkdir -p /etc/default/kubectl
Environment variables
cat <<EOF > /etc/default/kubectl/download.env
COMPONENT_VERSION="v1.30.4"
REPOSITORY="https://dl.k8s.io"
EOF
Download instructions
cat <<"EOF" > /etc/default/kubectl/download-script.sh
#!/bin/bash
set -Eeuo pipefail
COMPONENT_VERSION="${COMPONENT_VERSION:-v1.30.4}"
REPOSITORY="${REPOSITORY:-https://dl.k8s.io}"
PATH_BIN="${REPOSITORY}/${COMPONENT_VERSION}/bin/linux/amd64/kubectl"
PATH_SHA256="${REPOSITORY}/${COMPONENT_VERSION}/bin/linux/amd64/kubectl.sha256"
INSTALL_PATH="/usr/local/bin/kubectl"
LOG_TAG="kubectl-installer"
TMP_DIR="$(mktemp -d)"
logger -t "$LOG_TAG" "[INFO] Checking current kubectl version..."
CURRENT_VERSION=$($INSTALL_PATH version -o json --client=true 2>/dev/null | jq -r '.clientVersion.gitVersion' | sed 's/^v//') || CURRENT_VERSION="none"
COMPONENT_VERSION_CLEAN=$(echo "$COMPONENT_VERSION" | sed 's/^v//')
logger -t "$LOG_TAG" "[INFO] Current: $CURRENT_VERSION, Target: $COMPONENT_VERSION_CLEAN"
if [[ "$CURRENT_VERSION" != "$COMPONENT_VERSION_CLEAN" ]]; then
logger -t "$LOG_TAG" "[INFO] Download URL: $PATH_BIN"
logger -t "$LOG_TAG" "[INFO] Updating kubectl to version $COMPONENT_VERSION_CLEAN..."
cd "$TMP_DIR"
logger -t "$LOG_TAG" "[INFO] Working directory: $PWD"
logger -t "$LOG_TAG" "[INFO] Downloading kubectl..."
curl -fsSL -o kubectl "$PATH_BIN" || { logger -t "$LOG_TAG" "[ERROR] Failed to download kubectl"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Downloading checksum file..."
curl -fsSL -o kubectl.sha256sum "$PATH_SHA256" || { logger -t "$LOG_TAG" "[ERROR] Failed to download checksum file"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Verifying checksum..."
awk '{print $1" kubectl"}' kubectl.sha256sum | sha256sum -c - || { logger -t "$LOG_TAG" "[ERROR] Checksum verification failed!"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Installing kubectl..."
install -m 755 kubectl "$INSTALL_PATH"
logger -t "$LOG_TAG" "[INFO] kubectl successfully updated to $COMPONENT_VERSION_CLEAN."
rm -rf "$TMP_DIR"
else
logger -t "$LOG_TAG" "[INFO] kubectl is already up to date. Skipping installation."
fi
EOF
Permission setup
chmod +x /etc/default/kubectl/download-script.sh
Download service
cat <<EOF > /usr/lib/systemd/system/kubectl-install.service
[Unit]
Description=Install and update kubectl
After=network.target
Wants=network-online.target
[Service]
Type=oneshot
EnvironmentFile=-/etc/default/kubectl/download.env
ExecStart=/bin/bash -c "/etc/default/kubectl/download-script.sh"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
Download
systemctl enable kubectl-install.service
systemctl start kubectl-install.service
Environment variables
- path: /etc/default/kubectl/download.env
owner: root:root
permissions: '0644'
content: |
COMPONENT_VERSION="v1.30.4"
REPOSITORY="https://dl.k8s.io"
Download instructions/Permission setup
- path: /etc/default/kubectl/download-script.sh
owner: root:root
permissions: '0755'
content: |
#!/bin/bash
set -Eeuo pipefail
COMPONENT_VERSION="${COMPONENT_VERSION:-v1.30.4}"
REPOSITORY="${REPOSITORY:-https://dl.k8s.io}"
PATH_BIN="${REPOSITORY}/${COMPONENT_VERSION}/bin/linux/amd64/kubectl"
PATH_SHA256="${REPOSITORY}/${COMPONENT_VERSION}/bin/linux/amd64/kubectl.sha256"
INSTALL_PATH="/usr/local/bin/kubectl"
LOG_TAG="kubectl-installer"
TMP_DIR="$(mktemp -d)"
logger -t "$LOG_TAG" "[INFO] Checking current kubectl version..."
CURRENT_VERSION=$($INSTALL_PATH version -o json --client=true 2>/dev/null | jq -r '.clientVersion.gitVersion' | sed 's/^v//') || CURRENT_VERSION="none"
COMPONENT_VERSION_CLEAN=$(echo "$COMPONENT_VERSION" | sed 's/^v//')
logger -t "$LOG_TAG" "[INFO] Current: $CURRENT_VERSION, Target: $COMPONENT_VERSION_CLEAN"
if [[ "$CURRENT_VERSION" != "$COMPONENT_VERSION_CLEAN" ]]; then
logger -t "$LOG_TAG" "[INFO] Download URL: $PATH_BIN"
logger -t "$LOG_TAG" "[INFO] Updating kubectl to version $COMPONENT_VERSION_CLEAN..."
cd "$TMP_DIR"
logger -t "$LOG_TAG" "[INFO] Working directory: $PWD"
logger -t "$LOG_TAG" "[INFO] Downloading kubectl..."
curl -fsSL -o kubectl "$PATH_BIN" || { logger -t "$LOG_TAG" "[ERROR] Failed to download kubectl"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Downloading checksum file..."
curl -fsSL -o kubectl.sha256sum "$PATH_SHA256" || { logger -t "$LOG_TAG" "[ERROR] Failed to download checksum file"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Verifying checksum..."
awk '{print $1" kubectl"}' kubectl.sha256sum | sha256sum -c - || { logger -t "$LOG_TAG" "[ERROR] Checksum verification failed!"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Installing kubectl..."
install -m 755 kubectl "$INSTALL_PATH"
logger -t "$LOG_TAG" "[INFO] kubectl successfully updated to $COMPONENT_VERSION_CLEAN."
rm -rf "$TMP_DIR"
else
logger -t "$LOG_TAG" "[INFO] kubectl is already up to date. Skipping installation."
fi
Download service
- path: /usr/lib/systemd/system/kubectl-install.service
owner: root:root
permissions: '0644'
content: |
[Unit]
Description=Install and update kubectl
After=network.target
Wants=network-online.target
[Service]
Type=oneshot
EnvironmentFile=-/etc/default/kubectl/download.env
ExecStart=/bin/bash -c "/etc/default/kubectl/download-script.sh"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Download
- systemctl enable kubectl-install.service
- systemctl start kubectl-install.service
Installation verification
Installation verification
Executable files
journalctl -t kubectl-installer
Command output
***** [INFO] Checking current kubectl version...
***** [INFO] Current: none, Target: v1.30.4
***** [INFO] Download URL: https://*******
***** [INFO] Updating kubectl to version v1.30.4...
***** [INFO] Working directory: /tmp/tmp.*****
***** [INFO] Downloading kubectl...
***** [INFO] Downloading checksum file...
***** [INFO] Verifying checksum...
***** [INFO] Installing kubectl...
***** [INFO] kubectl successfully updated to v1.30.4.
ls -la /usr/local/bin/ | grep 'kubectl$'
Command output
-rwxr-xr-x 1 root root 51454104 Aug 14 2024 kubectl
Executable file version
kubectl version
Command output
Client Version: v1.30.4
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Installation of crictl
● Optional
Installation of crictl
● Optional
Component installation steps
- Creating working directories.
- Environment variables.
- Download instructions.
- Permission setup.
- Download service.
- Starting the download service.
- Bash
- Cloud-init
Creating working directories
mkdir -p /etc/default/crictl
Environment variables
cat <<EOF > /etc/default/crictl/download.env
COMPONENT_VERSION="v1.30.0"
REPOSITORY="https://github.com/kubernetes-sigs/cri-tools/releases/download"
EOF
Download instructions
cat <<"EOF" > /etc/default/crictl/download-script.sh
#!/bin/bash
set -Eeuo pipefail
COMPONENT_VERSION="${COMPONENT_VERSION:-v1.30.0}"
REPOSITORY="${REPOSITORY:-https://github.com/kubernetes-sigs/cri-tools/releases/download}"
PATH_BIN="${REPOSITORY}/${COMPONENT_VERSION}/crictl-${COMPONENT_VERSION}-linux-amd64.tar.gz"
PATH_SHA256="${REPOSITORY}/${COMPONENT_VERSION}/crictl-${COMPONENT_VERSION}-linux-amd64.tar.gz.sha256"
INSTALL_PATH="/usr/local/bin/crictl"
LOG_TAG="crictl-installer"
TMP_DIR="$(mktemp -d)"
logger -t "$LOG_TAG" "[INFO] Checking current crictl version..."
CURRENT_VERSION=$($INSTALL_PATH --version 2>/dev/null | awk '{print $3}' | sed 's/v//') || CURRENT_VERSION="none"
COMPONENT_VERSION_CLEAN=$(echo "$COMPONENT_VERSION" | sed 's/^v//')
logger -t "$LOG_TAG" "[INFO] Current: $CURRENT_VERSION, Target: $COMPONENT_VERSION_CLEAN"
if [[ "$CURRENT_VERSION" != "$COMPONENT_VERSION_CLEAN" ]]; then
logger -t "$LOG_TAG" "[INFO] Download URL: $PATH_BIN"
logger -t "$LOG_TAG" "[INFO] Updating crictl to version $COMPONENT_VERSION_CLEAN..."
cd "$TMP_DIR"
logger -t "$LOG_TAG" "[INFO] Working directory: $PWD"
logger -t "$LOG_TAG" "[INFO] Downloading crictl..."
curl -fsSL -o crictl.tar.gz "$PATH_BIN" || { logger -t "$LOG_TAG" "[ERROR] Failed to download crictl"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Downloading checksum file..."
curl -fsSL -o crictl.sha256sum "$PATH_SHA256" || { logger -t "$LOG_TAG" "[ERROR] Failed to download checksum file"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Verifying checksum..."
awk '{print $1" crictl.tar.gz"}' crictl.sha256sum | sha256sum -c - || { logger -t "$LOG_TAG" "[ERROR] Checksum verification failed!"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Extracting files..."
tar -C "$TMP_DIR" -xvf crictl.tar.gz
logger -t "$LOG_TAG" "[INFO] Installing crictl..."
install -m 755 "$TMP_DIR/crictl" "$INSTALL_PATH"
logger -t "$LOG_TAG" "[INFO] crictl successfully updated to $COMPONENT_VERSION_CLEAN."
rm -rf "$TMP_DIR"
else
logger -t "$LOG_TAG" "[INFO] crictl is already up to date. Skipping installation."
fi
EOF
Permission setup
chmod +x /etc/default/crictl/download-script.sh
Download service
cat <<EOF > /usr/lib/systemd/system/crictl-install.service
[Unit]
Description=Install and update in-cloud component crictl
After=network.target
Wants=network-online.target
[Service]
Type=oneshot
EnvironmentFile=-/etc/default/crictl/download.env
ExecStart=/bin/bash -c "/etc/default/crictl/download-script.sh"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
Download
systemctl enable crictl-install.service
systemctl start crictl-install.service
Environment variables
- path: /etc/default/crictl/download.env
owner: root:root
permissions: '0644'
content: |
COMPONENT_VERSION="v1.30.0"
REPOSITORY="https://github.com/kubernetes-sigs/cri-tools/releases/download"
Download instructions/Permission setup
- path: /etc/default/crictl/download-script.sh
owner: root:root
permissions: '0755'
content: |
#!/bin/bash
set -Eeuo pipefail
COMPONENT_VERSION="${COMPONENT_VERSION:-v1.30.0}"
REPOSITORY="${REPOSITORY:-https://github.com/kubernetes-sigs/cri-tools/releases/download}"
PATH_BIN="${REPOSITORY}/${COMPONENT_VERSION}/crictl-${COMPONENT_VERSION}-linux-amd64.tar.gz"
PATH_SHA256="${REPOSITORY}/${COMPONENT_VERSION}/crictl-${COMPONENT_VERSION}-linux-amd64.tar.gz.sha256"
INSTALL_PATH="/usr/local/bin/crictl"
LOG_TAG="crictl-installer"
TMP_DIR="$(mktemp -d)"
logger -t "$LOG_TAG" "[INFO] Checking current crictl version..."
CURRENT_VERSION=$($INSTALL_PATH --version 2>/dev/null | awk '{print $3}' | sed 's/v//') || CURRENT_VERSION="none"
COMPONENT_VERSION_CLEAN=$(echo "$COMPONENT_VERSION" | sed 's/^v//')
logger -t "$LOG_TAG" "[INFO] Current: $CURRENT_VERSION, Target: $COMPONENT_VERSION_CLEAN"
if [[ "$CURRENT_VERSION" != "$COMPONENT_VERSION_CLEAN" ]]; then
logger -t "$LOG_TAG" "[INFO] Download URL: $PATH_BIN"
logger -t "$LOG_TAG" "[INFO] Updating crictl to version $COMPONENT_VERSION_CLEAN..."
cd "$TMP_DIR"
logger -t "$LOG_TAG" "[INFO] Working directory: $PWD"
logger -t "$LOG_TAG" "[INFO] Downloading crictl..."
curl -fsSL -o crictl.tar.gz "$PATH_BIN" || { logger -t "$LOG_TAG" "[ERROR] Failed to download crictl"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Downloading checksum file..."
curl -fsSL -o crictl.sha256sum "$PATH_SHA256" || { logger -t "$LOG_TAG" "[ERROR] Failed to download checksum file"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Verifying checksum..."
awk '{print $1" crictl.tar.gz"}' crictl.sha256sum | sha256sum -c - || { logger -t "$LOG_TAG" "[ERROR] Checksum verification failed!"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Extracting files..."
tar -C "$TMP_DIR" -xvf crictl.tar.gz
logger -t "$LOG_TAG" "[INFO] Installing crictl..."
install -m 755 "$TMP_DIR/crictl" "$INSTALL_PATH"
logger -t "$LOG_TAG" "[INFO] crictl successfully updated to $COMPONENT_VERSION_CLEAN."
rm -rf "$TMP_DIR"
else
logger -t "$LOG_TAG" "[INFO] crictl is already up to date. Skipping installation."
fi
Download service
- path: /usr/lib/systemd/system/crictl-install.service
owner: root:root
permissions: '0644'
content: |
[Unit]
Description=Install and update in-cloud component crictl
After=network.target
Wants=network-online.target
[Service]
Type=oneshot
EnvironmentFile=-/etc/default/crictl/download.env
ExecStart=/bin/bash -c "/etc/default/crictl/download-script.sh"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Download
- systemctl enable crictl-install.service
- systemctl start crictl-install.service
Installation verification
Installation verification
journalctl -t crictl-installer
Command output
***** [INFO] Checking current crictl version...
***** [INFO] Current: none, Target: v1.30.0
***** [INFO] Download URL: https://*******
***** [INFO] Updating crictl to version v1.30.0...
***** [INFO] Working directory: /tmp/tmp.*****
***** [INFO] Downloading crictl...
***** [INFO] Downloading checksum file...
***** [INFO] Verifying checksum...
***** [INFO] Installing crictl...
***** [INFO] crictl successfully updated to v1.30.0.
ls -la /usr/local/bin/ | grep 'crictl$'
Command output
-rwxr-xr-x 1 1001 127 58376628 Apr 18 2024 crictl
crictl --version
Command output
crictl version v1.30.0
Installation of kubeadm
● Optional
Installation of kubeadm
● Optional
Component installation steps
- Creating working directories.
- Environment variables.
- Download instructions.
- Permission setup.
- Download service.
- Starting the download service.
- Bash
- Cloud-init
Creating working directories
mkdir -p /etc/default/kubeadm
Environment variables
cat <<EOF > /etc/default/kubeadm/download.env
COMPONENT_VERSION="v1.30.4"
REPOSITORY="https://dl.k8s.io"
EOF
Download instructions
cat <<"EOF" > /etc/default/kubeadm/download-script.sh
#!/bin/bash
set -Eeuo pipefail
COMPONENT_VERSION="${COMPONENT_VERSION:-v1.30.4}"
REPOSITORY="${REPOSITORY:-https://dl.k8s.io}"
PATH_BIN="${REPOSITORY}/${COMPONENT_VERSION}/bin/linux/amd64/kubeadm"
PATH_SHA256="${REPOSITORY}/${COMPONENT_VERSION}/bin/linux/amd64/kubeadm.sha256"
INSTALL_PATH="/usr/local/bin/kubeadm"
LOG_TAG="kubeadm-installer"
TMP_DIR="$(mktemp -d)"
logger -t "$LOG_TAG" "[INFO] Checking current kubeadm version..."
CURRENT_VERSION=$($INSTALL_PATH version -o json 2>/dev/null | jq -r '.clientVersion.gitVersion' | sed 's/^v//') || CURRENT_VERSION="none"
COMPONENT_VERSION_CLEAN=$(echo "$COMPONENT_VERSION" | sed 's/^v//')
logger -t "$LOG_TAG" "[INFO] Current: $CURRENT_VERSION, Target: $COMPONENT_VERSION_CLEAN"
if [[ "$CURRENT_VERSION" != "$COMPONENT_VERSION_CLEAN" ]]; then
logger -t "$LOG_TAG" "[INFO] Download URL: $PATH_BIN"
logger -t "$LOG_TAG" "[INFO] Updating kubeadm to version $COMPONENT_VERSION_CLEAN..."
cd "$TMP_DIR"
logger -t "$LOG_TAG" "[INFO] Working directory: $PWD"
logger -t "$LOG_TAG" "[INFO] Downloading kubeadm..."
curl -fsSL -o kubeadm "$PATH_BIN" || { logger -t "$LOG_TAG" "[ERROR] Failed to download kubeadm"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Downloading checksum file..."
curl -fsSL -o kubeadm.sha256sum "$PATH_SHA256" || { logger -t "$LOG_TAG" "[ERROR] Failed to download checksum file"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Verifying checksum..."
awk '{print $1" kubeadm"}' kubeadm.sha256sum | sha256sum -c - || { logger -t "$LOG_TAG" "[ERROR] Checksum verification failed!"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Installing kubeadm..."
install -m 755 kubeadm "$INSTALL_PATH"
logger -t "$LOG_TAG" "[INFO] kubeadm successfully updated to $COMPONENT_VERSION_CLEAN."
rm -rf "$TMP_DIR"
else
logger -t "$LOG_TAG" "[INFO] kubeadm is already up to date. Skipping installation."
fi
EOF
Permission setup
chmod +x /etc/default/kubeadm/download-script.sh
Download service
cat <<EOF > /usr/lib/systemd/system/kubeadm-install.service
[Unit]
Description=Install and update kubeadm
After=network.target
Wants=network-online.target
[Service]
Type=oneshot
EnvironmentFile=-/etc/default/kubeadm/download.env
ExecStart=/bin/bash -c "/etc/default/kubeadm/download-script.sh"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
Download
systemctl enable kubeadm-install.service
systemctl start kubeadm-install.service
Environment variables
- path: /etc/default/kubeadm/download.env
owner: root:root
permissions: '0644'
content: |
COMPONENT_VERSION="v1.30.4"
REPOSITORY="https://dl.k8s.io"
Download instructions/Permission setup
- path: /etc/default/kubeadm/download-script.sh
owner: root:root
permissions: '0755'
content: |
#!/bin/bash
set -Eeuo pipefail
COMPONENT_VERSION="${COMPONENT_VERSION:-v1.30.4}"
REPOSITORY="${REPOSITORY:-https://dl.k8s.io}"
PATH_BIN="${REPOSITORY}/${COMPONENT_VERSION}/bin/linux/amd64/kubeadm"
PATH_SHA256="${REPOSITORY}/${COMPONENT_VERSION}/bin/linux/amd64/kubeadm.sha256"
INSTALL_PATH="/usr/local/bin/kubeadm"
LOG_TAG="kubeadm-installer"
TMP_DIR="$(mktemp -d)"
logger -t "$LOG_TAG" "[INFO] Checking current kubeadm version..."
CURRENT_VERSION=$($INSTALL_PATH version -o json 2>/dev/null | jq -r '.clientVersion.gitVersion' | sed 's/^v//') || CURRENT_VERSION="none"
COMPONENT_VERSION_CLEAN=$(echo "$COMPONENT_VERSION" | sed 's/^v//')
logger -t "$LOG_TAG" "[INFO] Current: $CURRENT_VERSION, Target: $COMPONENT_VERSION_CLEAN"
if [[ "$CURRENT_VERSION" != "$COMPONENT_VERSION_CLEAN" ]]; then
logger -t "$LOG_TAG" "[INFO] Download URL: $PATH_BIN"
logger -t "$LOG_TAG" "[INFO] Updating kubeadm to version $COMPONENT_VERSION_CLEAN..."
cd "$TMP_DIR"
logger -t "$LOG_TAG" "[INFO] Working directory: $PWD"
logger -t "$LOG_TAG" "[INFO] Downloading kubeadm..."
curl -fsSL -o kubeadm "$PATH_BIN" || { logger -t "$LOG_TAG" "[ERROR] Failed to download kubeadm"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Downloading checksum file..."
curl -fsSL -o kubeadm.sha256sum "$PATH_SHA256" || { logger -t "$LOG_TAG" "[ERROR] Failed to download checksum file"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Verifying checksum..."
awk '{print $1" kubeadm"}' kubeadm.sha256sum | sha256sum -c - || { logger -t "$LOG_TAG" "[ERROR] Checksum verification failed!"; exit 1; }
logger -t "$LOG_TAG" "[INFO] Installing kubeadm..."
install -m 755 kubeadm "$INSTALL_PATH"
logger -t "$LOG_TAG" "[INFO] kubeadm successfully updated to $COMPONENT_VERSION_CLEAN."
rm -rf "$TMP_DIR"
else
logger -t "$LOG_TAG" "[INFO] kubeadm is already up to date. Skipping installation."
fi
Download service
- path: /usr/lib/systemd/system/kubeadm-install.service
owner: root:root
permissions: '0644'
content: |
[Unit]
Description=Install and update kubeadm
After=network.target
Wants=network-online.target
[Service]
Type=oneshot
EnvironmentFile=-/etc/default/kubeadm/download.env
ExecStart=/bin/bash -c "/etc/default/kubeadm/download-script.sh"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Download
- systemctl enable kubeadm-install.service
- systemctl start kubeadm-install.service
Installation verification
Installation verification
journalctl -t kubeadm-installer
Command output
***** [INFO] Checking current kubeadm version...
***** [INFO] Current: none, Target: v1.30.4
***** [INFO] Download URL: https://*******
***** [INFO] Updating kubeadm to version v1.30.4...
***** [INFO] Working directory: /tmp/tmp.*****
***** [INFO] Downloading kubeadm...
***** [INFO] Downloading checksum file...
***** [INFO] Verifying checksum...
***** [INFO] Extracting files...
***** [INFO] Installing binaries...
***** [INFO] kubeadm successfully updated to v1.30.4.
ls -la /usr/local/bin/ | grep 'kubeadm$'
Command output
-rwxr-xr-x 1 root root 50253976 Aug 14 2024 kubeadm
kubeadm version
Command output
kubeadm version: &version.Info{Major:"1", Minor:"30", GitVersion:"v1.30.4", GitCommit:"a51b3b711150f57ffc1f526a640ec058514ed596", GitTreeState:"clean", BuildDate:"2024-08-14T19:02:46Z", GoVersion:"go1.22.5", Compiler:"gc", Platform:"linux/amd64"}