当我运行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
添加 Kubernetes 签名密钥。
在每个服务器节点上,使用 curl 命令下载密钥,然后将其存储在安全的地方(默认为
/usr/share/keyrings
):curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo tee /usr/share/keyrings/kubernetes.gpg
添加软件存储库。
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
Kubernetes 安装工具
Kubeadm(Kubernetes Admin)是一种帮助初始化集群的工具。它使用来自社区的最佳实践来快速完成设置。Kubelet 是一个工作包,它在每个节点上运行并启动容器。该工具可让您通过命令行访问集群。
执行以下命令(在每个服务器节点上)。
使用以下命令安装 Kubernetes 工具:
sudo apt install kubeadm kubelet kubectl
将 Kubernetes 工具设置为暂停:
sudo apt-mark hold kubeadm kubelet kubectl
使用以下命令验证安装
kubeadm version
答案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