在使用 Vagrant 创建虚拟机时出现 GPG 错误,公钥不可用:NO_PUBKEY B53DC80D13EDEF05。

9

我正在尝试使用Vagrant和相关的安装shell脚本(如下所列)安装K8s集群VM节点。

我尝试了一些类似问题中的建议,但它们并没有帮助我的情况。我在Windows 11上使用VirtualBox版本6.1.40。

common.sh脚本用于为每个VM准备常见的软件包安装,但是出现了以下错误。

controller24: W: GPG error: https://packages.cloud.google.com/apt kubernetes-xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05
        controller24: E: The repository 'https://apt.kubernetes.io kubernetes-xenial InRelease' is not signed.

common.sh文件如下。

#!/bin/bash
#
# Common setup for all servers (Control Plane and Nodes)

set -euxo pipefail

# Variable Declaration

KUBERNETES_VERSION="1.24.10-00"

# DNS Setting
sudo mkdir /etc/systemd/resolved.conf.d/
cat <<EOF | sudo tee /etc/systemd/resolved.conf.d/dns_servers.conf
[Resolve]
DNS=8.8.8.8 1.1.1.1
EOF

sudo systemctl restart systemd-resolved

# disable swap
sudo swapoff -a

# keeps the swaf off during reboot
(crontab -l 2>/dev/null; echo "@reboot /sbin/swapoff -a") | crontab - || true
sudo apt-get update -y
# Install CRI-O Runtime

OS="xUbuntu_22.10"

VERSION="1.24"

# Create the .conf file to load the modules at bootup
cat <<EOF | sudo tee /etc/modules-load.d/crio.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# Set up required sysctl params, these persist across reboots.
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

sudo sysctl --system

cat <<EOF | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /
EOF
cat <<EOF | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list
deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /
EOF

curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -

sudo apt-get update
sudo apt-get install cri-o cri-o-runc -y

sudo systemctl daemon-reload
sudo systemctl enable crio --now

echo "CRI runtime installed susccessfully"

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl  -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/etc/apt/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="$KUBERNETES_VERSION" kubectl="$KUBERNETES_VERSION" kubeadm="$KUBERNETES_VERSION"
sudo apt-get update -y
sudo apt-get install -y jq

local_ip="$(ip --json a s | jq -r '.[] | if .ifname == "eth1" then .addr_info[] | if .family == "inet" then .local else empty end else empty end')"
cat > /etc/default/kubelet << EOF
KUBELET_EXTRA_ARGS=--node-ip=$local_ip
EOF

详细的vagrant日志在这里:

    controller24: + sudo apt-get update
    controller24: Hit:1 http://us.archive.ubuntu.com/ubuntu jammy InRelease
    controller24: Hit:2 http://us.archive.ubuntu.com/ubuntu jammy-updates InRelease
    controller24: Hit:3 http://us.archive.ubuntu.com/ubuntu jammy-backports InRelease
    controller24: Hit:4 http://us.archive.ubuntu.com/ubuntu jammy-security InRelease
    controller24: Get:5 http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.24/xUbuntu_20.04  InRelease [1,632 B]
    controller24: Get:6 https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04  InRelease [1,642 B]
    controller24: Fetched 3,274 B in 1s (3,874 B/s)
    controller24: Reading package lists...
    controller24: + echo 'deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main'
    controller24: + sudo tee /etc/apt/sources.list.d/kubernetes.list
    controller24: deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main
    controller24: + sudo apt-get update -y
    controller24: Hit:1 http://us.archive.ubuntu.com/ubuntu jammy InRelease
    controller24: Hit:2 http://us.archive.ubuntu.com/ubuntu jammy-updates InRelease
    controller24: Get:4 http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.24/xUbuntu_20.04  InRelease [1,632 B]
    controller24: Hit:5 http://us.archive.ubuntu.com/ubuntu jammy-backports InRelease
    controller24: Hit:6 http://us.archive.ubuntu.com/ubuntu jammy-security InRelease
    controller24: Get:3 https://packages.cloud.google.com/apt kubernetes-xenial InRelease [8,993 B]
    controller24: Err:3 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
    controller24:   The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05
    controller24: Get:7 https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04  InRelease [1,642 B]
    controller24: Reading package lists...
    controller24: W: GPG error: https://packages.cloud.google.com/apt kubernetes-xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05
    controller24: E: The repository 'https://apt.kubernetes.io kubernetes-xenial InRelease' is not signed.
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.
5个回答

8

1
新URL应该如何使用? - Kamafeather
1
如何使用新的URL?不幸的是,我对GPG密钥的魔力以及它们在Linux中的设置并不熟悉。 - pijemcolu

5
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://dl.k8s.io/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

你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

2
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg| gpg -o /usr/share/keyrings/kubernetes-archive-keyring.gpg --dearmor

apt-get update


0

谢谢!我也遇到了同样的问题。昨晚尝试了一下,非常成功。今天早上再试,又出现了问题。:(

更新:这个方法可行。

curl -L https://dl.k8s.io/apt/doc/apt-key.gpg | gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.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

0
如果其他方法都让你失望了(就像今天让我失望的一样,包括Ubuntu的snap),那就试试这些由竞争对手云供应商维护的永久链接。
##############################################################################
# Amazon EKS maintains a list of perma-links to various kubectl versions here:
# https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html
##############################################################################

cd /tmp && curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.4/2023-08-16/bin/linux/amd64/kubectl

chmod +x /tmp/kubectl

sudo mv /tmp/kubectl /usr/local/bin/

kubectl version --short

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接