密钥添加成功后出现 NO_PUBKEY 错误

密钥添加成功后出现 NO_PUBKEY 错误

当我运行sudo apt-get update出现以下错误:

Err:8 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

无论我怎么尝试,都无法消除这个错误。

我尝试解决该问题的方法:

1. 手动添加密钥

我已经在 Google 上搜索了如何解决该错误,似乎每个人都建议通过以下方式添加丢失的公钥apt-key

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv B53DC80D13EDEF05
Executing: /tmp/apt-key-gpghome.MRlBtkNXHX/gpg.1.sh --keyserver keyserver.ubuntu.com --recv B53DC80D13EDEF05
gpg: key B53DC80D13EDEF05: 1 duplicate signature removed
gpg: key B53DC80D13EDEF05: "Rapture Automatic Signing Key (cloud-rapture-signing-key-2022-03-07-08_01_01.pub)" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1

执行上述命令后,NO_PUBKEY错误仍然存​​在。

2. 删除存储库

/etc/apt/sources.list我查看了和中的存储库列表/etc/apt/sources.list.d,发现/etc/apt/sources.list.d/google-cloud-sdk.list

deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main

我已通过删除了该文件sudo rm -rf /etc/apt/sources.list.d/google-cloud-sdk.list,但仍然出现相同的错误。

答案1

就我而言,什么都没有起作用,直到我在下载更新的密钥时简单地使用 --dearmor 来制作 gpg 二进制而不是 ASCII。

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 此后正常运行,没有错误

答案2

  1. 添加 Kubernetes 签名密钥。

    在每个服务器节点上,使用 curl 命令下载密钥,然后将其存储在安全的地方(默认为/usr/share/keyrings):

    curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo tee /usr/share/keyrings/kubernetes.gpg
    
  2. 添加软件存储库。

    Kubernetes 不包含在默认存储库中。要将 Kubernetes 存储库添加到列表中,请在每个节点上输入以下内容:

    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/kubernetes.gpg] http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list
    
  3. Kubernetes 安装工具

    Kubeadm(Kubernetes Admin)是一种帮助初始化集群的工具。它使用来自社区的最佳实践来快速完成设置。Kubelet 是一个工作包,它在每个节点上运行并启动容器。该工具可让您通过命令行访问集群。

    执行以下命令(在每个服务器节点上)。

    • 使用以下命令安装 Kubernetes 工具:

       sudo apt install kubeadm kubelet kubectl
      

      将 Kubernetes 工具设置为暂停:

       sudo apt-mark hold kubeadm kubelet kubectl
      
    • 使用以下命令验证安装kubeadm version

来源:如何在 Ubuntu 20.04 上安装 Kubernetes

答案3

这为我解决了这个问题。

请注意文件名末尾的波浪号 cloud.google.gpg~(不是拼写错误)

sudo rm -fr /usr/share/keyrings/cloud.google.gpg~
sudo curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg| sudo gpg -o /usr/share/keyrings/cloud.google.gpg --dearmor

相关内容