下载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
嗯,妙哉!