使用 k3s 时 imagePullSecrets 不起作用
imagePullSecrets not working when using k3s
我正在使用 k3s 来测试我的 k8s 配置。遗憾的是,imagePullSecrets
似乎无法正常工作。
我在 minikube 中测试了相同的配置,它工作正常。
示例:
我用以下方法创建秘密:
kubectl create secret generic myreg --from-file=.dockerconfigjson=$HOME/.docker/config.json
这是一个 daemonset 示例:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: foo
namespace: default
labels:
app: foo
spec:
selector:
matchLabels:
name: foo
template:
metadata:
labels:
name: foo
spec:
imagePullSecrets:
- name: myreg
containers:
- name: foo
image: whatever/foo:latest
状态保持为 ErrImagePull
和 运行 describe
在 pod 上它说:
Normal BackOff 2s kubelet, localhost Back-off pulling image "whatever/foo:latest"
Warning Failed 2s kubelet, localhost Error: ImagePullBackOff
为什么不起作用?
终于在问题Document image preloading中找到了答案。
imagePullSecrets 未在 k3s 中实现,但有一个未记录的功能,您可以手动拉取图像以使其工作。
执行此操作(以 root 用户身份):
# docker pull whatever/foo:latest
# docker save whatever/foo:latest -o /var/lib/rancher/k3s/agent/images/foo-latest.tgz
然后镜像会"downloaded"安装到k3s中
记得下载后重启k3s
我正在使用 k3s 来测试我的 k8s 配置。遗憾的是,imagePullSecrets
似乎无法正常工作。
我在 minikube 中测试了相同的配置,它工作正常。
示例:
我用以下方法创建秘密:
kubectl create secret generic myreg --from-file=.dockerconfigjson=$HOME/.docker/config.json
这是一个 daemonset 示例:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: foo
namespace: default
labels:
app: foo
spec:
selector:
matchLabels:
name: foo
template:
metadata:
labels:
name: foo
spec:
imagePullSecrets:
- name: myreg
containers:
- name: foo
image: whatever/foo:latest
状态保持为 ErrImagePull
和 运行 describe
在 pod 上它说:
Normal BackOff 2s kubelet, localhost Back-off pulling image "whatever/foo:latest"
Warning Failed 2s kubelet, localhost Error: ImagePullBackOff
为什么不起作用?
终于在问题Document image preloading中找到了答案。
imagePullSecrets 未在 k3s 中实现,但有一个未记录的功能,您可以手动拉取图像以使其工作。
执行此操作(以 root 用户身份):
# docker pull whatever/foo:latest
# docker save whatever/foo:latest -o /var/lib/rancher/k3s/agent/images/foo-latest.tgz
然后镜像会"downloaded"安装到k3s中
记得下载后重启k3s