2 min read

下载k8s指定版本RPM包

下载k8s指定版本RPM包

背景

脚本实现

#!/usr/bin/env bash

URLX="http://prod-cdn.packages.k8s.io/repositories/isv:/kubernetes:/core:/stable:/v$1"
PRIMARY=$(curl -sS $URLX/rpm/repodata/repomd.xml|grep primary.xml.gz| awk -F\" {'print $2'})
CURRENT_DIR=$(realpath .)

if [[ ! -z $1 ]]
then
    mkdir ${CURRENT_DIR}/$1/amd64 -p && cd ${CURRENT_DIR}/$1/amd64
    curl -sS $URLX/rpm/$PRIMARY  | gunzip - |  grep x86_64.rpm | awk -F\" {'print $(NF-1)'} | awk -F / {'print $2'}|\
     sort -t '-' -k 1,1 -k 2Vr | awk -F '-' '!seen[$1]++' |\
     awk -v x1="$1" {'print "http://prod-cdn.packages.k8s.io/repositories/isv:/kubernetes:/core:/stable:/v"x1"/rpm/x86_64/"$1'}| \
     xargs -I{} curl -LO {}

    mkdir ${CURRENT_DIR}/$1/arm64 -p && cd ${CURRENT_DIR}/$1/arm64
    curl -sS $URLX/rpm/$PRIMARY  | gunzip - |  grep aarch64.rpm | awk -F\" {'print $(NF-1)'} | awk -F / {'print $2'}|\
     sort -t '-' -k 1,1 -k 2Vr | awk -F '-' '!seen[$1]++' |\
     awk -v x1="$1" {'print "http://prod-cdn.packages.k8s.io/repositories/isv:/kubernetes:/core:/stable:/v"x1"/rpm/aarch/"$1'}| \
     xargs -I{} curl -LO {}

    tree ${CURRENT_DIR}/$1
else
    echo "Please provide the kubernetes version number, For example: [ 1.30 ]"
    exit 67
fi
注意:传入的版本号只能是大版本号,同时自动下载最新的版本。

使用效果

# bash dl_rpm.sh 1.32
...<省略若干行>...
/root/k8s_rpm/1.32
|-- amd64
|   |-- cri-tools-1.32.0-150500.1.1.x86_64.rpm
|   |-- kubeadm-1.32.4-150500.1.1.x86_64.rpm
|   |-- kubectl-1.32.4-150500.1.1.x86_64.rpm
|   |-- kubelet-1.32.4-150500.1.1.x86_64.rpm
|   `-- kubernetes-cni-1.6.0-150500.1.1.x86_64.rpm
`-- arm64
    |-- cri-tools-1.32.0-150500.1.1.aarch64.rpm
    |-- kubeadm-1.32.4-150500.1.1.aarch64.rpm
    |-- kubectl-1.32.4-150500.1.1.aarch64.rpm
    |-- kubelet-1.32.4-150500.1.1.aarch64.rpm
    `-- kubernetes-cni-1.6.0-150500.1.1.aarch64.rpm

2 directories, 10 files

嗯,妙哉!

参考引用