如何通过 Kubernetes 提取 docker 托管在 Google Container Registry 上的图像(kubernetes 包含在 docker 桌面版中)
How to pull docker images hosted on Google Container Registry via Kubernetes (kubernetes included on docker for desktop)
我无法从 GCR 中提取图像(由我的部署提取)
我收到 ImagePullBackOff 错误。
我已经按照本教程一步步学习了。
https://container-solutions.com/using-google-container-registry-with-kubernetes/
但是它似乎对我不起作用。我什至尝试在创建服务帐户密钥时使用 Storage Admin 角色,但它仍然没有用。
在描述 pod 时,出现此错误:
Warning Failed 14s (x2 over 30s) kubelet, docker-for-desktop Failed to pull image "gcr.io/<project-name>/<image-name>": rpc error: code = Unknown desc = Error response from daemon: Get https://gcr.io/v2/<project-name>/<image-name>/manifests/latest: unknown: Unable to parse json key.
Warning Failed 14s (x2 over 30s) kubelet, docker-for-desktop Error: ErrImagePull
Normal BackOff 2s (x3 over 29s) kubelet, docker-for-desktop Back-off pulling image "gcr.io/<project-name>/<image-name>"
Warning Failed 2s (x3 over 29s) kubelet, docker-for-desktop Error: ImagePullBackOff
访问https://gcr.io/v2/项目名称/图像名称/manifests/latest时 url,我得到了这个:
// 20181124152036
// https://gcr.io/v2/project-name/image-name/manifests/latest
{
"errors": Array[1][
{
"code": "UNAUTHORIZED",
"message": "You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication"
}
]
}
广告连播定义:
apiVersion: apps/v1
kind: Deployment
metadata:
name: microservice-1-deployment
spec:
replicas: 3
selector:
matchLabels:
app: microservice-1
template:
metadata:
labels:
app: microservice-1
spec:
containers:
- name: microservice-1
image: gcr.io/project-name/image-name
ports:
- containerPort: 80
备注:
我的部署在 docker 集线器上托管时能够拉取图像,问题仅在 GCR 中拉取图像时出现。
环境
- Windows 10
- Docker 版本 2.0.0.0-win78 (28905)
- Kubernetes 1.10.3(包含在 docker 桌面版中)
我希望你能帮助我,
提前致谢
查看错误消息,您提供的 json 文件似乎有问题 unable to parse json file
原因是您的 json 文件中有中断 (newline
),因此无法秘密识别。
请查看此处并尝试其中一种解决方案。您始终可以选择列出的其他身份验证方法 here
希望这对您有所帮助。
OK 找到了罪魁祸首,它与 Powershell 和 Command Prompt.
有关
我改用 Git Bash 并遵循本教程中的相同说明
https://container-solutions.com/using-google-container-registry-with-kubernetes/
成功了!
罪魁祸首可能是在 Powershell and/or 命令提示符[=29= 上创建 imagePullSecrets 时发生的].读取 json 文件时可能出了点问题,与编码或其他问题有关。
希望这对任何人都有帮助。
我无法从 GCR 中提取图像(由我的部署提取) 我收到 ImagePullBackOff 错误。
我已经按照本教程一步步学习了。
https://container-solutions.com/using-google-container-registry-with-kubernetes/
但是它似乎对我不起作用。我什至尝试在创建服务帐户密钥时使用 Storage Admin 角色,但它仍然没有用。
在描述 pod 时,出现此错误:
Warning Failed 14s (x2 over 30s) kubelet, docker-for-desktop Failed to pull image "gcr.io/<project-name>/<image-name>": rpc error: code = Unknown desc = Error response from daemon: Get https://gcr.io/v2/<project-name>/<image-name>/manifests/latest: unknown: Unable to parse json key.
Warning Failed 14s (x2 over 30s) kubelet, docker-for-desktop Error: ErrImagePull
Normal BackOff 2s (x3 over 29s) kubelet, docker-for-desktop Back-off pulling image "gcr.io/<project-name>/<image-name>"
Warning Failed 2s (x3 over 29s) kubelet, docker-for-desktop Error: ImagePullBackOff
访问https://gcr.io/v2/项目名称/图像名称/manifests/latest时 url,我得到了这个:
// 20181124152036
// https://gcr.io/v2/project-name/image-name/manifests/latest
{
"errors": Array[1][
{
"code": "UNAUTHORIZED",
"message": "You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication"
}
]
}
广告连播定义:
apiVersion: apps/v1
kind: Deployment
metadata:
name: microservice-1-deployment
spec:
replicas: 3
selector:
matchLabels:
app: microservice-1
template:
metadata:
labels:
app: microservice-1
spec:
containers:
- name: microservice-1
image: gcr.io/project-name/image-name
ports:
- containerPort: 80
备注:
我的部署在 docker 集线器上托管时能够拉取图像,问题仅在 GCR 中拉取图像时出现。
环境
- Windows 10
- Docker 版本 2.0.0.0-win78 (28905)
- Kubernetes 1.10.3(包含在 docker 桌面版中)
我希望你能帮助我,
提前致谢
查看错误消息,您提供的 json 文件似乎有问题 unable to parse json file
原因是您的 json 文件中有中断 (newline
),因此无法秘密识别。
请查看此处并尝试其中一种解决方案。您始终可以选择列出的其他身份验证方法 here
希望这对您有所帮助。
OK 找到了罪魁祸首,它与 Powershell 和 Command Prompt.
有关我改用 Git Bash 并遵循本教程中的相同说明
https://container-solutions.com/using-google-container-registry-with-kubernetes/
成功了!
罪魁祸首可能是在 Powershell and/or 命令提示符[=29= 上创建 imagePullSecrets 时发生的].读取 json 文件时可能出了点问题,与编码或其他问题有关。
希望这对任何人都有帮助。